@danielfgray/pg-sourcerer 0.1.0
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/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +104 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +133 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +47 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +129 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/generate.d.ts +75 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +183 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +4 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +229 -0
- package/dist/init.js.map +1 -0
- package/dist/ir/index.d.ts +7 -0
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +7 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/relation-graph.d.ts +113 -0
- package/dist/ir/relation-graph.d.ts.map +1 -0
- package/dist/ir/relation-graph.js +232 -0
- package/dist/ir/relation-graph.js.map +1 -0
- package/dist/ir/semantic-ir.d.ts +448 -0
- package/dist/ir/semantic-ir.d.ts.map +1 -0
- package/dist/ir/semantic-ir.js +138 -0
- package/dist/ir/semantic-ir.js.map +1 -0
- package/dist/ir/smart-tags.d.ts +24 -0
- package/dist/ir/smart-tags.d.ts.map +1 -0
- package/dist/ir/smart-tags.js +30 -0
- package/dist/ir/smart-tags.js.map +1 -0
- package/dist/lib/conjure.d.ts +431 -0
- package/dist/lib/conjure.d.ts.map +1 -0
- package/dist/lib/conjure.js +697 -0
- package/dist/lib/conjure.js.map +1 -0
- package/dist/lib/field-utils.d.ts +61 -0
- package/dist/lib/field-utils.d.ts.map +1 -0
- package/dist/lib/field-utils.js +132 -0
- package/dist/lib/field-utils.js.map +1 -0
- package/dist/lib/hex.d.ts +117 -0
- package/dist/lib/hex.d.ts.map +1 -0
- package/dist/lib/hex.js +185 -0
- package/dist/lib/hex.js.map +1 -0
- package/dist/plugins/arktype.d.ts +11 -0
- package/dist/plugins/arktype.d.ts.map +1 -0
- package/dist/plugins/arktype.js +207 -0
- package/dist/plugins/arktype.js.map +1 -0
- package/dist/plugins/effect-model.d.ts +10 -0
- package/dist/plugins/effect-model.d.ts.map +1 -0
- package/dist/plugins/effect-model.js +261 -0
- package/dist/plugins/effect-model.js.map +1 -0
- package/dist/plugins/kysely-queries.d.ts +7 -0
- package/dist/plugins/kysely-queries.d.ts.map +1 -0
- package/dist/plugins/kysely-queries.js +380 -0
- package/dist/plugins/kysely-queries.js.map +1 -0
- package/dist/plugins/sql-queries.d.ts +6 -0
- package/dist/plugins/sql-queries.d.ts.map +1 -0
- package/dist/plugins/sql-queries.js +249 -0
- package/dist/plugins/sql-queries.js.map +1 -0
- package/dist/plugins/types.d.ts +18 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +263 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/zod.d.ts +11 -0
- package/dist/plugins/zod.d.ts.map +1 -0
- package/dist/plugins/zod.js +180 -0
- package/dist/plugins/zod.js.map +1 -0
- package/dist/services/artifact-store.d.ts +55 -0
- package/dist/services/artifact-store.d.ts.map +1 -0
- package/dist/services/artifact-store.js +51 -0
- package/dist/services/artifact-store.js.map +1 -0
- package/dist/services/config-loader.d.ts +45 -0
- package/dist/services/config-loader.d.ts.map +1 -0
- package/dist/services/config-loader.js +113 -0
- package/dist/services/config-loader.js.map +1 -0
- package/dist/services/emissions.d.ts +89 -0
- package/dist/services/emissions.d.ts.map +1 -0
- package/dist/services/emissions.js +194 -0
- package/dist/services/emissions.js.map +1 -0
- package/dist/services/file-builder.d.ts +81 -0
- package/dist/services/file-builder.d.ts.map +1 -0
- package/dist/services/file-builder.js +112 -0
- package/dist/services/file-builder.js.map +1 -0
- package/dist/services/file-writer.d.ts +57 -0
- package/dist/services/file-writer.d.ts.map +1 -0
- package/dist/services/file-writer.js +76 -0
- package/dist/services/file-writer.js.map +1 -0
- package/dist/services/inflection.d.ts +227 -0
- package/dist/services/inflection.d.ts.map +1 -0
- package/dist/services/inflection.js +350 -0
- package/dist/services/inflection.js.map +1 -0
- package/dist/services/introspection.d.ts +46 -0
- package/dist/services/introspection.d.ts.map +1 -0
- package/dist/services/introspection.js +99 -0
- package/dist/services/introspection.js.map +1 -0
- package/dist/services/ir-builder.d.ts +46 -0
- package/dist/services/ir-builder.d.ts.map +1 -0
- package/dist/services/ir-builder.js +923 -0
- package/dist/services/ir-builder.js.map +1 -0
- package/dist/services/ir.d.ts +28 -0
- package/dist/services/ir.d.ts.map +1 -0
- package/dist/services/ir.js +25 -0
- package/dist/services/ir.js.map +1 -0
- package/dist/services/pg-types.d.ts +197 -0
- package/dist/services/pg-types.d.ts.map +1 -0
- package/dist/services/pg-types.js +274 -0
- package/dist/services/pg-types.js.map +1 -0
- package/dist/services/plugin-meta.d.ts +33 -0
- package/dist/services/plugin-meta.d.ts.map +1 -0
- package/dist/services/plugin-meta.js +24 -0
- package/dist/services/plugin-meta.js.map +1 -0
- package/dist/services/plugin-runner.d.ts +52 -0
- package/dist/services/plugin-runner.d.ts.map +1 -0
- package/dist/services/plugin-runner.js +182 -0
- package/dist/services/plugin-runner.js.map +1 -0
- package/dist/services/plugin.d.ts +286 -0
- package/dist/services/plugin.d.ts.map +1 -0
- package/dist/services/plugin.js +132 -0
- package/dist/services/plugin.js.map +1 -0
- package/dist/services/smart-tags-parser.d.ts +37 -0
- package/dist/services/smart-tags-parser.d.ts.map +1 -0
- package/dist/services/smart-tags-parser.js +79 -0
- package/dist/services/smart-tags-parser.js.map +1 -0
- package/dist/services/symbols.d.ts +85 -0
- package/dist/services/symbols.d.ts.map +1 -0
- package/dist/services/symbols.js +128 -0
- package/dist/services/symbols.js.map +1 -0
- package/dist/services/type-hints.d.ts +62 -0
- package/dist/services/type-hints.d.ts.map +1 -0
- package/dist/services/type-hints.js +117 -0
- package/dist/services/type-hints.js.map +1 -0
- package/dist/testing.d.ts +77 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +84 -0
- package/dist/testing.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArkType Plugin - Generate ArkType schemas for entities
|
|
3
|
+
*
|
|
4
|
+
* Generates ArkType type definitions for Row, Insert, Update, and Patch shapes,
|
|
5
|
+
* with inferred TypeScript types.
|
|
6
|
+
*
|
|
7
|
+
* ArkType uses string-based syntax for type definitions:
|
|
8
|
+
* - `type({ foo: "string", bar: "number?" })` for objects
|
|
9
|
+
* - `"string | null"` for nullable
|
|
10
|
+
* - `"string[]"` for arrays
|
|
11
|
+
* - Union syntax `"'a' | 'b' | 'c'"` for enums
|
|
12
|
+
*/
|
|
13
|
+
import { Schema as S } from "effect";
|
|
14
|
+
import { definePlugin } from "../services/plugin.js";
|
|
15
|
+
import { TsType } from "../services/pg-types.js";
|
|
16
|
+
import { getTableEntities, getEnumEntities } from "../ir/semantic-ir.js";
|
|
17
|
+
import { conjure } from "../lib/conjure.js";
|
|
18
|
+
import { isUuidType, isDateType, resolveFieldType } from "../lib/field-utils.js";
|
|
19
|
+
const { ts, exp, obj } = conjure;
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Configuration
|
|
22
|
+
// ============================================================================
|
|
23
|
+
const ArkTypePluginConfig = S.Struct({
|
|
24
|
+
/** Output directory relative to main outputDir */
|
|
25
|
+
outputDir: S.String,
|
|
26
|
+
/** Export inferred types alongside schemas */
|
|
27
|
+
exportTypes: S.Boolean,
|
|
28
|
+
});
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// ArkType Schema Builders (pure functions)
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Build ArkType string-based type expression.
|
|
34
|
+
*
|
|
35
|
+
* ArkType uses string syntax for most types:
|
|
36
|
+
* - `"string"`, `"number"`, `"boolean"`, `"bigint"`
|
|
37
|
+
* - `"Date"` for Date objects
|
|
38
|
+
* - `"string?"` for optional
|
|
39
|
+
* - `"string | null"` for nullable
|
|
40
|
+
* - `"string[]"` for arrays
|
|
41
|
+
*/
|
|
42
|
+
const buildArkTypeString = (baseType, modifiers) => {
|
|
43
|
+
let result = baseType;
|
|
44
|
+
// Apply array first (before nullable/optional)
|
|
45
|
+
if (modifiers.isArray) {
|
|
46
|
+
result = `${result}[]`;
|
|
47
|
+
}
|
|
48
|
+
// For nullable, use union with null
|
|
49
|
+
if (modifiers.nullable) {
|
|
50
|
+
result = `${result} | null`;
|
|
51
|
+
}
|
|
52
|
+
// Optional uses ? suffix in object keys, not in the type string itself
|
|
53
|
+
// We handle this at the property level
|
|
54
|
+
return result;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Build ArkType enum as union of string literals: `"'a' | 'b' | 'c'"`
|
|
58
|
+
*/
|
|
59
|
+
const buildArkTypeEnumString = (values) => values.map((v) => `'${v}'`).join(" | ");
|
|
60
|
+
/**
|
|
61
|
+
* Map TypeScript type to ArkType string type
|
|
62
|
+
*/
|
|
63
|
+
const tsTypeToArkTypeString = (tsType) => {
|
|
64
|
+
switch (tsType) {
|
|
65
|
+
case TsType.String:
|
|
66
|
+
return "string";
|
|
67
|
+
case TsType.Number:
|
|
68
|
+
return "number";
|
|
69
|
+
case TsType.Boolean:
|
|
70
|
+
return "boolean";
|
|
71
|
+
case TsType.BigInt:
|
|
72
|
+
return "bigint";
|
|
73
|
+
case TsType.Date:
|
|
74
|
+
return "Date";
|
|
75
|
+
case TsType.Buffer:
|
|
76
|
+
case TsType.Unknown:
|
|
77
|
+
default:
|
|
78
|
+
return "unknown";
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Resolve a field to its ArkType type string
|
|
83
|
+
*/
|
|
84
|
+
const resolveFieldArkTypeString = (field, ctx) => {
|
|
85
|
+
const resolved = resolveFieldType(field, ctx.enums, ctx.extensions);
|
|
86
|
+
// Enum → union of string literals
|
|
87
|
+
if (resolved.enumDef) {
|
|
88
|
+
const baseType = buildArkTypeEnumString(resolved.enumDef.values);
|
|
89
|
+
// Wrap enum in parens if adding modifiers
|
|
90
|
+
const needsParens = field.nullable || field.isArray;
|
|
91
|
+
const wrapped = needsParens ? `(${baseType})` : baseType;
|
|
92
|
+
return buildArkTypeString(wrapped, {
|
|
93
|
+
nullable: field.nullable,
|
|
94
|
+
isArray: field.isArray,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// UUID → string.uuid
|
|
98
|
+
if (isUuidType(field)) {
|
|
99
|
+
return buildArkTypeString("string.uuid", {
|
|
100
|
+
nullable: field.nullable,
|
|
101
|
+
isArray: field.isArray,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Date/timestamp → Date
|
|
105
|
+
if (isDateType(field)) {
|
|
106
|
+
return buildArkTypeString("Date", {
|
|
107
|
+
nullable: field.nullable,
|
|
108
|
+
isArray: field.isArray,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Standard type mapping
|
|
112
|
+
return buildArkTypeString(tsTypeToArkTypeString(resolved.tsType), {
|
|
113
|
+
nullable: field.nullable,
|
|
114
|
+
isArray: field.isArray,
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Shape → Statement Generation
|
|
119
|
+
// ============================================================================
|
|
120
|
+
/**
|
|
121
|
+
* Build type({ ... }) expression from shape fields
|
|
122
|
+
*
|
|
123
|
+
* ArkType uses string keys for optionality: `"key?": "type"`
|
|
124
|
+
*/
|
|
125
|
+
const buildShapeArkTypeObject = (shape, ctx) => {
|
|
126
|
+
const objBuilder = shape.fields.reduce((builder, field) => {
|
|
127
|
+
const typeString = resolveFieldArkTypeString(field, ctx);
|
|
128
|
+
// Use "key?" syntax for optional fields - must use stringProp for valid JS
|
|
129
|
+
if (field.optional) {
|
|
130
|
+
return builder.stringProp(`${field.name}?`, conjure.str(typeString));
|
|
131
|
+
}
|
|
132
|
+
return builder.prop(field.name, conjure.str(typeString));
|
|
133
|
+
}, obj());
|
|
134
|
+
// Build: type({ ... })
|
|
135
|
+
return conjure.id("type").call([objBuilder.build()]).build();
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Generate schema const + optional inferred type for a shape
|
|
139
|
+
*/
|
|
140
|
+
const generateShapeStatements = (shape, entityName, shapeKind, ctx, exportTypes) => {
|
|
141
|
+
const symbolCtx = { capability: "schemas:arktype", entity: entityName, shape: shapeKind };
|
|
142
|
+
const schemaExpr = buildShapeArkTypeObject(shape, ctx);
|
|
143
|
+
const schemaStatement = exp.const(shape.name, symbolCtx, schemaExpr);
|
|
144
|
+
if (!exportTypes) {
|
|
145
|
+
return [schemaStatement];
|
|
146
|
+
}
|
|
147
|
+
// Generate: export type ShapeName = typeof ShapeName.infer
|
|
148
|
+
// ArkType uses Schema.infer for the inferred type
|
|
149
|
+
const inferType = ts.typeof(`${shape.name}.infer`);
|
|
150
|
+
const typeStatement = exp.type(shape.name, symbolCtx, inferType);
|
|
151
|
+
return [schemaStatement, typeStatement];
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Collect all defined shapes from an entity as [kind, shape] pairs
|
|
155
|
+
*/
|
|
156
|
+
const collectShapes = (entity) => [
|
|
157
|
+
["row", entity.shapes.row],
|
|
158
|
+
["insert", entity.shapes.insert],
|
|
159
|
+
["update", entity.shapes.update],
|
|
160
|
+
].filter((entry) => entry[1] != null);
|
|
161
|
+
/**
|
|
162
|
+
* Generate all statements for an entity's shapes
|
|
163
|
+
*/
|
|
164
|
+
const generateEntityStatements = (entity, ctx, exportTypes) => collectShapes(entity).flatMap(([kind, shape]) => generateShapeStatements(shape, entity.name, kind, ctx, exportTypes));
|
|
165
|
+
// ============================================================================
|
|
166
|
+
// Plugin Definition
|
|
167
|
+
// ============================================================================
|
|
168
|
+
/**
|
|
169
|
+
* ArkType Plugin
|
|
170
|
+
*
|
|
171
|
+
* Generates ArkType schemas for each entity's shapes (base, Insert, Update)
|
|
172
|
+
* with inferred TypeScript types.
|
|
173
|
+
*/
|
|
174
|
+
export const arktypePlugin = definePlugin({
|
|
175
|
+
name: "arktype",
|
|
176
|
+
provides: ["schemas:arktype", "schemas"],
|
|
177
|
+
configSchema: ArkTypePluginConfig,
|
|
178
|
+
inflection: {
|
|
179
|
+
outputFile: (ctx) => `${ctx.entityName}.ts`,
|
|
180
|
+
symbolName: (entityName, artifactKind) => `${entityName}${artifactKind}`,
|
|
181
|
+
},
|
|
182
|
+
run: (ctx, config) => {
|
|
183
|
+
const enumEntities = getEnumEntities(ctx.ir);
|
|
184
|
+
const fieldCtx = { enums: enumEntities, extensions: ctx.ir.extensions };
|
|
185
|
+
getTableEntities(ctx.ir)
|
|
186
|
+
.filter((entity) => entity.tags.omit !== true)
|
|
187
|
+
.forEach((entity) => {
|
|
188
|
+
const statements = generateEntityStatements(entity, fieldCtx, config.exportTypes);
|
|
189
|
+
const entityName = ctx.inflection.entityName(entity.pgClass, entity.tags);
|
|
190
|
+
const fileNameCtx = {
|
|
191
|
+
entityName,
|
|
192
|
+
pgName: entity.pgName,
|
|
193
|
+
schema: entity.schemaName,
|
|
194
|
+
inflection: ctx.inflection,
|
|
195
|
+
entity,
|
|
196
|
+
};
|
|
197
|
+
const fileName = ctx.pluginInflection.outputFile(fileNameCtx);
|
|
198
|
+
const filePath = `${config.outputDir}/${fileName}`;
|
|
199
|
+
ctx
|
|
200
|
+
.file(filePath)
|
|
201
|
+
.import({ kind: "package", names: ["type"], from: "arktype" })
|
|
202
|
+
.ast(conjure.symbolProgram(...statements))
|
|
203
|
+
.emit();
|
|
204
|
+
});
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
//# sourceMappingURL=arktype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arktype.js","sourceRoot":"","sources":["../../src/plugins/arktype.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Model Plugin
|
|
3
|
+
*
|
|
4
|
+
* Generates @effect/sql Model classes for each entity.
|
|
5
|
+
*/
|
|
6
|
+
export declare const effectModelPlugin: import("../index.js").PluginFactory<{
|
|
7
|
+
readonly outputDir: string;
|
|
8
|
+
readonly enumStyle?: "inline" | "separate" | undefined;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=effect-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-model.d.ts","sourceRoot":"","sources":["../../src/plugins/effect-model.ts"],"names":[],"mappings":"AAyTA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;EAmE5B,CAAC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Model Plugin - Generate @effect/sql Model classes for entities
|
|
3
|
+
*
|
|
4
|
+
* Generates Model classes with proper variants based on:
|
|
5
|
+
* - Field properties (isGenerated, isIdentity, hasDefault, nullable)
|
|
6
|
+
* - Smart tags (sensitive, insert override)
|
|
7
|
+
*/
|
|
8
|
+
import { Schema as S } from "effect";
|
|
9
|
+
import { definePlugin } from "../services/plugin.js";
|
|
10
|
+
import { inflect } from "../services/inflection.js";
|
|
11
|
+
import { TsType } from "../services/pg-types.js";
|
|
12
|
+
import { getEnumEntities, getTableEntities } from "../ir/semantic-ir.js";
|
|
13
|
+
import { conjure } from "../lib/conjure.js";
|
|
14
|
+
import { isUuidType, isDateType, isBigIntType, resolveFieldType } from "../lib/field-utils.js";
|
|
15
|
+
const { exp, obj } = conjure;
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Configuration
|
|
18
|
+
// ============================================================================
|
|
19
|
+
const EffectModelPluginConfig = S.Struct({
|
|
20
|
+
/** Output directory relative to main outputDir */
|
|
21
|
+
outputDir: S.String,
|
|
22
|
+
/** How to handle enums: "inline" or "separate" file */
|
|
23
|
+
enumStyle: S.optional(S.Union(S.Literal("inline"), S.Literal("separate"))),
|
|
24
|
+
});
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Smart Tags
|
|
27
|
+
// ============================================================================
|
|
28
|
+
const EffectModelTagsSchema = S.Struct({
|
|
29
|
+
/** Override insert optionality: "optional" or "required" */
|
|
30
|
+
insert: S.optional(S.Union(S.Literal("optional"), S.Literal("required"))),
|
|
31
|
+
/** Mark field as sensitive - excluded from json variants */
|
|
32
|
+
sensitive: S.optional(S.Boolean),
|
|
33
|
+
});
|
|
34
|
+
const getEffectModelTags = (field) => {
|
|
35
|
+
const pluginTags = field.tags["effect:model"];
|
|
36
|
+
if (!pluginTags)
|
|
37
|
+
return {};
|
|
38
|
+
return S.decodeUnknownSync(EffectModelTagsSchema)(pluginTags);
|
|
39
|
+
};
|
|
40
|
+
const isSensitive = (field) => getEffectModelTags(field).sensitive === true;
|
|
41
|
+
const getInsertOverride = (field) => getEffectModelTags(field).insert;
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Schema Builders (pure functions)
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/** Cast n.Expression to ExpressionKind for recast compatibility */
|
|
46
|
+
const toExprKind = (expr) => expr;
|
|
47
|
+
/** Map TypeScript type to Effect Schema property access */
|
|
48
|
+
const tsTypeToEffectSchema = (tsType) => {
|
|
49
|
+
const prop = tsType === TsType.String
|
|
50
|
+
? "String"
|
|
51
|
+
: tsType === TsType.Number
|
|
52
|
+
? "Number"
|
|
53
|
+
: tsType === TsType.Boolean
|
|
54
|
+
? "Boolean"
|
|
55
|
+
: tsType === TsType.BigInt
|
|
56
|
+
? "BigInt"
|
|
57
|
+
: tsType === TsType.Date
|
|
58
|
+
? "Date"
|
|
59
|
+
: "Unknown";
|
|
60
|
+
return conjure.id("S").prop(prop).build();
|
|
61
|
+
};
|
|
62
|
+
/** Build S.Union(S.Literal(...), ...) for an enum */
|
|
63
|
+
const buildEnumSchema = (enumResult) => conjure
|
|
64
|
+
.id("S")
|
|
65
|
+
.method("Union", enumResult.values.map(v => conjure
|
|
66
|
+
.id("S")
|
|
67
|
+
.method("Literal", [conjure.str(v)])
|
|
68
|
+
.build()))
|
|
69
|
+
.build();
|
|
70
|
+
// ============================================================================
|
|
71
|
+
// Schema Wrappers
|
|
72
|
+
// ============================================================================
|
|
73
|
+
const wrapIf = (schema, condition, wrapper) => (condition ? wrapper(schema) : schema);
|
|
74
|
+
const wrapNullable = (schema) => conjure.id("S").method("NullOr", [schema]).build();
|
|
75
|
+
const wrapArray = (schema) => conjure.id("S").method("Array", [schema]).build();
|
|
76
|
+
const wrapGenerated = (schema) => conjure.id("Model").method("Generated", [schema]).build();
|
|
77
|
+
const wrapSensitive = (schema) => conjure.id("Model").method("Sensitive", [schema]).build();
|
|
78
|
+
const wrapFieldOption = (schema) => conjure.id("Model").method("FieldOption", [schema]).build();
|
|
79
|
+
/**
|
|
80
|
+
* Determine if a field should be treated as DB-generated.
|
|
81
|
+
* Includes GENERATED ALWAYS, IDENTITY, and PK fields with defaults.
|
|
82
|
+
*/
|
|
83
|
+
const isDbGenerated = (field, entity) => field.isGenerated ||
|
|
84
|
+
field.isIdentity ||
|
|
85
|
+
(field.hasDefault && entity.primaryKey?.columns.includes(field.columnName) === true);
|
|
86
|
+
/**
|
|
87
|
+
* Check for auto-timestamp patterns (created_at, updated_at)
|
|
88
|
+
*/
|
|
89
|
+
const getAutoTimestamp = (field) => {
|
|
90
|
+
if (!field.hasDefault)
|
|
91
|
+
return undefined;
|
|
92
|
+
const name = field.columnName.toLowerCase();
|
|
93
|
+
if (name === "created_at" || name === "createdat")
|
|
94
|
+
return "insert";
|
|
95
|
+
if (name === "updated_at" || name === "updatedat")
|
|
96
|
+
return "update";
|
|
97
|
+
return undefined;
|
|
98
|
+
};
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Field → Schema Expression
|
|
101
|
+
// ============================================================================
|
|
102
|
+
/**
|
|
103
|
+
* Build the base Effect Schema type for a field
|
|
104
|
+
*/
|
|
105
|
+
const buildBaseSchemaType = (field, ctx) => {
|
|
106
|
+
const resolved = resolveFieldType(field, ctx.enums, ctx.extensions);
|
|
107
|
+
if (resolved.enumDef)
|
|
108
|
+
return buildEnumSchema(resolved.enumDef);
|
|
109
|
+
if (isUuidType(field))
|
|
110
|
+
return conjure.id("S").prop("UUID").build();
|
|
111
|
+
if (isDateType(field))
|
|
112
|
+
return conjure.id("S").prop("Date").build();
|
|
113
|
+
if (isBigIntType(field))
|
|
114
|
+
return conjure.id("S").prop("BigInt").build();
|
|
115
|
+
return tsTypeToEffectSchema(resolved.tsType);
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Build the complete field schema expression with all wrappers applied
|
|
119
|
+
*/
|
|
120
|
+
const buildFieldSchema = (field, ctx) => {
|
|
121
|
+
// Check for auto-timestamp patterns first (returns early with special type)
|
|
122
|
+
const autoTs = getAutoTimestamp(field);
|
|
123
|
+
if (autoTs === "insert")
|
|
124
|
+
return conjure.id("Model").prop("DateTimeInsertFromDate").build();
|
|
125
|
+
if (autoTs === "update")
|
|
126
|
+
return conjure.id("Model").prop("DateTimeUpdateFromDate").build();
|
|
127
|
+
// Build base type with array/nullable wrappers
|
|
128
|
+
let schema = buildBaseSchemaType(field, ctx);
|
|
129
|
+
schema = wrapIf(schema, field.isArray, wrapArray);
|
|
130
|
+
schema = wrapIf(schema, field.nullable, wrapNullable);
|
|
131
|
+
schema = wrapIf(schema, isSensitive(field), wrapSensitive);
|
|
132
|
+
// Determine generated/optional status
|
|
133
|
+
const insertOverride = getInsertOverride(field);
|
|
134
|
+
const shouldBeGenerated = insertOverride === "required"
|
|
135
|
+
? field.isGenerated || field.isIdentity
|
|
136
|
+
: isDbGenerated(field, ctx.entity);
|
|
137
|
+
if (shouldBeGenerated) {
|
|
138
|
+
schema = wrapGenerated(schema);
|
|
139
|
+
}
|
|
140
|
+
else if (insertOverride === "optional") {
|
|
141
|
+
schema = wrapFieldOption(schema);
|
|
142
|
+
}
|
|
143
|
+
return schema;
|
|
144
|
+
};
|
|
145
|
+
// ============================================================================
|
|
146
|
+
// Entity → Model Class
|
|
147
|
+
// ============================================================================
|
|
148
|
+
/**
|
|
149
|
+
* Build Model.Class<ClassName>("table_name")({ ...fields })
|
|
150
|
+
*/
|
|
151
|
+
const buildModelClass = (entity, className, ctx) => {
|
|
152
|
+
// Build fields object from row shape
|
|
153
|
+
const fieldsObj = entity.shapes.row.fields.reduce((builder, field) => builder.prop(field.name, buildFieldSchema(field, ctx)), obj());
|
|
154
|
+
// Build: Model.Class<ClassName>("table_name")
|
|
155
|
+
const modelClassRef = conjure.b.memberExpression(conjure.b.identifier("Model"), conjure.b.identifier("Class"));
|
|
156
|
+
const modelClassWithType = conjure.b.callExpression(modelClassRef, [
|
|
157
|
+
conjure.str(entity.name),
|
|
158
|
+
]);
|
|
159
|
+
// Add type parameters: Model.Class<ClassName>
|
|
160
|
+
// Use typeParameters for TypeScript (not typeArguments which is for Flow)
|
|
161
|
+
modelClassWithType.typeParameters =
|
|
162
|
+
conjure.b.tsTypeParameterInstantiation([
|
|
163
|
+
conjure.b.tsTypeReference(conjure.b.identifier(className)),
|
|
164
|
+
]);
|
|
165
|
+
// Call with fields: Model.Class<ClassName>("table_name")({ ... })
|
|
166
|
+
return conjure.b.callExpression(modelClassWithType, [fieldsObj.build()]);
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Generate: export class ClassName extends Model.Class<ClassName>("table")({ ... }) {}
|
|
170
|
+
*/
|
|
171
|
+
const generateModelStatement = (entity, className, ctx) => {
|
|
172
|
+
const modelExpr = buildModelClass(entity, className, ctx);
|
|
173
|
+
const classDecl = conjure.b.classDeclaration(conjure.b.identifier(className), conjure.b.classBody([]), toExprKind(modelExpr));
|
|
174
|
+
return {
|
|
175
|
+
_tag: "SymbolStatement",
|
|
176
|
+
node: conjure.b.exportNamedDeclaration(classDecl, []),
|
|
177
|
+
symbol: {
|
|
178
|
+
name: className,
|
|
179
|
+
capability: "models:effect",
|
|
180
|
+
entity: entity.name,
|
|
181
|
+
isType: false,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Generate enum schema: export const EnumName = S.Union(S.Literal(...), ...)
|
|
187
|
+
*/
|
|
188
|
+
const generateEnumStatement = (enumEntity) => exp.const(enumEntity.name, { capability: "models:effect", entity: enumEntity.name }, buildEnumSchema({
|
|
189
|
+
name: enumEntity.name,
|
|
190
|
+
pgName: enumEntity.pgName,
|
|
191
|
+
values: enumEntity.values,
|
|
192
|
+
}));
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// File Emission Helpers
|
|
195
|
+
// ============================================================================
|
|
196
|
+
const buildFileNameContext = (entityName, pgName, schemaName, inflection, entity) => ({
|
|
197
|
+
entityName,
|
|
198
|
+
pgName,
|
|
199
|
+
schema: schemaName,
|
|
200
|
+
inflection,
|
|
201
|
+
entity,
|
|
202
|
+
});
|
|
203
|
+
// ============================================================================
|
|
204
|
+
// Plugin Definition
|
|
205
|
+
// ============================================================================
|
|
206
|
+
/**
|
|
207
|
+
* Effect Model Plugin
|
|
208
|
+
*
|
|
209
|
+
* Generates @effect/sql Model classes for each entity.
|
|
210
|
+
*/
|
|
211
|
+
export const effectModelPlugin = definePlugin({
|
|
212
|
+
name: "effect-model",
|
|
213
|
+
provides: ["models:effect", "models"],
|
|
214
|
+
configSchema: EffectModelPluginConfig,
|
|
215
|
+
inflection: {
|
|
216
|
+
outputFile: ctx => `${ctx.entityName}.ts`,
|
|
217
|
+
symbolName: (entityName, _artifactKind) => entityName,
|
|
218
|
+
},
|
|
219
|
+
inflectionDefaults: {
|
|
220
|
+
entityName: inflect.pascalCase,
|
|
221
|
+
enumName: inflect.pascalCase,
|
|
222
|
+
},
|
|
223
|
+
run: (ctx, config) => {
|
|
224
|
+
const enumEntities = getEnumEntities(ctx.ir);
|
|
225
|
+
const enumStyle = config.enumStyle ?? "inline";
|
|
226
|
+
// Generate separate enum files if configured
|
|
227
|
+
if (enumStyle === "separate") {
|
|
228
|
+
enumEntities
|
|
229
|
+
.filter(e => e.tags.omit !== true)
|
|
230
|
+
.forEach(enumEntity => {
|
|
231
|
+
const fileNameCtx = buildFileNameContext(enumEntity.name, enumEntity.pgName, enumEntity.schemaName, ctx.inflection, enumEntity);
|
|
232
|
+
const filePath = `${config.outputDir}/${ctx.pluginInflection.outputFile(fileNameCtx)}`;
|
|
233
|
+
ctx
|
|
234
|
+
.file(filePath)
|
|
235
|
+
.import({ kind: "package", names: ["Schema as S"], from: "effect" })
|
|
236
|
+
.ast(conjure.symbolProgram(generateEnumStatement(enumEntity)))
|
|
237
|
+
.emit();
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
// Generate table/view entity model files
|
|
241
|
+
getTableEntities(ctx.ir)
|
|
242
|
+
.filter(entity => entity.tags.omit !== true)
|
|
243
|
+
.forEach(entity => {
|
|
244
|
+
const className = ctx.inflection.entityName(entity.pgClass, entity.tags);
|
|
245
|
+
const fieldCtx = {
|
|
246
|
+
entity,
|
|
247
|
+
enums: enumEntities,
|
|
248
|
+
extensions: ctx.ir.extensions,
|
|
249
|
+
};
|
|
250
|
+
const fileNameCtx = buildFileNameContext(className, entity.pgName, entity.schemaName, ctx.inflection, entity);
|
|
251
|
+
const filePath = `${config.outputDir}/${ctx.pluginInflection.outputFile(fileNameCtx)}`;
|
|
252
|
+
ctx
|
|
253
|
+
.file(filePath)
|
|
254
|
+
.import({ kind: "package", names: ["Model"], from: "@effect/sql" })
|
|
255
|
+
.import({ kind: "package", names: ["Schema as S"], from: "effect" })
|
|
256
|
+
.ast(conjure.symbolProgram(generateModelStatement(entity, className, fieldCtx)))
|
|
257
|
+
.emit();
|
|
258
|
+
});
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
//# sourceMappingURL=effect-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-model.js","sourceRoot":"","sources":["../../src/plugins/effect-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const kyselyQueriesPlugin: import("../index.js").PluginFactory<{
|
|
2
|
+
readonly outputDir: string;
|
|
3
|
+
readonly header?: string | undefined;
|
|
4
|
+
readonly dbTypesPath?: string | undefined;
|
|
5
|
+
readonly executeQueries?: boolean | undefined;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=kysely-queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kysely-queries.d.ts","sourceRoot":"","sources":["../../src/plugins/kysely-queries.ts"],"names":[],"mappings":"AAmeA,eAAO,MAAM,mBAAmB;;;;;EA0E9B,CAAA"}
|