@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
@@ -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
+ }