@antasphere/chassis-db 0.0.0-stage → 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,48 @@
1
1
  {
2
2
  "name": "@antasphere/chassis-db",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.0.0",
4
+ "license": "SEE LICENSE IN LICENSE",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/antasphere/chassis.git",
8
+ "directory": "packages/chassis-db"
9
+ },
10
+ "type": "module",
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "src",
17
+ "LICENSE"
18
+ ],
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.js"
23
+ },
24
+ "./schema": {
25
+ "types": "./dist/schema.d.ts",
26
+ "default": "./dist/schema.js"
27
+ },
28
+ "./migrate": {
29
+ "types": "./dist/migrate.d.ts",
30
+ "default": "./dist/migrate.js"
31
+ }
32
+ },
33
+ "dependencies": {
34
+ "@opentelemetry/api": "^1.9.1",
35
+ "drizzle-orm": "^0.45.1",
36
+ "pg": "^8.16.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/pg": "^8.15.0",
40
+ "vitest": "^3.2.0"
41
+ },
42
+ "scripts": {
43
+ "build": "tsc -p tsconfig.json",
44
+ "typecheck": "tsc -p tsconfig.json --noEmit",
45
+ "lint": "eslint src",
46
+ "test": "vitest run --passWithNoTests"
47
+ }
6
48
  }
@@ -0,0 +1,300 @@
1
+ import { relations } from 'drizzle-orm';
2
+ import { pgTable, text, timestamp, boolean, integer, jsonb, index } from 'drizzle-orm/pg-core';
3
+
4
+ export const user = pgTable('user', {
5
+ id: text('id').primaryKey(),
6
+ name: text('name').notNull(),
7
+ email: text('email').notNull().unique(),
8
+ emailVerified: boolean('email_verified').default(false).notNull(),
9
+ image: text('image'),
10
+ createdAt: timestamp('created_at').defaultNow().notNull(),
11
+ updatedAt: timestamp('updated_at')
12
+ .defaultNow()
13
+ .$onUpdate(() => /* @__PURE__ */ new Date())
14
+ .notNull(),
15
+ twoFactorEnabled: boolean('two_factor_enabled').default(false)
16
+ });
17
+
18
+ export const session = pgTable(
19
+ 'session',
20
+ {
21
+ id: text('id').primaryKey(),
22
+ expiresAt: timestamp('expires_at').notNull(),
23
+ token: text('token').notNull().unique(),
24
+ createdAt: timestamp('created_at').defaultNow().notNull(),
25
+ updatedAt: timestamp('updated_at')
26
+ .$onUpdate(() => /* @__PURE__ */ new Date())
27
+ .notNull(),
28
+ ipAddress: text('ip_address'),
29
+ userAgent: text('user_agent'),
30
+ userId: text('user_id')
31
+ .notNull()
32
+ .references(() => user.id, { onDelete: 'cascade' })
33
+ },
34
+ (table) => [index('session_userId_idx').on(table.userId)]
35
+ );
36
+
37
+ export const account = pgTable(
38
+ 'account',
39
+ {
40
+ id: text('id').primaryKey(),
41
+ accountId: text('account_id').notNull(),
42
+ providerId: text('provider_id').notNull(),
43
+ userId: text('user_id')
44
+ .notNull()
45
+ .references(() => user.id, { onDelete: 'cascade' }),
46
+ accessToken: text('access_token'),
47
+ refreshToken: text('refresh_token'),
48
+ idToken: text('id_token'),
49
+ accessTokenExpiresAt: timestamp('access_token_expires_at'),
50
+ refreshTokenExpiresAt: timestamp('refresh_token_expires_at'),
51
+ scope: text('scope'),
52
+ password: text('password'),
53
+ createdAt: timestamp('created_at').defaultNow().notNull(),
54
+ updatedAt: timestamp('updated_at')
55
+ .$onUpdate(() => /* @__PURE__ */ new Date())
56
+ .notNull()
57
+ },
58
+ (table) => [index('account_userId_idx').on(table.userId)]
59
+ );
60
+
61
+ export const verification = pgTable(
62
+ 'verification',
63
+ {
64
+ id: text('id').primaryKey(),
65
+ identifier: text('identifier').notNull(),
66
+ value: text('value').notNull(),
67
+ expiresAt: timestamp('expires_at').notNull(),
68
+ createdAt: timestamp('created_at').defaultNow().notNull(),
69
+ updatedAt: timestamp('updated_at')
70
+ .defaultNow()
71
+ .$onUpdate(() => /* @__PURE__ */ new Date())
72
+ .notNull()
73
+ },
74
+ (table) => [index('verification_identifier_idx').on(table.identifier)]
75
+ );
76
+
77
+ export const jwks = pgTable('jwks', {
78
+ id: text('id').primaryKey(),
79
+ publicKey: text('public_key').notNull(),
80
+ privateKey: text('private_key').notNull(),
81
+ createdAt: timestamp('created_at').notNull(),
82
+ expiresAt: timestamp('expires_at')
83
+ });
84
+
85
+ export const oauthClient = pgTable(
86
+ 'oauth_client',
87
+ {
88
+ id: text('id').primaryKey(),
89
+ clientId: text('client_id').notNull().unique(),
90
+ clientSecret: text('client_secret'),
91
+ disabled: boolean('disabled').default(false),
92
+ skipConsent: boolean('skip_consent'),
93
+ enableEndSession: boolean('enable_end_session'),
94
+ subjectType: text('subject_type'),
95
+ scopes: text('scopes').array(),
96
+ userId: text('user_id').references(() => user.id, { onDelete: 'cascade' }),
97
+ createdAt: timestamp('created_at'),
98
+ updatedAt: timestamp('updated_at'),
99
+ name: text('name'),
100
+ uri: text('uri'),
101
+ icon: text('icon'),
102
+ contacts: text('contacts').array(),
103
+ tos: text('tos'),
104
+ policy: text('policy'),
105
+ softwareId: text('software_id'),
106
+ softwareVersion: text('software_version'),
107
+ softwareStatement: text('software_statement'),
108
+ redirectUris: text('redirect_uris').array().notNull(),
109
+ postLogoutRedirectUris: text('post_logout_redirect_uris').array(),
110
+ tokenEndpointAuthMethod: text('token_endpoint_auth_method'),
111
+ grantTypes: text('grant_types').array(),
112
+ responseTypes: text('response_types').array(),
113
+ public: boolean('public'),
114
+ type: text('type'),
115
+ requirePKCE: boolean('require_pkce'),
116
+ referenceId: text('reference_id'),
117
+ metadata: jsonb('metadata')
118
+ },
119
+ (table) => [index('oauthClient_userId_idx').on(table.userId)]
120
+ );
121
+
122
+ export const oauthRefreshToken = pgTable(
123
+ 'oauth_refresh_token',
124
+ {
125
+ id: text('id').primaryKey(),
126
+ token: text('token').notNull().unique(),
127
+ clientId: text('client_id')
128
+ .notNull()
129
+ .references(() => oauthClient.clientId, { onDelete: 'cascade' }),
130
+ sessionId: text('session_id').references(() => session.id, {
131
+ onDelete: 'set null'
132
+ }),
133
+ userId: text('user_id')
134
+ .notNull()
135
+ .references(() => user.id, { onDelete: 'cascade' }),
136
+ referenceId: text('reference_id'),
137
+ expiresAt: timestamp('expires_at'),
138
+ createdAt: timestamp('created_at'),
139
+ revoked: timestamp('revoked'),
140
+ authTime: timestamp('auth_time'),
141
+ scopes: text('scopes').array().notNull()
142
+ },
143
+ (table) => [
144
+ index('oauthRefreshToken_clientId_idx').on(table.clientId),
145
+ index('oauthRefreshToken_sessionId_idx').on(table.sessionId),
146
+ index('oauthRefreshToken_userId_idx').on(table.userId)
147
+ ]
148
+ );
149
+
150
+ export const oauthAccessToken = pgTable(
151
+ 'oauth_access_token',
152
+ {
153
+ id: text('id').primaryKey(),
154
+ token: text('token').unique(),
155
+ clientId: text('client_id')
156
+ .notNull()
157
+ .references(() => oauthClient.clientId, { onDelete: 'cascade' }),
158
+ sessionId: text('session_id').references(() => session.id, {
159
+ onDelete: 'set null'
160
+ }),
161
+ userId: text('user_id').references(() => user.id, { onDelete: 'cascade' }),
162
+ referenceId: text('reference_id'),
163
+ refreshId: text('refresh_id').references(() => oauthRefreshToken.id, {
164
+ onDelete: 'cascade'
165
+ }),
166
+ expiresAt: timestamp('expires_at'),
167
+ createdAt: timestamp('created_at'),
168
+ scopes: text('scopes').array().notNull()
169
+ },
170
+ (table) => [
171
+ index('oauthAccessToken_clientId_idx').on(table.clientId),
172
+ index('oauthAccessToken_sessionId_idx').on(table.sessionId),
173
+ index('oauthAccessToken_userId_idx').on(table.userId),
174
+ index('oauthAccessToken_refreshId_idx').on(table.refreshId)
175
+ ]
176
+ );
177
+
178
+ export const oauthConsent = pgTable(
179
+ 'oauth_consent',
180
+ {
181
+ id: text('id').primaryKey(),
182
+ clientId: text('client_id')
183
+ .notNull()
184
+ .references(() => oauthClient.clientId, { onDelete: 'cascade' }),
185
+ userId: text('user_id').references(() => user.id, { onDelete: 'cascade' }),
186
+ referenceId: text('reference_id'),
187
+ scopes: text('scopes').array().notNull(),
188
+ createdAt: timestamp('created_at'),
189
+ updatedAt: timestamp('updated_at')
190
+ },
191
+ (table) => [
192
+ index('oauthConsent_clientId_idx').on(table.clientId),
193
+ index('oauthConsent_userId_idx').on(table.userId)
194
+ ]
195
+ );
196
+
197
+ export const twoFactor = pgTable(
198
+ 'two_factor',
199
+ {
200
+ id: text('id').primaryKey(),
201
+ secret: text('secret').notNull(),
202
+ backupCodes: text('backup_codes').notNull(),
203
+ userId: text('user_id')
204
+ .notNull()
205
+ .references(() => user.id, { onDelete: 'cascade' }),
206
+ verified: boolean('verified').default(true),
207
+ failedVerificationCount: integer('failed_verification_count').default(0),
208
+ lockedUntil: timestamp('locked_until')
209
+ },
210
+ (table) => [index('twoFactor_secret_idx').on(table.secret), index('twoFactor_userId_idx').on(table.userId)]
211
+ );
212
+
213
+ export const userRelations = relations(user, ({ many }) => ({
214
+ sessions: many(session),
215
+ accounts: many(account),
216
+ oauthClients: many(oauthClient),
217
+ oauthRefreshTokens: many(oauthRefreshToken),
218
+ oauthAccessTokens: many(oauthAccessToken),
219
+ oauthConsents: many(oauthConsent),
220
+ twoFactors: many(twoFactor)
221
+ }));
222
+
223
+ export const sessionRelations = relations(session, ({ one, many }) => ({
224
+ user: one(user, {
225
+ fields: [session.userId],
226
+ references: [user.id]
227
+ }),
228
+ oauthRefreshTokens: many(oauthRefreshToken),
229
+ oauthAccessTokens: many(oauthAccessToken)
230
+ }));
231
+
232
+ export const accountRelations = relations(account, ({ one }) => ({
233
+ user: one(user, {
234
+ fields: [account.userId],
235
+ references: [user.id]
236
+ })
237
+ }));
238
+
239
+ export const oauthClientRelations = relations(oauthClient, ({ one, many }) => ({
240
+ user: one(user, {
241
+ fields: [oauthClient.userId],
242
+ references: [user.id]
243
+ }),
244
+ oauthRefreshTokens: many(oauthRefreshToken),
245
+ oauthAccessTokens: many(oauthAccessToken),
246
+ oauthConsents: many(oauthConsent)
247
+ }));
248
+
249
+ export const oauthRefreshTokenRelations = relations(oauthRefreshToken, ({ one, many }) => ({
250
+ oauthClient: one(oauthClient, {
251
+ fields: [oauthRefreshToken.clientId],
252
+ references: [oauthClient.clientId]
253
+ }),
254
+ session: one(session, {
255
+ fields: [oauthRefreshToken.sessionId],
256
+ references: [session.id]
257
+ }),
258
+ user: one(user, {
259
+ fields: [oauthRefreshToken.userId],
260
+ references: [user.id]
261
+ }),
262
+ oauthAccessTokens: many(oauthAccessToken)
263
+ }));
264
+
265
+ export const oauthAccessTokenRelations = relations(oauthAccessToken, ({ one }) => ({
266
+ oauthClient: one(oauthClient, {
267
+ fields: [oauthAccessToken.clientId],
268
+ references: [oauthClient.clientId]
269
+ }),
270
+ session: one(session, {
271
+ fields: [oauthAccessToken.sessionId],
272
+ references: [session.id]
273
+ }),
274
+ user: one(user, {
275
+ fields: [oauthAccessToken.userId],
276
+ references: [user.id]
277
+ }),
278
+ oauthRefreshToken: one(oauthRefreshToken, {
279
+ fields: [oauthAccessToken.refreshId],
280
+ references: [oauthRefreshToken.id]
281
+ })
282
+ }));
283
+
284
+ export const oauthConsentRelations = relations(oauthConsent, ({ one }) => ({
285
+ oauthClient: one(oauthClient, {
286
+ fields: [oauthConsent.clientId],
287
+ references: [oauthClient.clientId]
288
+ }),
289
+ user: one(user, {
290
+ fields: [oauthConsent.userId],
291
+ references: [user.id]
292
+ })
293
+ }));
294
+
295
+ export const twoFactorRelations = relations(twoFactor, ({ one }) => ({
296
+ user: one(user, {
297
+ fields: [twoFactor.userId],
298
+ references: [user.id]
299
+ })
300
+ }));
package/src/client.ts ADDED
@@ -0,0 +1,59 @@
1
+ import pg from 'pg';
2
+ import { drizzle, type NodePgDatabase } from 'drizzle-orm/node-postgres';
3
+
4
+ /**
5
+ * The handle type is schema-AGNOSTIC on purpose: the chassis only knows its own
6
+ * tables, the tool merges its domain tables in (`createDb(url, schema)`), and
7
+ * both must pass the same handle around. Nothing in the codebase uses drizzle's
8
+ * relational `db.query.*` API — the only member the schema generic shapes — so
9
+ * the query builder (`select/insert/update/delete/transaction/execute`) is typed
10
+ * identically whatever the schema is.
11
+ */
12
+ export type Db = NodePgDatabase<Record<string, unknown>>;
13
+
14
+ /**
15
+ * A database handle OR an open transaction — for code that must run either
16
+ * standalone or inside a caller's transaction (e.g. a tool's blob
17
+ * in-use guard inside the file-delete transaction).
18
+ */
19
+ export type DbConn = Db | Parameters<Parameters<Db['transaction']>[0]>[0];
20
+
21
+ export interface DbHandle {
22
+ db: Db;
23
+ pool: pg.Pool;
24
+ }
25
+
26
+ export interface CreateDbOptions {
27
+ /**
28
+ * Told when an IDLE pooled connection ends on the server's side (a Postgres
29
+ * restart, a failover, `pg_terminate_backend`): the place to log it. The
30
+ * pool has already dropped that client and opens a new one on the next query.
31
+ */
32
+ onIdleError?: (err: Error) => void;
33
+ }
34
+
35
+ export function createDb(
36
+ connectionString: string,
37
+ schema: Record<string, unknown>,
38
+ options: CreateDbOptions = {}
39
+ ): DbHandle {
40
+ // Conservative pool defaults for a single-container instance. A runaway
41
+ // query cannot hold a connection (or a transaction) forever, and the pool
42
+ // cannot starve Postgres' default max_connections when replicas multiply.
43
+ // Note for PgBouncer transaction mode: statement_timeout is a session-level
44
+ // setting — set it server-side instead (documented in deployment-profiles).
45
+ const pool = new pg.Pool({
46
+ connectionString,
47
+ max: 10,
48
+ connectionTimeoutMillis: 10_000,
49
+ statement_timeout: 30_000,
50
+ idle_in_transaction_session_timeout: 30_000
51
+ });
52
+ // ALWAYS listened to, whoever the caller is. node-postgres emits `error` on
53
+ // the pool when an idle client's connection ends server-side, and an `error`
54
+ // event nobody listens to is an uncaught exception: without this line a
55
+ // Postgres restart kills the process (57P01) instead of costing one reconnect.
56
+ pool.on('error', (err) => options.onIdleError?.(err));
57
+ const db = drizzle(pool, { schema });
58
+ return { db, pool };
59
+ }
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './client.js';
2
+ export * from './schema.js';
3
+ export * as schema from './schema.js';
package/src/migrate.ts ADDED
@@ -0,0 +1,136 @@
1
+ import pg from 'pg';
2
+ import { drizzle } from 'drizzle-orm/node-postgres';
3
+ import { migrate } from 'drizzle-orm/node-postgres/migrator';
4
+ import { readFile } from 'node:fs/promises';
5
+ import { createHash } from 'node:crypto';
6
+ import { join } from 'node:path';
7
+
8
+ /**
9
+ * Advisory-lock key for boot migrations. Constant and app-specific: every
10
+ * replica of this app contends on the same key, so exactly one runs DDL while
11
+ * the others wait, then find nothing left to apply.
12
+ */
13
+ const MIGRATION_LOCK_KEY = 7_432_001n;
14
+
15
+ export interface MigrateOptions {
16
+ connectionString: string;
17
+ migrationsFolder: string;
18
+ log?: (msg: string) => void;
19
+ }
20
+
21
+ export interface MigrationStatus {
22
+ applied: number;
23
+ onDisk: number;
24
+ /** Migrations on disk whose hash the database has not applied. */
25
+ pending: boolean;
26
+ /**
27
+ * Hashes the database has applied that NO file on disk produces (OPS-6,
28
+ * PRDCT-1357): the database was migrated by a NEWER image (a rollback to
29
+ * an older tag, `:next` behind `:latest`), or a migration file was edited
30
+ * after it ran. A count-based status called both "current"; either way
31
+ * this image's schema expectations are wrong and readiness must refuse.
32
+ */
33
+ unknownApplied: number;
34
+ /** True when the database is ahead of this image (unknownApplied > 0). */
35
+ downgrade: boolean;
36
+ }
37
+
38
+ /** drizzle's own migration identity: sha256 of the whole .sql file (migrator.js). */
39
+ export function migrationHash(sql: string): string {
40
+ return createHash('sha256').update(sql).digest('hex');
41
+ }
42
+
43
+ /**
44
+ * Pure comparison of the on-disk hashes with the applied ones — the part of
45
+ * migrationStatus worth unit-testing without a database.
46
+ */
47
+ export function compareMigrations(onDisk: string[], applied: string[]): MigrationStatus {
48
+ const appliedSet = new Set(applied);
49
+ const onDiskSet = new Set(onDisk);
50
+ const pendingCount = onDisk.filter((h) => !appliedSet.has(h)).length;
51
+ const unknownApplied = applied.filter((h) => !onDiskSet.has(h)).length;
52
+ return {
53
+ applied: applied.length,
54
+ onDisk: onDisk.length,
55
+ pending: pendingCount > 0,
56
+ unknownApplied,
57
+ downgrade: unknownApplied > 0
58
+ };
59
+ }
60
+
61
+ /** The hashes drizzle would compute for the journal's migrations, in journal order. */
62
+ export async function onDiskMigrationHashes(migrationsFolder: string): Promise<string[]> {
63
+ const journal = JSON.parse(await readFile(join(migrationsFolder, 'meta', '_journal.json'), 'utf8')) as {
64
+ entries: Array<{ tag: string }>;
65
+ };
66
+ const hashes: string[] = [];
67
+ for (const entry of journal.entries) {
68
+ hashes.push(migrationHash(await readFile(join(migrationsFolder, `${entry.tag}.sql`), 'utf8')));
69
+ }
70
+ return hashes;
71
+ }
72
+
73
+ /**
74
+ * Run all pending migrations exactly once across concurrent replicas.
75
+ *
76
+ * Uses a session-scoped pg_advisory_lock on a dedicated client (never a
77
+ * pool): drizzle's migrator runs its own transactions, so a transaction-scoped
78
+ * lock would release after the first internal commit and stop protecting the
79
+ * rest of the run. Holding one session for lock + DDL guarantees every
80
+ * statement runs under the lock.
81
+ */
82
+ export async function runMigrations({
83
+ connectionString,
84
+ migrationsFolder,
85
+ log
86
+ }: MigrateOptions): Promise<void> {
87
+ const client = new pg.Client({ connectionString });
88
+ await client.connect();
89
+ try {
90
+ log?.('acquiring migration advisory lock');
91
+ await client.query('SELECT pg_advisory_lock($1)', [MIGRATION_LOCK_KEY.toString()]);
92
+ log?.('advisory lock acquired, applying pending migrations');
93
+ await migrate(drizzle(client), { migrationsFolder });
94
+ log?.('migrations up to date');
95
+ } finally {
96
+ try {
97
+ await client.query('SELECT pg_advisory_unlock($1)', [MIGRATION_LOCK_KEY.toString()]);
98
+ } finally {
99
+ await client.end();
100
+ }
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Compare applied migrations against the folder without running anything,
106
+ * BY HASH (never by count): drizzle records the sha256 of every applied file,
107
+ * so a database migrated by a newer image shows up as applied hashes this
108
+ * image does not know — a downgrade — instead of "n of n, current". Used
109
+ * before every boot's migration decision: pending → apply (AUTO_MIGRATE) or
110
+ * refuse readiness; downgrade → refuse readiness regardless.
111
+ */
112
+ export async function migrationStatus({
113
+ connectionString,
114
+ migrationsFolder
115
+ }: Omit<MigrateOptions, 'log'>): Promise<MigrationStatus> {
116
+ const onDisk = await onDiskMigrationHashes(migrationsFolder);
117
+ const client = new pg.Client({ connectionString });
118
+ await client.connect();
119
+ try {
120
+ const res = await client.query<{ count: string }>(
121
+ `SELECT count(*)::text AS count
122
+ FROM information_schema.tables t
123
+ WHERE t.table_schema = 'drizzle' AND t.table_name = '__drizzle_migrations'`
124
+ );
125
+ if (res.rows[0]?.count === '0') {
126
+ return compareMigrations(onDisk, []);
127
+ }
128
+ const applied = await client.query<{ hash: string }>('SELECT hash FROM drizzle.__drizzle_migrations');
129
+ return compareMigrations(
130
+ onDisk,
131
+ applied.rows.map((r) => r.hash)
132
+ );
133
+ } finally {
134
+ await client.end();
135
+ }
136
+ }