@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.
- package/README.md +17 -0
- package/dist/DbmasonContext-Baf-v6-B.mjs +31 -0
- package/dist/DbmasonContext-Baf-v6-B.mjs.map +1 -0
- package/dist/DbmasonContext-Dw0gG7AV.js +2 -0
- package/dist/DbmasonContext-Dw0gG7AV.js.map +1 -0
- package/dist/ast/nodes.d.ts +192 -0
- package/dist/ast/nodes.d.ts.map +1 -0
- package/dist/cli/commands/client.d.ts +2 -0
- package/dist/cli/commands/client.d.ts.map +1 -0
- package/dist/cli/commands/generate.d.ts +2 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/migrate.d.ts +2 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +81 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.mjs +929 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/client/generateClientMetadata.d.ts +8 -0
- package/dist/client/generateClientMetadata.d.ts.map +1 -0
- package/dist/client/standaloneGenerator.d.ts +5 -0
- package/dist/client/standaloneGenerator.d.ts.map +1 -0
- package/dist/compiler/DbmasonContext.d.ts +74 -0
- package/dist/compiler/DbmasonContext.d.ts.map +1 -0
- package/dist/compiler/Dialect.d.ts +25 -0
- package/dist/compiler/Dialect.d.ts.map +1 -0
- package/dist/compiler/Introspector.d.ts +5 -0
- package/dist/compiler/Introspector.d.ts.map +1 -0
- package/dist/compiler/SnapshotBuilder.d.ts +5 -0
- package/dist/compiler/SnapshotBuilder.d.ts.map +1 -0
- package/dist/compiler/analyzers/dependency.resolver.d.ts +11 -0
- package/dist/compiler/analyzers/dependency.resolver.d.ts.map +1 -0
- package/dist/compiler/analyzers/schema.analyzer.d.ts +11 -0
- package/dist/compiler/analyzers/schema.analyzer.d.ts.map +1 -0
- package/dist/compiler/compile.d.ts +18 -0
- package/dist/compiler/compile.d.ts.map +1 -0
- package/dist/compiler/diff.d.ts +25 -0
- package/dist/compiler/diff.d.ts.map +1 -0
- package/dist/definitions/Cron.d.ts +2 -0
- package/dist/definitions/Cron.d.ts.map +1 -0
- package/dist/definitions/Extension.d.ts +2 -0
- package/dist/definitions/Extension.d.ts.map +1 -0
- package/dist/definitions/Function.d.ts +2 -0
- package/dist/definitions/Function.d.ts.map +1 -0
- package/dist/definitions/Grant.d.ts +2 -0
- package/dist/definitions/Grant.d.ts.map +1 -0
- package/dist/definitions/Module.d.ts +2 -0
- package/dist/definitions/Module.d.ts.map +1 -0
- package/dist/definitions/Policy.d.ts +2 -0
- package/dist/definitions/Policy.d.ts.map +1 -0
- package/dist/definitions/Procedure.d.ts +2 -0
- package/dist/definitions/Procedure.d.ts.map +1 -0
- package/dist/definitions/Role.d.ts +2 -0
- package/dist/definitions/Role.d.ts.map +1 -0
- package/dist/definitions/Table.d.ts +4 -0
- package/dist/definitions/Table.d.ts.map +1 -0
- package/dist/definitions/Trigger.d.ts +2 -0
- package/dist/definitions/Trigger.d.ts.map +1 -0
- package/dist/definitions/Type.d.ts +2 -0
- package/dist/definitions/Type.d.ts.map +1 -0
- package/dist/definitions/View.d.ts +3 -0
- package/dist/definitions/View.d.ts.map +1 -0
- package/dist/definitions/collectors/Cron.internal.d.ts +6 -0
- package/dist/definitions/collectors/Cron.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Extension.internal.d.ts +9 -0
- package/dist/definitions/collectors/Extension.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Function.internal.d.ts +8 -0
- package/dist/definitions/collectors/Function.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Grant.internal.d.ts +8 -0
- package/dist/definitions/collectors/Grant.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Policy.internal.d.ts +7 -0
- package/dist/definitions/collectors/Policy.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Procedure.internal.d.ts +8 -0
- package/dist/definitions/collectors/Procedure.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Role.internal.d.ts +8 -0
- package/dist/definitions/collectors/Role.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Table.internal.d.ts +23 -0
- package/dist/definitions/collectors/Table.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Trigger.internal.d.ts +5 -0
- package/dist/definitions/collectors/Trigger.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/Type.internal.d.ts +11 -0
- package/dist/definitions/collectors/Type.internal.d.ts.map +1 -0
- package/dist/definitions/collectors/View.internal.d.ts +10 -0
- package/dist/definitions/collectors/View.internal.d.ts.map +1 -0
- package/dist/definitions/handles.d.ts +121 -0
- package/dist/definitions/handles.d.ts.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +353 -0
- package/dist/index.mjs.map +1 -0
- package/dist/templates/cli/auth.cli.template.ts +95 -0
- package/dist/templates/cli/minimal.cli.template.ts +5 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +38 -0
- package/templates/cli/auth.cli.template.ts +95 -0
- 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
|
+
}
|