0.1.0 • Published 7 months ago

@clickizen/data v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

@clickizen/data

NOTE: This is still in development.

This module contains all definitions and utility functions associated with data types. It aims to provide a complete implementation of all ClickHouse data types along with pure functions to work with these values, and an abstraction layer which makes it easy to pass sanitized queries between the server and client.

Submodules

  • database - abstraction layer for managing tables, data, and resources in a ClickHouse database

ROADMAP

  • Work with nested data declarations
  • Implement the main functions from ClickHouse

SPRINT

  • port VM execution environment for loading schemas into Database instance

Scripts

Provide a similar runtime environment to the table/column decorators for running scripts. This would allow the UI interface and CLI application to both be able to handle longer-running data ingestion processes.

  • script runtime environment that uses decorators
  • script writes progress and errors to a ClickHouse table
@script('download')
class PPP_Scripts {
    
    @script('loans')
    async loans(
        @dir('data') dir: string,
        @version() version: string) {
        
    }
}

import fecParse from 'fec-parser'

class FEC_Scripts {

    @task('download')
    async downloadFilings(
        @param('UInt8') year: number, 
        @param('UInt8') month: number,
        @param('UInt8') date: number) {
        // automatically creates a ClickHouse row with the 
        // stream to fecParse()
    }
}

Browser notes

The react packages consistently uses import type when referencing this module, to avoid pulling implementations into the client bundle.

Data Types

Browser usage

Transforms

Parse string to native value

The stringParser mapping contains every

  • string parser - (value: string) => native

  • value parser - (value: any) => native

  • validator

Decorators

The decorator submodule adds two global functions table and attr. These schema definitions can be automatically generated from a reference data source using the czdata command line tool from the main Clickizen repository.

import '@clickizen/data/decorator'

@table('my_table')
class MyRow {

	@attr('UInt8')
	id: number

	@attr('String')
	name: string

}
0.1.0

7 months ago

0.0.2

7 months ago

0.0.1

7 months ago