@dbmason/core 0.1.0-alpha.1

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.
Files changed (104) hide show
  1. package/README.md +17 -0
  2. package/dist/DbmasonContext-Baf-v6-B.mjs +31 -0
  3. package/dist/DbmasonContext-Baf-v6-B.mjs.map +1 -0
  4. package/dist/DbmasonContext-Dw0gG7AV.js +2 -0
  5. package/dist/DbmasonContext-Dw0gG7AV.js.map +1 -0
  6. package/dist/ast/nodes.d.ts +192 -0
  7. package/dist/ast/nodes.d.ts.map +1 -0
  8. package/dist/cli/commands/client.d.ts +2 -0
  9. package/dist/cli/commands/client.d.ts.map +1 -0
  10. package/dist/cli/commands/generate.d.ts +2 -0
  11. package/dist/cli/commands/generate.d.ts.map +1 -0
  12. package/dist/cli/commands/init.d.ts +2 -0
  13. package/dist/cli/commands/init.d.ts.map +1 -0
  14. package/dist/cli/commands/migrate.d.ts +2 -0
  15. package/dist/cli/commands/migrate.d.ts.map +1 -0
  16. package/dist/cli/commands/pull.d.ts +2 -0
  17. package/dist/cli/commands/pull.d.ts.map +1 -0
  18. package/dist/cli/index.d.ts +3 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +81 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/index.mjs +929 -0
  23. package/dist/cli/index.mjs.map +1 -0
  24. package/dist/client/generateClientMetadata.d.ts +8 -0
  25. package/dist/client/generateClientMetadata.d.ts.map +1 -0
  26. package/dist/client/standaloneGenerator.d.ts +5 -0
  27. package/dist/client/standaloneGenerator.d.ts.map +1 -0
  28. package/dist/compiler/DbmasonContext.d.ts +74 -0
  29. package/dist/compiler/DbmasonContext.d.ts.map +1 -0
  30. package/dist/compiler/Dialect.d.ts +25 -0
  31. package/dist/compiler/Dialect.d.ts.map +1 -0
  32. package/dist/compiler/Introspector.d.ts +5 -0
  33. package/dist/compiler/Introspector.d.ts.map +1 -0
  34. package/dist/compiler/SnapshotBuilder.d.ts +5 -0
  35. package/dist/compiler/SnapshotBuilder.d.ts.map +1 -0
  36. package/dist/compiler/analyzers/dependency.resolver.d.ts +11 -0
  37. package/dist/compiler/analyzers/dependency.resolver.d.ts.map +1 -0
  38. package/dist/compiler/analyzers/schema.analyzer.d.ts +11 -0
  39. package/dist/compiler/analyzers/schema.analyzer.d.ts.map +1 -0
  40. package/dist/compiler/compile.d.ts +18 -0
  41. package/dist/compiler/compile.d.ts.map +1 -0
  42. package/dist/compiler/diff.d.ts +25 -0
  43. package/dist/compiler/diff.d.ts.map +1 -0
  44. package/dist/definitions/Cron.d.ts +2 -0
  45. package/dist/definitions/Cron.d.ts.map +1 -0
  46. package/dist/definitions/Extension.d.ts +2 -0
  47. package/dist/definitions/Extension.d.ts.map +1 -0
  48. package/dist/definitions/Function.d.ts +2 -0
  49. package/dist/definitions/Function.d.ts.map +1 -0
  50. package/dist/definitions/Grant.d.ts +2 -0
  51. package/dist/definitions/Grant.d.ts.map +1 -0
  52. package/dist/definitions/Module.d.ts +2 -0
  53. package/dist/definitions/Module.d.ts.map +1 -0
  54. package/dist/definitions/Policy.d.ts +2 -0
  55. package/dist/definitions/Policy.d.ts.map +1 -0
  56. package/dist/definitions/Procedure.d.ts +2 -0
  57. package/dist/definitions/Procedure.d.ts.map +1 -0
  58. package/dist/definitions/Role.d.ts +2 -0
  59. package/dist/definitions/Role.d.ts.map +1 -0
  60. package/dist/definitions/Table.d.ts +4 -0
  61. package/dist/definitions/Table.d.ts.map +1 -0
  62. package/dist/definitions/Trigger.d.ts +2 -0
  63. package/dist/definitions/Trigger.d.ts.map +1 -0
  64. package/dist/definitions/Type.d.ts +2 -0
  65. package/dist/definitions/Type.d.ts.map +1 -0
  66. package/dist/definitions/View.d.ts +3 -0
  67. package/dist/definitions/View.d.ts.map +1 -0
  68. package/dist/definitions/collectors/Cron.internal.d.ts +6 -0
  69. package/dist/definitions/collectors/Cron.internal.d.ts.map +1 -0
  70. package/dist/definitions/collectors/Extension.internal.d.ts +9 -0
  71. package/dist/definitions/collectors/Extension.internal.d.ts.map +1 -0
  72. package/dist/definitions/collectors/Function.internal.d.ts +8 -0
  73. package/dist/definitions/collectors/Function.internal.d.ts.map +1 -0
  74. package/dist/definitions/collectors/Grant.internal.d.ts +8 -0
  75. package/dist/definitions/collectors/Grant.internal.d.ts.map +1 -0
  76. package/dist/definitions/collectors/Policy.internal.d.ts +7 -0
  77. package/dist/definitions/collectors/Policy.internal.d.ts.map +1 -0
  78. package/dist/definitions/collectors/Procedure.internal.d.ts +8 -0
  79. package/dist/definitions/collectors/Procedure.internal.d.ts.map +1 -0
  80. package/dist/definitions/collectors/Role.internal.d.ts +8 -0
  81. package/dist/definitions/collectors/Role.internal.d.ts.map +1 -0
  82. package/dist/definitions/collectors/Table.internal.d.ts +23 -0
  83. package/dist/definitions/collectors/Table.internal.d.ts.map +1 -0
  84. package/dist/definitions/collectors/Trigger.internal.d.ts +5 -0
  85. package/dist/definitions/collectors/Trigger.internal.d.ts.map +1 -0
  86. package/dist/definitions/collectors/Type.internal.d.ts +11 -0
  87. package/dist/definitions/collectors/Type.internal.d.ts.map +1 -0
  88. package/dist/definitions/collectors/View.internal.d.ts +10 -0
  89. package/dist/definitions/collectors/View.internal.d.ts.map +1 -0
  90. package/dist/definitions/handles.d.ts +121 -0
  91. package/dist/definitions/handles.d.ts.map +1 -0
  92. package/dist/index.d.ts +21 -0
  93. package/dist/index.d.ts.map +1 -0
  94. package/dist/index.js +2 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/index.mjs +353 -0
  97. package/dist/index.mjs.map +1 -0
  98. package/dist/templates/cli/auth.cli.template.ts +95 -0
  99. package/dist/templates/cli/minimal.cli.template.ts +5 -0
  100. package/dist/types.d.ts +18 -0
  101. package/dist/types.d.ts.map +1 -0
  102. package/package.json +38 -0
  103. package/templates/cli/auth.cli.template.ts +95 -0
  104. package/templates/cli/minimal.cli.template.ts +5 -0
package/dist/index.mjs ADDED
@@ -0,0 +1,353 @@
1
+ import { r as m } from "./DbmasonContext-Baf-v6-B.mjs";
2
+ import { D as K } from "./DbmasonContext-Baf-v6-B.mjs";
3
+ function T(o, ...n) {
4
+ let e = "";
5
+ for (let s = 0; s < o.length; s++)
6
+ e += o[s], s < n.length && (e += String(n[s]));
7
+ return e;
8
+ }
9
+ function N(o) {
10
+ return typeof o == "string" ? o : o.moduleName && o.moduleName !== "global" ? `"${o.moduleName}"."${o.tableName}"` : o.tableName;
11
+ }
12
+ function b(o) {
13
+ return typeof o == "string" ? o : o.roleName;
14
+ }
15
+ function g(o) {
16
+ return typeof o == "string" ? o : o.moduleName && o.moduleName !== "global" ? `"${o.moduleName}"."${o.typeName}"` : o.typeName;
17
+ }
18
+ function $(o) {
19
+ return typeof o == "string" ? o : o.moduleName && o.moduleName !== "global" ? `"${o.moduleName}"."${o.name}"` : o.name;
20
+ }
21
+ function x(o) {
22
+ return typeof o == "string" ? o : o.moduleName && o.moduleName !== "global" ? `"${o.moduleName}"."${o.name}"` : o.name;
23
+ }
24
+ function v(o) {
25
+ return typeof o == "string" ? { column: o } : { table: o.tableName, column: o.columnName, module: o.moduleName };
26
+ }
27
+ function H(o, n) {
28
+ const e = n.split("."), s = e.length > 1 ? e[0] : void 0;
29
+ return {
30
+ kind: "ProcedureHandle",
31
+ name: e.length > 1 ? e[1] : e[0],
32
+ moduleName: s
33
+ };
34
+ }
35
+ function w(o, n) {
36
+ const e = n.split("."), s = e.length > 1 ? e[0] : void 0;
37
+ return {
38
+ kind: "FunctionHandle",
39
+ name: e.length > 1 ? e[1] : e[0],
40
+ moduleName: s
41
+ };
42
+ }
43
+ function D(o, n) {
44
+ const e = n.split("."), s = e.length > 1 ? e[0] : void 0;
45
+ return {
46
+ kind: "TypeHandle",
47
+ typeName: e.length > 1 ? e[1] : e[0],
48
+ moduleName: s,
49
+ ctx: o
50
+ };
51
+ }
52
+ function P(o, n) {
53
+ const e = n.split("."), s = e.length > 1 ? e[0] : void 0;
54
+ return {
55
+ kind: "RoleHandle",
56
+ roleName: e.length > 1 ? e[1] : e[0],
57
+ moduleName: s
58
+ };
59
+ }
60
+ function p(o, n) {
61
+ const e = n.split("."), s = e.length > 1 ? e[0] : void 0, t = e.length > 1 ? e[1] : e[0], l = {
62
+ kind: "TableHandle",
63
+ tableName: t,
64
+ moduleName: s,
65
+ ctx: o
66
+ };
67
+ return new Proxy(l, {
68
+ get(i, c) {
69
+ if (c in i) return i[c];
70
+ if (typeof c == "string")
71
+ return {
72
+ kind: "ColumnHandle",
73
+ tableName: t,
74
+ columnName: c,
75
+ moduleName: s
76
+ };
77
+ }
78
+ });
79
+ }
80
+ const j = p, q = p;
81
+ function C(o, n, e, s) {
82
+ const { ctx: t, moduleName: l } = m(o), i = s(e.columns), c = [];
83
+ if (e.triggers)
84
+ for (const r of e.triggers) {
85
+ let d;
86
+ if (r && typeof r == "object" && "procedure" in r) {
87
+ const f = $(r.procedure);
88
+ d = {
89
+ kind: "Trigger",
90
+ name: r.name,
91
+ table: n,
92
+ when: r.when,
93
+ events: r.events,
94
+ functionName: f,
95
+ forEach: r.forEach,
96
+ condition: r.condition,
97
+ module: l
98
+ };
99
+ } else
100
+ d = { ...r, table: n, module: l };
101
+ c.push(d), t.triggers.set(l ? `${l}.${d.name}` : d.name, d);
102
+ }
103
+ const a = [];
104
+ if (e.policies)
105
+ for (const r of e.policies) {
106
+ let d;
107
+ r && typeof r == "object" && "method" in r && !("kind" in r) ? d = {
108
+ kind: "Policy",
109
+ name: r.name,
110
+ table: n,
111
+ module: l,
112
+ method: r.method,
113
+ sql: r.sql,
114
+ rbac: r.rbac?.map((f) => ({
115
+ roles: f.roles.map((k) => b(k)),
116
+ operations: f.allow
117
+ }))
118
+ } : d = { ...r, table: n, module: l }, a.push(d), t.policies.set(l ? `${l}.${d.name}` : d.name, d);
119
+ }
120
+ const u = {
121
+ kind: "Table",
122
+ name: n,
123
+ columns: i,
124
+ constraints: e.constraints || [],
125
+ indexes: e.indexes || [],
126
+ policies: a,
127
+ triggers: c,
128
+ migration: e.migration,
129
+ options: e.options,
130
+ module: l
131
+ };
132
+ t.tables.set(l ? `${l}.${n}` : n, u);
133
+ const y = {
134
+ kind: "TableHandle",
135
+ tableName: n,
136
+ ctx: t,
137
+ moduleName: l
138
+ };
139
+ for (const r of Object.keys(i))
140
+ y[r] = {
141
+ kind: "ColumnHandle",
142
+ tableName: n,
143
+ columnName: r,
144
+ moduleName: l
145
+ };
146
+ return y;
147
+ }
148
+ function E(o, n, e) {
149
+ const { ctx: s, moduleName: t } = m(o), l = {
150
+ kind: "View",
151
+ name: n,
152
+ query: e,
153
+ module: t
154
+ };
155
+ s.views.set(t ? `${t}.${n}` : n, l);
156
+ }
157
+ function F(o, n, e) {
158
+ const { ctx: s, moduleName: t } = m(o), l = {
159
+ kind: "MaterializedView",
160
+ name: n,
161
+ query: e,
162
+ module: t
163
+ };
164
+ s.materializedViews.set(t ? `${t}.${n}` : n, l);
165
+ }
166
+ function V(o, n, e) {
167
+ const { ctx: s, moduleName: t } = m(o);
168
+ let l = "void";
169
+ e.returns && (typeof e.returns == "string" ? l = e.returns : e.returns.kind === "TableHandle" ? l = N(e.returns) : e.returns.kind === "TypeHandle" && (l = g(e.returns)));
170
+ const i = {};
171
+ if (e.args)
172
+ for (const [a, u] of Object.entries(e.args))
173
+ i[a] = g(u);
174
+ const c = {
175
+ kind: "Procedure",
176
+ name: n,
177
+ module: t,
178
+ args: i,
179
+ returns: l,
180
+ language: e.language || "plpgsql",
181
+ body: e.body
182
+ };
183
+ return s.procedures.set(t ? `${t}.${n}` : n, c), {
184
+ kind: "ProcedureHandle",
185
+ name: n,
186
+ moduleName: t
187
+ };
188
+ }
189
+ function R(o, n, e) {
190
+ const { ctx: s, moduleName: t } = m(o);
191
+ let l = "void";
192
+ e.returns && (typeof e.returns == "string" ? l = e.returns : e.returns.kind === "TableHandle" ? l = N(e.returns) : e.returns.kind === "TypeHandle" && (l = g(e.returns)));
193
+ const i = {};
194
+ if (e.args)
195
+ for (const [a, u] of Object.entries(e.args))
196
+ i[a] = g(u);
197
+ const c = {
198
+ kind: "Function",
199
+ name: n,
200
+ module: t,
201
+ args: i,
202
+ returns: l,
203
+ language: e.language || "plpgsql",
204
+ body: e.body
205
+ };
206
+ return s.functions.set(t ? `${t}.${n}` : n, c), {
207
+ kind: "FunctionHandle",
208
+ name: n,
209
+ moduleName: t
210
+ };
211
+ }
212
+ function _(o, n, e, s) {
213
+ const { ctx: t, moduleName: l } = m(o), i = s.procedure ? $(s.procedure) : void 0, c = {
214
+ kind: "Trigger",
215
+ name: e,
216
+ table: n,
217
+ when: s.when,
218
+ events: s.events,
219
+ functionName: i,
220
+ // TODO: Make optional in type if body is present
221
+ forEach: s.forEach,
222
+ condition: s.condition,
223
+ body: s.body,
224
+ module: l
225
+ };
226
+ t.triggers.set(l ? `${l}.${e}` : e, c);
227
+ const a = l ? `${l}.${n}` : n, u = t.tables.get(a);
228
+ u && (u.triggers || (u.triggers = []), u.triggers.push(c));
229
+ }
230
+ function z(o, n, e) {
231
+ const { ctx: s, moduleName: t } = m(o), l = e.table ? N(e.table) : "", i = e.rbac?.map((a) => ({
232
+ roles: a.roles.map((u) => b(u)),
233
+ operations: a.allow
234
+ })), c = {
235
+ kind: "Policy",
236
+ name: n,
237
+ table: l,
238
+ module: t,
239
+ method: e.method,
240
+ sql: e.sql,
241
+ rbac: i
242
+ };
243
+ return s.policies.set(t ? `${t}.${n}` : n, c), c;
244
+ }
245
+ function O(o, n, e) {
246
+ const { ctx: s, moduleName: t } = m(o), l = {
247
+ kind: "Role",
248
+ name: n,
249
+ options: e,
250
+ module: t
251
+ };
252
+ return s.roles.set(t ? `${t}.${n}` : n, l), {
253
+ kind: "RoleHandle",
254
+ roleName: n,
255
+ moduleName: t
256
+ };
257
+ }
258
+ function M(o, n, e, s, t) {
259
+ const l = b(n), i = N(t), c = {
260
+ kind: "Grant",
261
+ name: `grant_${e.join("_")}_on_${i}_to_${l}`,
262
+ privileges: e,
263
+ on: s,
264
+ to: l,
265
+ object: i
266
+ };
267
+ o.grants.set(c.name, c);
268
+ }
269
+ function G(o, n, e, s) {
270
+ const { ctx: t, moduleName: l } = m(o), i = {
271
+ kind: "Cron",
272
+ name: n,
273
+ schedule: e,
274
+ command: s,
275
+ module: l
276
+ };
277
+ t.crons.set(l ? `${l}.${n}` : n, i);
278
+ }
279
+ function S(o, n, e) {
280
+ const { ctx: s, moduleName: t } = m(o), l = {
281
+ kind: "Extension",
282
+ name: n,
283
+ schema: e?.schema,
284
+ version: e?.version,
285
+ module: t
286
+ };
287
+ s.extensions.set(t ? `${t}.${n}` : n, l);
288
+ }
289
+ function A(o, n, e) {
290
+ const { ctx: s, moduleName: t } = m(o), l = {
291
+ kind: "Type",
292
+ name: n,
293
+ type: "enum",
294
+ values: e,
295
+ module: t
296
+ };
297
+ return s.types.set(t ? `${t}.${n}` : n, l), {
298
+ kind: "TypeHandle",
299
+ typeName: n,
300
+ moduleName: t,
301
+ ctx: s
302
+ };
303
+ }
304
+ function B(o, n, e) {
305
+ const { ctx: s, moduleName: t } = m(o), l = {};
306
+ for (const [c, a] of Object.entries(e))
307
+ l[c] = g(a);
308
+ const i = {
309
+ kind: "Type",
310
+ name: n,
311
+ type: "composite",
312
+ fields: l,
313
+ module: t
314
+ };
315
+ return s.types.set(t ? `${t}.${n}` : n, i), {
316
+ kind: "TypeHandle",
317
+ typeName: n,
318
+ moduleName: t,
319
+ ctx: s
320
+ };
321
+ }
322
+ export {
323
+ K as DbmasonContext,
324
+ B as internalDefineCompositeType,
325
+ G as internalDefineCron,
326
+ A as internalDefineEnum,
327
+ S as internalDefineExtension,
328
+ R as internalDefineFunction,
329
+ M as internalDefineGrant,
330
+ F as internalDefineMaterializedView,
331
+ z as internalDefinePolicy,
332
+ V as internalDefineProcedure,
333
+ O as internalDefineRole,
334
+ C as internalDefineTable,
335
+ _ as internalDefineTrigger,
336
+ E as internalDefineView,
337
+ v as resolveColumn,
338
+ x as resolveFunction,
339
+ $ as resolveProcedure,
340
+ b as resolveRole,
341
+ m as resolveScope,
342
+ N as resolveTable,
343
+ g as resolveType,
344
+ T as sql,
345
+ w as useFunction,
346
+ q as useMaterializedView,
347
+ H as useProcedure,
348
+ P as useRole,
349
+ p as useTable,
350
+ D as useType,
351
+ j as useView
352
+ };
353
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/definitions/handles.ts","../src/definitions/collectors/Table.internal.ts","../src/definitions/collectors/View.internal.ts","../src/definitions/collectors/Procedure.internal.ts","../src/definitions/collectors/Function.internal.ts","../src/definitions/collectors/Trigger.internal.ts","../src/definitions/collectors/Policy.internal.ts","../src/definitions/collectors/Role.internal.ts","../src/definitions/collectors/Grant.internal.ts","../src/definitions/collectors/Cron.internal.ts","../src/definitions/collectors/Extension.internal.ts","../src/definitions/collectors/Type.internal.ts"],"sourcesContent":["import { DbmasonScope } from '../compiler/DbmasonContext';\n\n/**\n * A simple identity tagged template literal for SQL syntax highlighting in IDEs.\n */\nexport function sql(strings: TemplateStringsArray, ...values: any[]): string {\n let result = '';\n for (let i = 0; i < strings.length; i++) {\n result += strings[i];\n if (i < values.length) {\n result += String(values[i]);\n }\n }\n return result;\n}\n\nexport type ReferentialAction = 'CASCADE' | 'RESTRICT' | 'SET NULL' | 'SET DEFAULT' | 'NO ACTION';\n\n/**\n * ColumnHandle - Reference to a specific column in a specific table.\n */\nexport interface ColumnHandle {\n kind: 'ColumnHandle';\n tableName: string;\n columnName: string;\n moduleName?: string;\n}\n\n/**\n * TableHandle - Typed proxy for a database table.\n */\nexport interface TableHandle extends DbmasonScope {\n kind: 'TableHandle';\n tableName: string;\n moduleName?: string;\n ctx: any;\n}\n\n/**\n * RoleHandle - Typed proxy for a database role.\n */\nexport interface RoleHandle {\n kind: 'RoleHandle';\n roleName: string;\n moduleName?: string;\n}\n\n/**\n * TypeHandle - Typed proxy for a custom database type.\n */\nexport interface TypeHandle {\n kind: 'TypeHandle';\n typeName: string;\n moduleName?: string;\n ctx: any;\n}\n\n/**\n * ProcedureHandle - Typed proxy for a database procedure.\n */\nexport interface ProcedureHandle {\n kind: 'ProcedureHandle';\n name: string;\n moduleName?: string;\n}\n\n/**\n * FunctionHandle - Typed proxy for a database function.\n */\nexport interface FunctionHandle {\n kind: 'FunctionHandle';\n name: string;\n moduleName?: string;\n}\n\n/**\n * Polydbmason references\n */\nexport type ColumnReference = ColumnHandle | string;\nexport type TableReference = TableHandle | string;\nexport type RoleReference = RoleHandle | string;\nexport type TypeReference = TypeHandle | string;\n\n/**\n * resolveTable - Unwraps a table handle or string into a plain table name.\n */\nexport function resolveTable(ref: TableReference): string {\n if (typeof ref === 'string') return ref;\n return ref.moduleName && ref.moduleName !== 'global' ? `\"${ref.moduleName}\".\"${ref.tableName}\"` : ref.tableName;\n}\n\n/**\n * resolveRole - Unwraps a role handle or string into a plain role name.\n */\nexport function resolveRole(ref: RoleReference): string {\n if (typeof ref === 'string') return ref;\n return ref.roleName;\n}\n\n/**\n * resolveType - Unwraps a type handle or string into a plain type name.\n */\nexport function resolveType(ref: TypeReference): string {\n if (typeof ref === 'string') return ref;\n return ref.moduleName && ref.moduleName !== 'global' ? `\"${ref.moduleName}\".\"${ref.typeName}\"` : ref.typeName;\n}\n\n/**\n * resolveProcedure - Unwraps a procedure handle or string.\n */\nexport function resolveProcedure(ref: ProcedureHandle | string): string {\n if (typeof ref === 'string') return ref;\n return ref.moduleName && ref.moduleName !== 'global' ? `\"${ref.moduleName}\".\"${ref.name}\"` : ref.name;\n}\n\n/**\n * resolveFunction - Unwraps a function handle or string.\n */\nexport function resolveFunction(ref: FunctionHandle | string): string {\n if (typeof ref === 'string') return ref;\n return ref.moduleName && ref.moduleName !== 'global' ? `\"${ref.moduleName}\".\"${ref.name}\"` : ref.name;\n}\n\n/**\n * resolveColumn - Unwraps a column reference into its components.\n */\nexport function resolveColumn(ref: ColumnReference): { table?: string, column: string, module?: string } {\n if (typeof ref === 'string') return { column: ref };\n return { table: ref.tableName, column: ref.columnName, module: (ref as any).moduleName };\n}\n\n/**\n * useProcedure - Resolves a procedure handle from the context by name.\n */\nexport function useProcedure(ctx: any, name: string): ProcedureHandle {\n const parts = name.split('.');\n const moduleName = parts.length > 1 ? parts[0] : undefined;\n const procName = parts.length > 1 ? parts[1] : parts[0];\n\n return {\n kind: 'ProcedureHandle',\n name: procName,\n moduleName\n };\n}\n\n/**\n * useFunction - Resolves a function handle from the context by name.\n */\nexport function useFunction(ctx: any, name: string): FunctionHandle {\n const parts = name.split('.');\n const moduleName = parts.length > 1 ? parts[0] : undefined;\n const procName = parts.length > 1 ? parts[1] : parts[0];\n\n return {\n kind: 'FunctionHandle',\n name: procName,\n moduleName\n };\n}\n\n/**\n * useType - Resolves a type handle from the context by name.\n */\nexport function useType(ctx: any, name: string): TypeHandle {\n const parts = name.split('.');\n const moduleName = parts.length > 1 ? parts[0] : undefined;\n const typeName = parts.length > 1 ? parts[1] : parts[0];\n\n return {\n kind: 'TypeHandle',\n typeName,\n moduleName,\n ctx\n };\n}\n\n/**\n * useRole - Resolves a role handle from the context by name.\n */\nexport function useRole(ctx: any, name: string): RoleHandle {\n const parts = name.split('.');\n const moduleName = parts.length > 1 ? parts[0] : undefined;\n const roleName = parts.length > 1 ? parts[1] : parts[0];\n\n return {\n kind: 'RoleHandle',\n roleName,\n moduleName\n };\n}\n\n/**\n * useTable - Resolves a table handle from the context by name.\n */\nexport function useTable(ctx: any, name: string): TableHandle & Record<string, ColumnHandle> {\n const parts = name.split('.');\n const moduleName = parts.length > 1 ? parts[0] : undefined;\n const tableName = parts.length > 1 ? parts[1] : parts[0];\n\n const handle: any = {\n kind: 'TableHandle',\n tableName,\n moduleName,\n ctx\n };\n\n return new Proxy(handle, {\n get(target, prop) {\n if (prop in target) return target[prop];\n if (typeof prop === 'string') {\n return {\n kind: 'ColumnHandle',\n tableName,\n columnName: prop,\n moduleName\n };\n }\n return undefined;\n }\n });\n}\n\n/**\n * useView - Resolves a view handle from the context by name.\n */\nexport const useView = useTable;\n\n/**\n * useMaterializedView - Resolves a materialized view handle from the context by name.\n */\nexport const useMaterializedView = useTable;\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { \n ColumnHandle, \n TableHandle, \n TableReference, \n resolveTable,\n resolveProcedure,\n resolveRole\n} from '../handles';\n\n\n\n\n/**\n * Common Constraint Helpers\n */\nexport const check = (name: string, definition: string): ConstraintNode => ({\n kind: 'Constraint', name, table: '', type: 'check', definition\n});\nexport const uniqueConstraint = (name: string, definition: string): ConstraintNode => ({\n kind: 'Constraint', name, table: '', type: 'unique', definition\n});\nexport const foreignKey = (name: string, definition: string): ConstraintNode => ({\n kind: 'Constraint', name, table: '', type: 'foreign_key', definition\n});\n\nexport interface TableCollectorInput {\n columns: unknown;\n constraints?: ConstraintNode[];\n indexes?: IndexNode[];\n policies?: unknown[];\n triggers?: unknown[];\n migration?: 'safe' | 'destructive';\n options?: unknown;\n}\n\n/**\n * Internal Table Collector Logic\n */\nexport function internalDefineTable(\n scope: DbmasonContext | DbmasonScope, \n name: string, \n input: TableCollectorInput,\n processColumns: (columns: any) => Record<string, ColumnNode>\n): TableHandle & Record<string, ColumnHandle> {\n const { ctx, moduleName } = resolveScope(scope);\n \n const columns = processColumns(input.columns);\n\n const triggerNodes: TriggerNode[] = [];\n if (input.triggers) {\n for (const t of input.triggers as any[]) {\n let node: TriggerNode;\n if (t && typeof t === 'object' && 'procedure' in t) {\n const procName = resolveProcedure(t.procedure);\n node = {\n kind: 'Trigger',\n name: t.name,\n table: name,\n when: t.when,\n events: t.events,\n functionName: procName,\n forEach: t.forEach,\n condition: t.condition,\n module: moduleName\n };\n } else {\n node = { ...t as TriggerNode, table: name, module: moduleName };\n }\n triggerNodes.push(node);\n ctx.triggers.set(moduleName ? `${moduleName}.${node.name}` : node.name, node);\n }\n }\n\n const policyNodes: PolicyNode[] = [];\n if (input.policies) {\n for (const p of input.policies as any[]) {\n let node: PolicyNode;\n if (p && typeof p === 'object' && 'method' in p && !('kind' in p)) {\n node = {\n kind: 'Policy',\n name: (p as any).name,\n table: name,\n module: moduleName,\n method: p.method as any,\n sql: p.sql,\n rbac: p.rbac?.map((r: any) => ({\n roles: r.roles.map((role: any) => resolveRole(role)),\n operations: r.allow\n }))\n };\n } else {\n node = { ...p as PolicyNode, table: name, module: moduleName };\n }\n policyNodes.push(node);\n ctx.policies.set(moduleName ? `${moduleName}.${node.name}` : node.name, node);\n }\n }\n\n const tableNode: TableNode = {\n kind: 'Table',\n name,\n columns,\n constraints: input.constraints || [],\n indexes: input.indexes || [],\n policies: policyNodes,\n triggers: triggerNodes,\n migration: input.migration,\n options: input.options,\n module: moduleName\n };\n\n ctx.tables.set(moduleName ? `${moduleName}.${name}` : name, tableNode);\n\n const handle: TableHandle & Record<string, ColumnHandle> = {\n kind: 'TableHandle',\n tableName: name,\n ctx,\n moduleName\n } as any;\n\n for (const colName of Object.keys(columns)) {\n handle[colName] = {\n kind: 'ColumnHandle',\n tableName: name,\n columnName: colName,\n moduleName\n };\n }\n\n return handle;\n}\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\n\n\n/**\n * Internal View Collector\n */\nexport function internalDefineView(\n scope: DbmasonContext | DbmasonScope, \n name: string, \n query: string\n): void {\n const { ctx, moduleName } = resolveScope(scope);\n const node: ViewNode = {\n kind: 'View',\n name,\n query,\n module: moduleName\n };\n ctx.views.set(moduleName ? `${moduleName}.${name}` : name, node);\n}\n\n/**\n * Internal Materialized View Collector\n */\nexport function internalDefineMaterializedView(\n scope: DbmasonContext | DbmasonScope, \n name: string, \n query: string\n): void {\n const { ctx, moduleName } = resolveScope(scope);\n const node: MaterializedViewNode = {\n kind: 'MaterializedView',\n name,\n query,\n module: moduleName\n };\n ctx.materializedViews.set(moduleName ? `${moduleName}.${name}` : name, node);\n}\n","import { BaseNode, RoutineInput, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { \n ProcedureHandle, \n TableHandle,\n TypeHandle,\n TypeReference, \n resolveType, \n resolveTable, \n TableReference \n} from '../handles';\n\n/**\n * Internal Procedure Collector\n */\nexport function internalDefineProcedure(\n scope: DbmasonContext | DbmasonScope, \n name: string, \n input: RoutineInput\n): ProcedureHandle {\n const { ctx, moduleName } = resolveScope(scope);\n\n // Resolve return type\n let returns: string = 'void';\n if (input.returns) {\n if (typeof input.returns === 'string') {\n returns = input.returns;\n } else if ((input.returns as any).kind === 'TableHandle') {\n returns = resolveTable(input.returns as TableHandle);\n } else if ((input.returns as any).kind === 'TypeHandle') {\n returns = resolveType(input.returns as TypeHandle);\n }\n }\n\n // Resolve args types\n const args: Record<string, string> = {};\n if (input.args) {\n for (const [argName, argType] of Object.entries(input.args)) {\n args[argName] = resolveType(argType as TypeReference);\n }\n }\n\n const node: ProcedureNode = {\n kind: 'Procedure',\n name,\n module: moduleName,\n args,\n returns,\n language: input.language || 'plpgsql',\n body: input.body\n };\n\n ctx.procedures.set(moduleName ? `${moduleName}.${name}` : name, node);\n\n return {\n kind: 'ProcedureHandle',\n name,\n moduleName\n };\n}\n","import { FunctionNode, RoutineInput } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport {\n FunctionHandle,\n resolveTable,\n resolveType,\n TableHandle,\n TypeHandle,\n TypeReference\n} from '../handles';\n/**\n * Internal Function Collector\n */\nexport function internalDefineFunction(\n scope: DbmasonContext | DbmasonScope, \n name: string, \n input: RoutineInput\n): FunctionHandle {\n const { ctx, moduleName } = resolveScope(scope);\n\n // Resolve return type\n let returns: string = 'void';\n if (input.returns) {\n if (typeof input.returns === 'string') {\n returns = input.returns;\n } else if ((input.returns as any).kind === 'TableHandle') {\n returns = resolveTable(input.returns as TableHandle);\n } else if ((input.returns as any).kind === 'TypeHandle') {\n returns = resolveType(input.returns as TypeHandle);\n }\n }\n\n // Resolve args types\n const args: Record<string, string> = {};\n if (input.args) {\n for (const [argName, argType] of Object.entries(input.args)) {\n args[argName] = resolveType(argType as TypeReference);\n }\n }\n\n const node: FunctionNode = {\n kind: 'Function',\n name,\n module: moduleName,\n args,\n returns,\n language: input.language || 'plpgsql',\n body: input.body\n };\n\n ctx.functions.set(moduleName ? `${moduleName}.${name}` : name, node);\n\n return {\n kind: 'FunctionHandle',\n name,\n moduleName\n };\n}\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { TypeHandle, resolveType, resolveProcedure, resolveRole, resolveTable, RoleReference, TableReference, ProcedureHandle, ColumnHandle, resolveColumn, RoleHandle } from '../handles';\n\n\n/**\n * Internal Trigger Collector\n */\nexport function internalDefineTrigger(\n scope: any, \n tableName: string, \n name: string, \n input: any\n): void {\n const { ctx, moduleName } = resolveScope(scope);\n const procName = input.procedure ? resolveProcedure(input.procedure) : undefined;\n \n const node: TriggerNode = {\n kind: 'Trigger',\n name,\n table: tableName,\n when: input.when,\n events: input.events,\n functionName: procName!, // TODO: Make optional in type if body is present\n forEach: input.forEach,\n condition: input.condition,\n body: input.body,\n module: moduleName\n };\n \n ctx.triggers.set(moduleName ? `${moduleName}.${name}` : name, node);\n \n // Also attach to the table if it exists in the same context\n const fullTableName = moduleName ? `${moduleName}.${tableName}` : tableName;\n const tableNode = ctx.tables.get(fullTableName);\n if (tableNode) {\n if (!tableNode.triggers) tableNode.triggers = [];\n tableNode.triggers.push(node);\n }\n}\n","import { BaseNode, PolicyMethod, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { TypeHandle, resolveType, resolveProcedure, resolveRole, resolveTable, RoleReference, TableReference, ProcedureHandle, ColumnHandle, resolveColumn, RoleHandle } from '../handles';\n\n\n/**\n * Internal Policy Collector\n */\nexport function internalDefinePolicy(scope: DbmasonContext | DbmasonScope, name: string, input: any): PolicyNode {\n const { ctx, moduleName } = resolveScope(scope);\n const table = input.table ? resolveTable(input.table) : '';\n \n // Resolve RBAC roles\n const rbac = input.rbac?.map((r: any) => ({\n roles: r.roles.map((role: any) => resolveRole(role)),\n operations: r.allow\n }));\n\n const node: PolicyNode = {\n kind: 'Policy',\n name,\n table,\n module: moduleName,\n method: input.method as PolicyMethod,\n sql: input.sql,\n rbac\n };\n ctx.policies.set(moduleName ? `${moduleName}.${name}` : name, node);\n return node;\n}\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { TypeHandle, resolveType, resolveProcedure, resolveRole, resolveTable, RoleReference, TableReference, ProcedureHandle, ColumnHandle, resolveColumn, RoleHandle } from '../handles';\n\n\n/**\n * Internal Role Collector\n */\nexport function internalDefineRole(scope: DbmasonContext | DbmasonScope, name: string, options?: RoleNode['options']): RoleHandle {\n const { ctx, moduleName } = resolveScope(scope);\n const node: RoleNode = {\n kind: 'Role',\n name,\n options,\n module: moduleName\n };\n ctx.roles.set(moduleName ? `${moduleName}.${name}` : name, node);\n\n return {\n kind: 'RoleHandle',\n roleName: name,\n moduleName\n };\n}\n","import { BaseNode, GrantObjectKind, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { TypeHandle, resolveType, resolveProcedure, resolveRole, resolveTable, RoleReference, TableReference, ProcedureHandle, ColumnHandle, resolveColumn, RoleHandle } from '../handles';\n\n\n/**\n * Internal Grant Collector\n */\nexport function internalDefineGrant(\n ctx: DbmasonContext, \n to: RoleReference, \n privileges: string[], \n kind: GrantObjectKind, \n on: TableReference\n): void {\n const roleName = resolveRole(to);\n const objectName = resolveTable(on);\n \n const node: GrantNode = {\n kind: 'Grant',\n name: `grant_${privileges.join('_')}_on_${objectName}_to_${roleName}`,\n privileges,\n on: kind,\n to: roleName,\n object: objectName\n };\n \n ctx.grants.set(node.name, node);\n}\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\n\n\n/**\n * Internal Cron Collector\n */\nexport function internalDefineCron(scope: DbmasonContext | DbmasonScope, name: string, schedule: string, command: string): void {\n const { ctx, moduleName } = resolveScope(scope);\n const node: CronNode = {\n kind: 'Cron',\n name,\n schedule,\n command,\n module: moduleName\n };\n ctx.crons.set(moduleName ? `${moduleName}.${name}` : name, node);\n}\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\n\n\n/**\n * Internal Extension Collector\n */\nexport function internalDefineExtension(scope: DbmasonContext | DbmasonScope, name: string, options?: { schema?: string, version?: string }): void {\n const { ctx, moduleName } = resolveScope(scope);\n const node: ExtensionNode = {\n kind: 'Extension',\n name,\n schema: options?.schema,\n version: options?.version,\n module: moduleName\n };\n ctx.extensions.set(moduleName ? `${moduleName}.${name}` : name, node);\n}\n","import { BaseNode, ColumnNode, IndexNode, ConstraintNode, TableNode, AnalyzedTableNode, TriggerNode, PolicyNode, ProcedureNode, FunctionNode, ViewNode, MaterializedViewNode, TypeNode, GrantNode, CronNode, ExtensionNode, RoleNode } from '../../ast/nodes';\nimport { DbmasonContext, DbmasonScope, resolveScope } from '../../compiler/DbmasonContext';\nimport { TypeHandle, resolveType, resolveProcedure, resolveRole, resolveTable, RoleReference, TableReference, ProcedureHandle, ColumnHandle, resolveColumn, RoleHandle } from '../handles';\n\n\n/**\n * Internal Enum Collector\n */\nexport function internalDefineEnum(scope: DbmasonContext | DbmasonScope, name: string, values: string[]): TypeHandle {\n const { ctx, moduleName } = resolveScope(scope);\n const node: TypeNode = {\n kind: 'Type',\n name,\n type: 'enum',\n values,\n module: moduleName\n };\n ctx.types.set(moduleName ? `${moduleName}.${name}` : name, node);\n\n return {\n kind: 'TypeHandle',\n typeName: name,\n moduleName,\n ctx\n };\n}\n\n/**\n * Internal Composite Type Collector\n */\nexport function internalDefineCompositeType(scope: DbmasonContext | DbmasonScope, name: string, fields: Record<string, string | TypeHandle>): TypeHandle {\n const { ctx, moduleName } = resolveScope(scope);\n\n // Resolve field types\n const resolvedFields: Record<string, string> = {};\n for (const [fieldName, fieldType] of Object.entries(fields)) {\n resolvedFields[fieldName] = resolveType(fieldType);\n }\n\n const node: TypeNode = {\n kind: 'Type',\n name,\n type: 'composite',\n fields: resolvedFields,\n module: moduleName\n };\n ctx.types.set(moduleName ? `${moduleName}.${name}` : name, node);\n\n return {\n kind: 'TypeHandle',\n typeName: name,\n moduleName,\n ctx\n };\n}\n"],"names":["sql","strings","values","result","i","resolveTable","ref","resolveRole","resolveType","resolveProcedure","resolveFunction","resolveColumn","useProcedure","ctx","name","parts","moduleName","useFunction","useType","useRole","useTable","tableName","handle","target","prop","useView","useMaterializedView","internalDefineTable","scope","input","processColumns","resolveScope","columns","triggerNodes","t","node","procName","policyNodes","p","r","role","tableNode","colName","internalDefineView","query","internalDefineMaterializedView","internalDefineProcedure","returns","args","argName","argType","internalDefineFunction","internalDefineTrigger","fullTableName","internalDefinePolicy","table","rbac","internalDefineRole","options","internalDefineGrant","to","privileges","kind","on","roleName","objectName","internalDefineCron","schedule","command","internalDefineExtension","internalDefineEnum","internalDefineCompositeType","fields","resolvedFields","fieldName","fieldType"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import {
2
+ DbmasonContext,
3
+ defineTable,
4
+ defineProcedure,
5
+ defineCron,
6
+ defineExtension,
7
+ text,
8
+ uuid,
9
+ timestamptz,
10
+ boolean
11
+ } from '@dbmason/postgres';
12
+
13
+ export function setupSchema(ctx: DbmasonContext) {
14
+ // 1. Extensions
15
+ defineExtension(ctx, 'pgcrypto');
16
+
17
+ // 2. Tables
18
+ const Users = defineTable(ctx, 'users', {
19
+ columns: {
20
+ id: uuid().primaryKey().default('gen_random_uuid()'),
21
+ email: text().unique().notNull(),
22
+ password_hash: text().notNull(),
23
+ full_name: text(),
24
+ role: text().default("'user'"),
25
+ is_active: boolean().default('true'),
26
+ created_at: timestamptz().defaultNow(),
27
+ updated_at: timestamptz().defaultNow()
28
+ }
29
+ });
30
+
31
+ const Sessions = defineTable(ctx, 'sessions', {
32
+ columns: {
33
+ id: uuid().primaryKey().default('gen_random_uuid()'),
34
+ user_id: uuid().references(Users.id, { onDelete: 'CASCADE' }),
35
+ token: text().unique().notNull(),
36
+ expires_at: timestamptz().notNull(),
37
+ created_at: timestamptz().defaultNow()
38
+ }
39
+ });
40
+
41
+ // 3. Procedures (Auth Logic)
42
+ defineProcedure(ctx, 'auth_signup', {
43
+ args: {
44
+ p_email: 'text',
45
+ p_password: 'text',
46
+ p_full_name: 'text'
47
+ },
48
+ returns: Users,
49
+ body: `
50
+ DECLARE
51
+ v_user_id uuid;
52
+ BEGIN
53
+ INSERT INTO users (email, password_hash, full_name)
54
+ VALUES (p_email, crypt(p_password, gen_salt('bf')), p_full_name)
55
+ RETURNING id INTO v_user_id;
56
+
57
+ RETURN v_user_id;
58
+ END;
59
+ `
60
+ });
61
+
62
+ defineProcedure(ctx, 'auth_login', {
63
+ args: {
64
+ p_email: 'text',
65
+ p_password: 'text'
66
+ },
67
+ returns: 'text',
68
+ body: `
69
+ DECLARE
70
+ v_user_id uuid;
71
+ v_password_hash text;
72
+ v_token text;
73
+ BEGIN
74
+ SELECT id, password_hash INTO v_user_id, v_password_hash
75
+ FROM users WHERE email = p_email AND is_active = true;
76
+
77
+ IF v_user_id IS NULL OR v_password_hash != crypt(p_password, v_password_hash) THEN
78
+ RAISE EXCEPTION 'Invalid email or password';
79
+ END IF;
80
+
81
+ v_token := encode(gen_random_bytes(32), 'hex');
82
+
83
+ INSERT INTO sessions (user_id, token, expires_at)
84
+ VALUES (v_user_id, v_token, now() + interval '24 hours');
85
+
86
+ RETURN v_token;
87
+ END;
88
+ `
89
+ });
90
+
91
+ // 4. Crons
92
+ defineCron(ctx, 'cleanup_sessions', '0 0 * * *', "DELETE FROM sessions WHERE expires_at < NOW()");
93
+
94
+ return { Users, Sessions };
95
+ }
@@ -0,0 +1,5 @@
1
+ import { DbmasonContext } from '@dbmason/postgres';
2
+
3
+ export function setupSchema(ctx: DbmasonContext) {
4
+ // Define your tables and procedures here
5
+ }
@@ -0,0 +1,18 @@
1
+ import { TableNode, ColumnNode, ProcedureNode, FunctionNode, PolicyNode, CronNode, ViewNode, TypeNode, TriggerNode } from './ast/nodes';
2
+ export type TableDefinition = TableNode;
3
+ export type ProcedureOptions = ProcedureNode;
4
+ export type PolicyOptions = PolicyNode;
5
+ export type CronJobConfig = CronNode;
6
+ export type ViewOptions = ViewNode;
7
+ export type TypeDefinition = TypeNode;
8
+ export { TableNode, ColumnNode, ProcedureNode, FunctionNode, PolicyNode, CronNode, ViewNode, TypeNode, TriggerNode };
9
+ export interface DbmasonConfig {
10
+ tables?: Map<string, any>;
11
+ types?: Map<string, any>;
12
+ policies?: Map<string, any>;
13
+ procedures?: Map<string, any>;
14
+ views?: Map<string, any>;
15
+ triggers?: Map<string, any>;
16
+ cron?: Map<string, any>;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACd,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC;AACxC,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC7C,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC;AACvC,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AACrC,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;AACnC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAErH,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@dbmason/core",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "The Dbmason Core Kernel: Database-agnostic schema analysis and planning.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "templates"
11
+ ],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "bin": {
16
+ "dbmason": "./dist/cli/index.js"
17
+ },
18
+ "scripts": {
19
+ "build": "vite build && npm run copy-templates",
20
+ "copy-templates": "cp -r templates dist/",
21
+ "test": "vitest run",
22
+ "clean": "rm -rf dist"
23
+ },
24
+ "dependencies": {
25
+ "commander": "^14.0.3",
26
+ "ts-node": "^10.9.2"
27
+ },
28
+ "devDependencies": {
29
+ "@types/node": "^20.0.0",
30
+ "typescript": "^5.9.3",
31
+ "vite": "^7.3.1",
32
+ "vite-plugin-dts": "^4.5.4",
33
+ "vitest": "^4.0.18"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ }
38
+ }