@antasphere/chassis-db 0.0.0-stage → 1.0.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/LICENSE +82 -0
- package/dist/auth-schema.d.ts +2132 -0
- package/dist/auth-schema.d.ts.map +1 -0
- package/dist/auth-schema.js +251 -0
- package/dist/auth-schema.js.map +1 -0
- package/dist/client.d.ts +31 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +24 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/migrate.d.ts +50 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +97 -0
- package/dist/migrate.js.map +1 -0
- package/dist/schema.d.ts +2804 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +620 -0
- package/dist/schema.js.map +1 -0
- package/package.json +45 -3
- package/src/auth-schema.ts +300 -0
- package/src/client.ts +59 -0
- package/src/index.ts +3 -0
- package/src/migrate.ts +136 -0
- package/src/schema.ts +734 -0
- package/README.md +0 -3
|
@@ -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": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "1.0.1",
|
|
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
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
|
+
}
|