@lakeql/schema-generator 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # @lakeql/schema-generator
2
+
3
+ Generates GraphQL schema models, JSON Schemas, and Hive table definitions from parsed column structures.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @lakeql/schema-generator
9
+ ```
10
+
11
+ ## Documentation
12
+
13
+ See the [LakeQL Documentation](https://lakeql.dev/docs) for detailed usage instructions.
14
+
15
+ ## License
16
+
17
+ [Apache-2.0](../../LICENSE)
@@ -42,29 +42,52 @@ type FieldDefinitionResponse = {
42
42
  subModel: JSONSchema7;
43
43
  filter: boolean;
44
44
  };
45
+ /**
46
+ * Parameters for generateModel.
47
+ */
48
+ interface GenerateModelProps {
49
+ /** The JSON Schema source definition to generate a model from. */
50
+ source: JSONSchema7;
51
+ /** The name of the model being generated. */
52
+ name: string;
53
+ /** The parent model name for nested models. */
54
+ parent?: string;
55
+ /** Accumulated model definitions. */
56
+ models: Record<string, ModelResponse>;
57
+ /** Whether this is the root model definition. */
58
+ isRoot: boolean;
59
+ }
60
+ /**
61
+ * Generates a GraphQL model definition from JSON Schema.
62
+ */
45
63
  declare const generateModel: ({
46
64
  source,
47
65
  name,
48
66
  parent,
49
67
  models,
50
68
  isRoot
51
- }: {
52
- source: JSONSchema7;
53
- name: string;
69
+ }: GenerateModelProps) => Record<string, ModelResponse>;
70
+ /**
71
+ * Parameters for generateFieldDefinition.
72
+ */
73
+ interface GenerateFieldDefinitionProps {
74
+ /** The sanitized field name. */
75
+ fieldName: string;
76
+ /** The original raw field name from the schema. */
77
+ rawFieldName: string;
78
+ /** The JSON Schema definition for this field. */
79
+ fieldDefinition: JSONSchema7;
80
+ /** The parent model name for generating nested type references. */
54
81
  parent?: string;
55
- models: Record<string, ModelResponse>;
56
- isRoot: boolean;
57
- }) => Record<string, ModelResponse>;
82
+ }
83
+ /**
84
+ * Generates field definitions for a single model property.
85
+ */
58
86
  declare const generateFieldDefinition: ({
59
87
  fieldName,
60
88
  rawFieldName,
61
89
  fieldDefinition,
62
90
  parent
63
- }: {
64
- fieldName: string;
65
- rawFieldName: string;
66
- fieldDefinition: JSONSchema7;
67
- parent?: string;
68
- }) => FieldDefinitionResponse;
91
+ }: GenerateFieldDefinitionProps) => FieldDefinitionResponse;
69
92
  //#endregion
70
- export { CurrentModelResponse, FieldDefinitionResponse, FilterFieldInput, ModelResponse, generateFieldDefinition, generateModel };
93
+ export { CurrentModelResponse, FieldDefinitionResponse, FilterFieldInput, GenerateFieldDefinitionProps, GenerateModelProps, ModelResponse, generateFieldDefinition, generateModel };
@@ -13,28 +13,56 @@ type ParquetField = Record<string, string | [string, ParquetField] | [string, {
13
13
  element: ParquetField;
14
14
  };
15
15
  }]>;
16
+ /**
17
+ * Parameters for generateSqlSchema.
18
+ */
19
+ interface GenerateSqlSchemaProps {
20
+ /** The JSON Schema property definitions to generate SQL columns from. */
21
+ definition: Record<string, SchemaDefinition>;
22
+ }
23
+ /**
24
+ * Generates SQL column definitions from parsed columns.
25
+ */
16
26
  declare function generateSqlSchema({
17
27
  definition
18
- }: {
19
- definition: Record<string, SchemaDefinition>;
20
- }): SqlFieldDefinition[];
28
+ }: GenerateSqlSchemaProps): SqlFieldDefinition[];
29
+ /**
30
+ * Parameters for parquetTransformer.
31
+ */
32
+ interface ParquetTransformerProps {
33
+ /** The JSON Schema property definitions to transform for Parquet format. */
34
+ definition: Record<string, JSONSchema7>;
35
+ }
36
+ /**
37
+ * Transforms column definitions for Parquet format.
38
+ */
21
39
  declare function parquetTransformer({
22
40
  definition
23
- }: {
24
- definition: Record<string, JSONSchema7>;
25
- }): ParquetField;
41
+ }: ParquetTransformerProps): ParquetField;
42
+ /**
43
+ * Parameters for generateCreateTableStatement.
44
+ */
45
+ interface GenerateCreateTableStatementProps {
46
+ /** The Hive schema name. */
47
+ schema: string;
48
+ /** The table name. */
49
+ tableName: string;
50
+ /** The S3 bucket name for external storage. */
51
+ bucketName: string;
52
+ /** The path within the S3 bucket. */
53
+ bucketPath: string;
54
+ /** The JSON Schema property definitions for table columns. */
55
+ definition: Record<string, SchemaDefinition>;
56
+ }
57
+ /**
58
+ * Generates a full CREATE TABLE DDL statement.
59
+ */
26
60
  declare function generateCreateTableStatement({
27
61
  schema,
28
62
  tableName,
29
63
  bucketName,
30
64
  bucketPath,
31
65
  definition
32
- }: {
33
- schema: string;
34
- tableName: string;
35
- bucketName: string;
36
- bucketPath: string;
37
- definition: Record<string, SchemaDefinition>;
38
- }): string;
66
+ }: GenerateCreateTableStatementProps): string;
39
67
  //#endregion
40
- export { generateCreateTableStatement, generateSqlSchema, parquetTransformer };
68
+ export { GenerateCreateTableStatementProps, GenerateSqlSchemaProps, ParquetTransformerProps, generateCreateTableStatement, generateSqlSchema, parquetTransformer };
package/package.json CHANGED
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "name": "@lakeql/schema-generator",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
+ "description": "Generates GraphQL schemas, Hive table definitions, and JSON schemas from Trino metadata",
5
+ "keywords": [
6
+ "codegen",
7
+ "graphql",
8
+ "hive",
9
+ "json-schema",
10
+ "lakeql",
11
+ "schema"
12
+ ],
4
13
  "homepage": "https://lakeql.dev",
5
14
  "license": "Apache-2.0",
6
15
  "author": {
@@ -41,7 +50,7 @@
41
50
  "kysely": "0.29.2",
42
51
  "lodash-es": "4.18.1",
43
52
  "magic-regexp": "0.11.0",
44
- "@lakeql/helpers": "0.1.0"
53
+ "@lakeql/helpers": "0.1.2"
45
54
  },
46
55
  "devDependencies": {
47
56
  "@types/json-schema": "7.0.15",