@type-map-for/bigquery
v0.1.1
Published
Compile-time TypeScript → BigQuery field mapping
Downloads
297
Readme
@type-map-for/bigquery
Generate BigQuery table schemas from TypeScript interfaces at compile time.
Installation
npm install @type-map-for/bigqueryUsage
import type { BigQueryFieldMap } from '@type-map-for/bigquery';
interface User {
id: number;
name: string;
email?: string;
tags: string[];
metadata: { source: string };
}
type UserSchema = BigQueryFieldMap<User>;
// Result: Array<{
// { name: 'id'; type: 'INT64'; mode: 'REQUIRED'; description?: string }
// { name: 'name'; type: 'STRING'; mode: 'REQUIRED'; description?: string }
// { name: 'email'; type: 'STRING'; mode: 'NULLABLE'; description?: string }
// { name: 'tags'; type: 'STRING'; mode: 'REPEATED'; description?: string }
// { name: 'metadata'; type: 'JSON'; mode: 'REQUIRED'; description?: string }
// }>
// Use with schema validation
const userSchema: UserSchema = [
{ name: 'id', type: 'INT64', mode: 'REQUIRED' },
{ name: 'name', type: 'STRING', mode: 'REQUIRED' },
{ name: 'email', type: 'STRING', mode: 'NULLABLE' },
{ name: 'tags', type: 'STRING', mode: 'REPEATED' },
{ name: 'metadata', type: 'JSON', mode: 'REQUIRED' }
] as const satisfies UserSchema;Type Mapping
| TypeScript | BigQuery |
|------------|----------|
| string | STRING |
| number | INT64 |
| boolean | BOOL |
| T[] | mode: 'REPEATED' |
| T \| undefined | mode: 'NULLABLE' |
| object | JSON |
Types
BigQueryField<T, K>- Schema field for propertyKof typeTBigQueryFieldMap<T>- Complete schema array for interfaceT
Contributing
Issues and pull requests welcome at github.com/nathancanine/type-map-for.
License
MIT
