@lyku/lockstep-pg 0.1.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/LLMs.md +86 -0
- package/README.md +93 -0
- package/package.json +32 -0
- package/src/buildTableIndexCommand.d.ts +3 -0
- package/src/buildTableIndexCommand.d.ts.map +1 -0
- package/src/buildTableIndexCommand.js +46 -0
- package/src/buildTableIndexCommand.js.map +1 -0
- package/src/buildTableTriggerCommands.d.ts +3 -0
- package/src/buildTableTriggerCommands.d.ts.map +1 -0
- package/src/buildTableTriggerCommands.js +23 -0
- package/src/buildTableTriggerCommands.js.map +1 -0
- package/src/createTable.d.ts +3 -0
- package/src/createTable.d.ts.map +1 -0
- package/src/createTable.js +46 -0
- package/src/createTable.js.map +1 -0
- package/src/dateToPostgresString.d.ts +2 -0
- package/src/dateToPostgresString.d.ts.map +1 -0
- package/src/dateToPostgresString.js +7 -0
- package/src/dateToPostgresString.js.map +1 -0
- package/src/diff.d.ts +82 -0
- package/src/diff.d.ts.map +1 -0
- package/src/diff.js +218 -0
- package/src/diff.js.map +1 -0
- package/src/drift.d.ts +16 -0
- package/src/drift.d.ts.map +1 -0
- package/src/drift.js +299 -0
- package/src/drift.js.map +1 -0
- package/src/form.d.ts +3 -0
- package/src/form.d.ts.map +1 -0
- package/src/form.js +9 -0
- package/src/form.js.map +1 -0
- package/src/generateSql.d.ts +16 -0
- package/src/generateSql.d.ts.map +1 -0
- package/src/generateSql.js +306 -0
- package/src/generateSql.js.map +1 -0
- package/src/index.d.ts +16 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +21 -0
- package/src/index.js.map +1 -0
- package/src/introspect.d.ts +56 -0
- package/src/introspect.d.ts.map +1 -0
- package/src/introspect.js +435 -0
- package/src/introspect.js.map +1 -0
- package/src/mapArrayType.d.ts +3 -0
- package/src/mapArrayType.d.ts.map +1 -0
- package/src/mapArrayType.js +41 -0
- package/src/mapArrayType.js.map +1 -0
- package/src/mapBigintType.d.ts +3 -0
- package/src/mapBigintType.d.ts.map +1 -0
- package/src/mapBigintType.js +17 -0
- package/src/mapBigintType.js.map +1 -0
- package/src/mapBigserialType.d.ts +3 -0
- package/src/mapBigserialType.d.ts.map +1 -0
- package/src/mapBigserialType.js +12 -0
- package/src/mapBigserialType.js.map +1 -0
- package/src/mapCharType.d.ts +3 -0
- package/src/mapCharType.d.ts.map +1 -0
- package/src/mapCharType.js +22 -0
- package/src/mapCharType.js.map +1 -0
- package/src/mapColumnType.d.ts +3 -0
- package/src/mapColumnType.d.ts.map +1 -0
- package/src/mapColumnType.js +63 -0
- package/src/mapColumnType.js.map +1 -0
- package/src/mapIntegerType.d.ts +3 -0
- package/src/mapIntegerType.d.ts.map +1 -0
- package/src/mapIntegerType.js +12 -0
- package/src/mapIntegerType.js.map +1 -0
- package/src/mapSerialType.d.ts +3 -0
- package/src/mapSerialType.d.ts.map +1 -0
- package/src/mapSerialType.js +12 -0
- package/src/mapSerialType.js.map +1 -0
- package/src/mapTextType.d.ts +3 -0
- package/src/mapTextType.d.ts.map +1 -0
- package/src/mapTextType.js +44 -0
- package/src/mapTextType.js.map +1 -0
- package/src/mapTimestamptzType.d.ts +3 -0
- package/src/mapTimestamptzType.d.ts.map +1 -0
- package/src/mapTimestamptzType.js +13 -0
- package/src/mapTimestamptzType.js.map +1 -0
- package/src/mapVarcharType.d.ts +3 -0
- package/src/mapVarcharType.d.ts.map +1 -0
- package/src/mapVarcharType.js +44 -0
- package/src/mapVarcharType.js.map +1 -0
- package/src/migrate.d.ts +13 -0
- package/src/migrate.d.ts.map +1 -0
- package/src/migrate.js +350 -0
- package/src/migrate.js.map +1 -0
- package/src/numberChecks.d.ts +11 -0
- package/src/numberChecks.d.ts.map +1 -0
- package/src/numberChecks.js +22 -0
- package/src/numberChecks.js.map +1 -0
- package/src/seed.d.ts +3 -0
- package/src/seed.d.ts.map +1 -0
- package/src/seed.js +56 -0
- package/src/seed.js.map +1 -0
- package/src/setupTable.d.ts +3 -0
- package/src/setupTable.d.ts.map +1 -0
- package/src/setupTable.js +41 -0
- package/src/setupTable.js.map +1 -0
- package/src/timestampChecks.d.ts +11 -0
- package/src/timestampChecks.d.ts.map +1 -0
- package/src/timestampChecks.js +22 -0
- package/src/timestampChecks.js.map +1 -0
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Introspect database tables and convert to PostgresTableModel format
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Map PostgreSQL array element type name to canonical form
|
|
6
|
+
*/
|
|
7
|
+
function normalizeArrayItemType(udtName) {
|
|
8
|
+
const baseType = udtName.startsWith('_') ? udtName.slice(1) : udtName;
|
|
9
|
+
const lower = baseType.toLowerCase();
|
|
10
|
+
// Map PostgreSQL internal type names to canonical forms
|
|
11
|
+
if (lower === 'int8' || lower === 'bigint')
|
|
12
|
+
return 'bigint';
|
|
13
|
+
if (lower === 'int4' || lower === 'integer' || lower === 'int')
|
|
14
|
+
return 'integer';
|
|
15
|
+
if (lower === 'int2' || lower === 'smallint')
|
|
16
|
+
return 'smallint';
|
|
17
|
+
if (lower === 'float8' || lower === 'double precision')
|
|
18
|
+
return 'double precision';
|
|
19
|
+
if (lower === 'float4' || lower === 'real')
|
|
20
|
+
return 'real';
|
|
21
|
+
if (lower === 'text')
|
|
22
|
+
return 'text';
|
|
23
|
+
if (lower === 'varchar' || lower === 'character varying')
|
|
24
|
+
return 'varchar';
|
|
25
|
+
if (lower === 'bool' || lower === 'boolean')
|
|
26
|
+
return 'boolean';
|
|
27
|
+
if (lower === 'timestamptz' || lower === 'timestamp with time zone')
|
|
28
|
+
return 'timestamptz';
|
|
29
|
+
if (lower === 'timestamp' || lower === 'timestamp without time zone')
|
|
30
|
+
return 'timestamp';
|
|
31
|
+
if (lower === 'date')
|
|
32
|
+
return 'date';
|
|
33
|
+
if (lower === 'jsonb')
|
|
34
|
+
return 'jsonb';
|
|
35
|
+
if (lower === 'json')
|
|
36
|
+
return 'json';
|
|
37
|
+
return lower;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Normalize PostgreSQL type to our canonical form
|
|
41
|
+
*/
|
|
42
|
+
export function normalizeDbType(pgType, udtName) {
|
|
43
|
+
const lower = pgType.toLowerCase();
|
|
44
|
+
const udt = udtName.toLowerCase();
|
|
45
|
+
// Handle array types
|
|
46
|
+
if (lower === 'array' || udt.startsWith('_')) {
|
|
47
|
+
return {
|
|
48
|
+
type: 'array',
|
|
49
|
+
arrayItemType: normalizeArrayItemType(udt),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const result = (type) => ({ type, arrayItemType: null });
|
|
53
|
+
// Numeric types
|
|
54
|
+
if (lower === 'bigint' || lower === 'int8')
|
|
55
|
+
return result('bigint');
|
|
56
|
+
if (lower === 'integer' || lower === 'int' || lower === 'int4')
|
|
57
|
+
return result('integer');
|
|
58
|
+
if (lower === 'smallint' || lower === 'int2')
|
|
59
|
+
return result('smallint');
|
|
60
|
+
if (lower === 'double precision' || lower === 'float8')
|
|
61
|
+
return result('double precision');
|
|
62
|
+
// Serial types are stored as their base integer type
|
|
63
|
+
// We detect them by the default value containing 'nextval'
|
|
64
|
+
// String types
|
|
65
|
+
if (lower === 'text')
|
|
66
|
+
return result('text');
|
|
67
|
+
if (lower.startsWith('character varying') || lower === 'varchar')
|
|
68
|
+
return result('varchar');
|
|
69
|
+
if (lower.startsWith('character(') ||
|
|
70
|
+
lower === 'character' ||
|
|
71
|
+
lower === 'bpchar' ||
|
|
72
|
+
lower === 'char')
|
|
73
|
+
return result('char');
|
|
74
|
+
// Boolean
|
|
75
|
+
if (lower === 'boolean' || lower === 'bool')
|
|
76
|
+
return result('boolean');
|
|
77
|
+
// Timestamps
|
|
78
|
+
if (lower === 'timestamp with time zone' || lower === 'timestamptz')
|
|
79
|
+
return result('timestamptz');
|
|
80
|
+
if (lower === 'timestamp without time zone' || lower === 'timestamp')
|
|
81
|
+
return result('timestamp');
|
|
82
|
+
// Date
|
|
83
|
+
if (lower === 'date')
|
|
84
|
+
return result('date');
|
|
85
|
+
// JSON
|
|
86
|
+
if (lower === 'jsonb')
|
|
87
|
+
return result('jsonb');
|
|
88
|
+
if (lower === 'json')
|
|
89
|
+
return result('json');
|
|
90
|
+
// User-defined (enums stored as text with CHECK)
|
|
91
|
+
if (lower === 'user-defined')
|
|
92
|
+
return result('text');
|
|
93
|
+
return result(lower);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Extract enum values from a CHECK constraint clause
|
|
97
|
+
*/
|
|
98
|
+
function extractEnumValues(checkClause) {
|
|
99
|
+
// Match patterns like:
|
|
100
|
+
// CHECK ((col = ANY (ARRAY['a'::text, 'b'::text])))
|
|
101
|
+
// CHECK (col IN ('a', 'b', 'c'))
|
|
102
|
+
// CHECK (("col" = ANY (ARRAY['a'::text, 'b'::text])))
|
|
103
|
+
if (!checkClause.includes(' IN (') && !checkClause.includes('ANY')) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const values = [];
|
|
107
|
+
const valueMatches = checkClause.matchAll(/'([^']+)'/g);
|
|
108
|
+
for (const match of valueMatches) {
|
|
109
|
+
// Skip type casts like ::text that might be captured
|
|
110
|
+
const val = match[1];
|
|
111
|
+
if (!val.includes('::')) {
|
|
112
|
+
values.push(val);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return values.length > 0 ? values : null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Detect if a column default indicates a serial/bigserial type
|
|
119
|
+
*/
|
|
120
|
+
function _isSerialDefault(defaultVal) {
|
|
121
|
+
if (!defaultVal)
|
|
122
|
+
return null;
|
|
123
|
+
if (defaultVal.includes('nextval(')) {
|
|
124
|
+
// Check if the sequence name suggests bigserial
|
|
125
|
+
if (defaultVal.includes('_id_seq') || defaultVal.includes('bigserial')) {
|
|
126
|
+
return 'bigserial';
|
|
127
|
+
}
|
|
128
|
+
return 'serial';
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Introspect a single table from the database
|
|
134
|
+
*/
|
|
135
|
+
export async function introspectTable(client, tableName) {
|
|
136
|
+
// Get columns
|
|
137
|
+
const columnsResult = await client.query(`
|
|
138
|
+
SELECT
|
|
139
|
+
column_name,
|
|
140
|
+
data_type,
|
|
141
|
+
udt_name,
|
|
142
|
+
is_nullable,
|
|
143
|
+
column_default,
|
|
144
|
+
character_maximum_length
|
|
145
|
+
FROM information_schema.columns
|
|
146
|
+
WHERE table_schema = 'public' AND table_name = $1
|
|
147
|
+
ORDER BY ordinal_position
|
|
148
|
+
`, [tableName]);
|
|
149
|
+
// Get CHECK constraints
|
|
150
|
+
const checkResult = await client.query(`
|
|
151
|
+
SELECT
|
|
152
|
+
con.conname AS constraint_name,
|
|
153
|
+
att.attname AS column_name,
|
|
154
|
+
pg_get_constraintdef(con.oid) AS check_clause
|
|
155
|
+
FROM pg_constraint con
|
|
156
|
+
JOIN pg_attribute att ON att.attnum = ANY(con.conkey) AND att.attrelid = con.conrelid
|
|
157
|
+
WHERE con.conrelid = $1::regclass
|
|
158
|
+
AND con.contype = 'c'
|
|
159
|
+
`, [`"${tableName}"`]);
|
|
160
|
+
const checkConstraints = new Map();
|
|
161
|
+
for (const row of checkResult.rows) {
|
|
162
|
+
checkConstraints.set(row.column_name, row);
|
|
163
|
+
}
|
|
164
|
+
// Build columns map
|
|
165
|
+
const columns = new Map();
|
|
166
|
+
for (const row of columnsResult.rows) {
|
|
167
|
+
const check = checkConstraints.get(row.column_name);
|
|
168
|
+
const enumValues = check ? extractEnumValues(check.check_clause) : null;
|
|
169
|
+
const { type, arrayItemType } = normalizeDbType(row.data_type, row.udt_name);
|
|
170
|
+
columns.set(row.column_name, {
|
|
171
|
+
name: row.column_name,
|
|
172
|
+
type,
|
|
173
|
+
nullable: row.is_nullable === 'YES',
|
|
174
|
+
default: row.column_default,
|
|
175
|
+
maxLength: row.character_maximum_length,
|
|
176
|
+
checkConstraint: check?.check_clause ?? null,
|
|
177
|
+
enumValues,
|
|
178
|
+
arrayItemType,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
// Get indexes
|
|
182
|
+
const indexResult = await client.query(`
|
|
183
|
+
SELECT indexname, indexdef
|
|
184
|
+
FROM pg_indexes
|
|
185
|
+
WHERE schemaname = 'public' AND tablename = $1
|
|
186
|
+
`, [tableName]);
|
|
187
|
+
const indexes = [];
|
|
188
|
+
for (const row of indexResult.rows) {
|
|
189
|
+
// Parse index definition to extract columns
|
|
190
|
+
// Format: CREATE [UNIQUE] INDEX name ON table USING btree (col1, col2)
|
|
191
|
+
const isUnique = row.indexdef.includes('UNIQUE');
|
|
192
|
+
const columnsMatch = row.indexdef.match(/\(([^)]+)\)/);
|
|
193
|
+
const indexColumns = [];
|
|
194
|
+
if (columnsMatch) {
|
|
195
|
+
const colsPart = columnsMatch[1];
|
|
196
|
+
// Split by comma but handle quoted identifiers
|
|
197
|
+
const cols = colsPart.split(',').map((c) => c.trim());
|
|
198
|
+
for (const col of cols) {
|
|
199
|
+
// Extract just the column name (remove quotes, modifiers like DESC)
|
|
200
|
+
const colName = col.replace(/"/g, '').split(' ')[0];
|
|
201
|
+
indexColumns.push(colName);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
indexes.push({
|
|
205
|
+
name: row.indexname,
|
|
206
|
+
columns: indexColumns,
|
|
207
|
+
unique: isUnique,
|
|
208
|
+
definition: row.indexdef,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
// Get primary key
|
|
212
|
+
const pkResult = await client.query(`
|
|
213
|
+
SELECT a.attname AS column_name
|
|
214
|
+
FROM pg_index i
|
|
215
|
+
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
|
|
216
|
+
WHERE i.indrelid = $1::regclass AND i.indisprimary
|
|
217
|
+
ORDER BY array_position(i.indkey, a.attnum)
|
|
218
|
+
`, [`"${tableName}"`]);
|
|
219
|
+
const primaryKey = pkResult.rows.map((r) => r.column_name);
|
|
220
|
+
// Get unique constraints (excluding primary key)
|
|
221
|
+
const uniqueResult = await client.query(`
|
|
222
|
+
SELECT con.conname AS constraint_name, att.attname AS column_name
|
|
223
|
+
FROM pg_constraint con
|
|
224
|
+
JOIN pg_attribute att ON att.attnum = ANY(con.conkey) AND att.attrelid = con.conrelid
|
|
225
|
+
WHERE con.conrelid = $1::regclass
|
|
226
|
+
AND con.contype = 'u'
|
|
227
|
+
ORDER BY con.conname, array_position(con.conkey, att.attnum)
|
|
228
|
+
`, [`"${tableName}"`]);
|
|
229
|
+
const uniqueByConstraint = new Map();
|
|
230
|
+
for (const row of uniqueResult.rows) {
|
|
231
|
+
const cols = uniqueByConstraint.get(row.constraint_name) ?? [];
|
|
232
|
+
cols.push(row.column_name);
|
|
233
|
+
uniqueByConstraint.set(row.constraint_name, cols);
|
|
234
|
+
}
|
|
235
|
+
const uniqueConstraints = Array.from(uniqueByConstraint.values());
|
|
236
|
+
// Get foreign key constraints
|
|
237
|
+
const fkResult = await client.query(`
|
|
238
|
+
SELECT
|
|
239
|
+
tc.constraint_name,
|
|
240
|
+
kcu.column_name,
|
|
241
|
+
ccu.table_name AS foreign_table_name,
|
|
242
|
+
ccu.column_name AS foreign_column_name
|
|
243
|
+
FROM information_schema.table_constraints tc
|
|
244
|
+
JOIN information_schema.key_column_usage kcu
|
|
245
|
+
ON tc.constraint_name = kcu.constraint_name AND tc.table_schema = kcu.table_schema
|
|
246
|
+
JOIN information_schema.constraint_column_usage ccu
|
|
247
|
+
ON ccu.constraint_name = tc.constraint_name AND ccu.table_schema = tc.table_schema
|
|
248
|
+
WHERE tc.constraint_type = 'FOREIGN KEY'
|
|
249
|
+
AND tc.table_schema = 'public'
|
|
250
|
+
AND tc.table_name = $1
|
|
251
|
+
`, [tableName]);
|
|
252
|
+
const foreignKeys = fkResult.rows.map((row) => ({
|
|
253
|
+
column: row.column_name,
|
|
254
|
+
referencedTable: row.foreign_table_name,
|
|
255
|
+
referencedColumn: row.foreign_column_name,
|
|
256
|
+
constraintName: row.constraint_name,
|
|
257
|
+
}));
|
|
258
|
+
return {
|
|
259
|
+
name: tableName,
|
|
260
|
+
columns,
|
|
261
|
+
indexes,
|
|
262
|
+
primaryKey,
|
|
263
|
+
uniqueConstraints,
|
|
264
|
+
foreignKeys,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Introspect all tables from the database
|
|
269
|
+
*/
|
|
270
|
+
export async function introspectDatabase(client) {
|
|
271
|
+
const tablesResult = await client.query(`
|
|
272
|
+
SELECT table_name
|
|
273
|
+
FROM information_schema.tables
|
|
274
|
+
WHERE table_schema = 'public'
|
|
275
|
+
AND table_type = 'BASE TABLE'
|
|
276
|
+
ORDER BY table_name
|
|
277
|
+
`);
|
|
278
|
+
const tables = new Map();
|
|
279
|
+
for (const row of tablesResult.rows) {
|
|
280
|
+
const table = await introspectTable(client, row.table_name);
|
|
281
|
+
tables.set(row.table_name, table);
|
|
282
|
+
}
|
|
283
|
+
return tables;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Convert a code-defined PostgresTableModel to our IntrospectedTable format
|
|
287
|
+
* for comparison purposes
|
|
288
|
+
*/
|
|
289
|
+
export function modelToIntrospected(tableName, model) {
|
|
290
|
+
const schema = model.schema;
|
|
291
|
+
const columns = new Map();
|
|
292
|
+
if ('properties' in schema) {
|
|
293
|
+
const required = new Set('required' in schema ? schema.required : []);
|
|
294
|
+
for (const [colName, colSchema] of Object.entries(schema.properties)) {
|
|
295
|
+
const col = colSchema;
|
|
296
|
+
let type = col.type;
|
|
297
|
+
let arrayItemType = null;
|
|
298
|
+
// Normalize type names
|
|
299
|
+
if (type === 'bigserial')
|
|
300
|
+
type = 'bigint';
|
|
301
|
+
if (type === 'serial')
|
|
302
|
+
type = 'integer';
|
|
303
|
+
if (type === 'int' || type === 'int4')
|
|
304
|
+
type = 'integer';
|
|
305
|
+
if (type === 'int8')
|
|
306
|
+
type = 'bigint';
|
|
307
|
+
if (type === 'int2')
|
|
308
|
+
type = 'smallint';
|
|
309
|
+
if (type === 'float8')
|
|
310
|
+
type = 'double precision';
|
|
311
|
+
if (type === 'bool')
|
|
312
|
+
type = 'boolean';
|
|
313
|
+
if (type === 'character varying')
|
|
314
|
+
type = 'varchar';
|
|
315
|
+
if (type === 'character' || type === 'bpchar')
|
|
316
|
+
type = 'char';
|
|
317
|
+
// Enums are stored as text
|
|
318
|
+
const enumValues = col.type === 'enum' && col.enum ? [...col.enum] : null;
|
|
319
|
+
if (col.type === 'enum')
|
|
320
|
+
type = 'text';
|
|
321
|
+
if (col.type === 'array') {
|
|
322
|
+
type = 'array';
|
|
323
|
+
// Extract array item type from schema
|
|
324
|
+
if ('items' in col && col.items && typeof col.items === 'object') {
|
|
325
|
+
const items = col.items;
|
|
326
|
+
if (items.type) {
|
|
327
|
+
// Normalize the item type
|
|
328
|
+
let itemType = items.type;
|
|
329
|
+
if (itemType === 'int8')
|
|
330
|
+
itemType = 'bigint';
|
|
331
|
+
if (itemType === 'int4' || itemType === 'int')
|
|
332
|
+
itemType = 'integer';
|
|
333
|
+
if (itemType === 'int2')
|
|
334
|
+
itemType = 'smallint';
|
|
335
|
+
if (itemType === 'float8')
|
|
336
|
+
itemType = 'double precision';
|
|
337
|
+
if (itemType === 'float4')
|
|
338
|
+
itemType = 'real';
|
|
339
|
+
if (itemType === 'bool')
|
|
340
|
+
itemType = 'boolean';
|
|
341
|
+
arrayItemType = itemType;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
columns.set(colName, {
|
|
346
|
+
name: colName,
|
|
347
|
+
type,
|
|
348
|
+
nullable: !required.has(colName),
|
|
349
|
+
default: 'default' in col && col.default
|
|
350
|
+
? typeof col.default === 'object' &&
|
|
351
|
+
col.default !== null &&
|
|
352
|
+
'sql' in col.default
|
|
353
|
+
? col.default['sql']
|
|
354
|
+
: String(col.default)
|
|
355
|
+
: null,
|
|
356
|
+
maxLength: 'maxLength' in col ? col.maxLength : null,
|
|
357
|
+
checkConstraint: null, // We don't store the full clause
|
|
358
|
+
enumValues,
|
|
359
|
+
arrayItemType,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Convert indexes
|
|
364
|
+
const indexes = [];
|
|
365
|
+
if (model.indexes) {
|
|
366
|
+
for (const idx of model.indexes) {
|
|
367
|
+
let cols;
|
|
368
|
+
let name;
|
|
369
|
+
if (typeof idx === 'string') {
|
|
370
|
+
cols = [idx];
|
|
371
|
+
name = `idx_${tableName}_${idx}`;
|
|
372
|
+
}
|
|
373
|
+
else if (Array.isArray(idx)) {
|
|
374
|
+
cols = idx.map((c) => (typeof c === 'string' ? c.split(' ')[0] : c));
|
|
375
|
+
name = `idx_${tableName}_${cols.join('_')}`;
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
const objIdx = idx;
|
|
379
|
+
cols = Array.isArray(objIdx.columns)
|
|
380
|
+
? objIdx.columns.map((c) => c.split(' ')[0])
|
|
381
|
+
: [objIdx.columns.split(' ')[0]];
|
|
382
|
+
name = objIdx.name ?? `idx_${tableName}_${cols.join('_')}`;
|
|
383
|
+
}
|
|
384
|
+
indexes.push({
|
|
385
|
+
name,
|
|
386
|
+
columns: cols,
|
|
387
|
+
unique: false,
|
|
388
|
+
definition: '',
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// Primary key
|
|
393
|
+
const primaryKey = model.primaryKey
|
|
394
|
+
? Array.isArray(model.primaryKey)
|
|
395
|
+
? model.primaryKey
|
|
396
|
+
: [model.primaryKey]
|
|
397
|
+
: [];
|
|
398
|
+
// Unique constraints
|
|
399
|
+
const uniqueConstraints = [];
|
|
400
|
+
if (model.unique) {
|
|
401
|
+
for (const u of model.unique) {
|
|
402
|
+
if (typeof u === 'string') {
|
|
403
|
+
uniqueConstraints.push([u]);
|
|
404
|
+
}
|
|
405
|
+
else if (Array.isArray(u)) {
|
|
406
|
+
uniqueConstraints.push(u);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
// Foreign keys — model format: { columnName: { referencedTable: referencedColumn } }
|
|
411
|
+
const foreignKeys = [];
|
|
412
|
+
if (model.foreignKeys) {
|
|
413
|
+
for (const [colName, ref] of Object.entries(model.foreignKeys)) {
|
|
414
|
+
if (!ref)
|
|
415
|
+
continue;
|
|
416
|
+
for (const [refTable, refColumn] of Object.entries(ref)) {
|
|
417
|
+
foreignKeys.push({
|
|
418
|
+
column: colName,
|
|
419
|
+
referencedTable: refTable,
|
|
420
|
+
referencedColumn: refColumn,
|
|
421
|
+
constraintName: `${tableName}_${colName}_fkey`,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
return {
|
|
427
|
+
name: tableName,
|
|
428
|
+
columns,
|
|
429
|
+
indexes,
|
|
430
|
+
primaryKey,
|
|
431
|
+
uniqueConstraints,
|
|
432
|
+
foreignKeys,
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=introspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"introspect.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/introspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapArrayType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapArrayType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,eAAO,MAAM,YAAY,GACxB,MAAM,MAAM,EACZ,cAAc,gBAAgB,KAC5B,MA+CF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { mapColumnType } from './mapColumnType';
|
|
2
|
+
export const mapArrayType = (name, columnSchema) => {
|
|
3
|
+
const itemType = mapColumnType(name, columnSchema.items);
|
|
4
|
+
const constraints = [];
|
|
5
|
+
if (columnSchema.primaryKey) {
|
|
6
|
+
constraints.push('PRIMARY KEY');
|
|
7
|
+
}
|
|
8
|
+
if (columnSchema.unique) {
|
|
9
|
+
constraints.push('UNIQUE');
|
|
10
|
+
}
|
|
11
|
+
if (columnSchema.minItems !== undefined) {
|
|
12
|
+
constraints.push(`CHECK (array_length("${name}", 1) >= ${columnSchema.minItems})`);
|
|
13
|
+
}
|
|
14
|
+
if (columnSchema.maxItems !== undefined) {
|
|
15
|
+
constraints.push(`CHECK (array_length("${name}", 1) <= ${columnSchema.maxItems})`);
|
|
16
|
+
}
|
|
17
|
+
// Handle multi-word types like DOUBLE PRECISION
|
|
18
|
+
// PostgreSQL syntax: TYPE[] for arrays, constraints come after
|
|
19
|
+
// For types with CHECK constraints, extract them separately
|
|
20
|
+
const checkMatch = itemType.match(/^(.+?)\s*(CHECK\s*\(.+\))$/i);
|
|
21
|
+
let baseType;
|
|
22
|
+
let checkConstraint = null;
|
|
23
|
+
if (checkMatch) {
|
|
24
|
+
baseType = checkMatch[1].trim();
|
|
25
|
+
checkConstraint = checkMatch[2];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
baseType = itemType;
|
|
29
|
+
}
|
|
30
|
+
// Append [] to the base type
|
|
31
|
+
let result = `${baseType}[]`;
|
|
32
|
+
// Add any check constraints from the item type
|
|
33
|
+
if (checkConstraint) {
|
|
34
|
+
constraints.push(checkConstraint);
|
|
35
|
+
}
|
|
36
|
+
if (constraints.length) {
|
|
37
|
+
result += ' ' + constraints.join(' ');
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=mapArrayType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapArrayType.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapArrayType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,IAAY,EACZ,YAA8B,EACrB,EAAE;IACX,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzC,WAAW,CAAC,IAAI,CACf,wBAAwB,IAAI,YAAY,YAAY,CAAC,QAAQ,GAAG,CAChE,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzC,WAAW,CAAC,IAAI,CACf,wBAAwB,IAAI,YAAY,YAAY,CAAC,QAAQ,GAAG,CAChE,CAAC;IACH,CAAC;IACD,gDAAgD;IAChD,+DAA+D;IAC/D,4DAA4D;IAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjE,IAAI,QAAgB,CAAC;IACrB,IAAI,eAAe,GAAkB,IAAI,CAAC;IAE1C,IAAI,UAAU,EAAE,CAAC;QAChB,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACP,QAAQ,GAAG,QAAQ,CAAC;IACrB,CAAC;IAED,6BAA6B;IAC7B,IAAI,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC;IAE7B,+CAA+C;IAC/C,IAAI,eAAe,EAAE,CAAC;QACrB,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapBigintType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapBigintType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,eAAO,MAAM,aAAa,GACzB,MAAM,MAAM,EACZ,cAAc,iBAAiB,KAC7B,MAeF,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { numberChecks } from './numberChecks';
|
|
2
|
+
export const mapBigintType = (name, columnSchema) => {
|
|
3
|
+
const constraints = numberChecks(name, columnSchema);
|
|
4
|
+
if (columnSchema.primaryKey) {
|
|
5
|
+
constraints.push('PRIMARY KEY');
|
|
6
|
+
}
|
|
7
|
+
if (columnSchema.unique) {
|
|
8
|
+
constraints.push('UNIQUE');
|
|
9
|
+
}
|
|
10
|
+
const { generated } = columnSchema;
|
|
11
|
+
if (generated) {
|
|
12
|
+
const when = generated.always ? 'ALWAYS' : 'BY DEFAULT';
|
|
13
|
+
constraints.push(`GENERATED ${when} AS IDENTITY`);
|
|
14
|
+
}
|
|
15
|
+
return `BIGINT${constraints.length ? ' ' + constraints.join(' ') : ''}`;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=mapBigintType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapBigintType.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapBigintType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,IAAY,EACZ,YAA+B,EACtB,EAAE;IACX,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAErD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IACnC,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;QACxD,WAAW,CAAC,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapBigserialType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapBigserialType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,eAAO,MAAM,gBAAgB,GAC5B,MAAM,MAAM,EACZ,cAAc,oBAAoB,KAChC,MAUF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { numberChecks } from './numberChecks';
|
|
2
|
+
export const mapBigserialType = (name, columnSchema) => {
|
|
3
|
+
const constraints = numberChecks(name, columnSchema);
|
|
4
|
+
if (columnSchema.primaryKey) {
|
|
5
|
+
constraints.push('PRIMARY KEY');
|
|
6
|
+
}
|
|
7
|
+
if (columnSchema.unique) {
|
|
8
|
+
constraints.push('UNIQUE');
|
|
9
|
+
}
|
|
10
|
+
return `BIGSERIAL${constraints.length ? ' ' + constraints.join(' ') : ''}`;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=mapBigserialType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapBigserialType.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapBigserialType.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,IAAY,EACZ,YAAkC,EACzB,EAAE;IACX,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAErD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5E,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapCharType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapCharType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,WAAW,GACvB,MAAM,MAAM,EACZ,cAAc,eAAe,KAC3B,MA2BF,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const mapCharType = (name, columnSchema) => {
|
|
2
|
+
// console.log('mapping char', name, columnSchema, '/char');
|
|
3
|
+
const constraints = [];
|
|
4
|
+
if (columnSchema.primaryKey) {
|
|
5
|
+
constraints.push('PRIMARY KEY');
|
|
6
|
+
}
|
|
7
|
+
if (columnSchema.unique) {
|
|
8
|
+
constraints.push('UNIQUE');
|
|
9
|
+
}
|
|
10
|
+
if (columnSchema.generated) {
|
|
11
|
+
constraints.push(`GENERATED ALWAYS AS (${columnSchema.generated.as})${columnSchema.generated.stored ? ' STORED' : ''}`);
|
|
12
|
+
}
|
|
13
|
+
if (columnSchema.checks) {
|
|
14
|
+
constraints.push(...columnSchema.checks.map((check) => `CHECK (${check})`));
|
|
15
|
+
}
|
|
16
|
+
// if (columnSchema.default !== undefined) {
|
|
17
|
+
// constraints.push(`DEFAULT '${columnSchema.default}'`);
|
|
18
|
+
// }
|
|
19
|
+
const length = 'length' in columnSchema ? `(${columnSchema.length})` : '';
|
|
20
|
+
return `CHAR${length}${constraints.length ? ' ' + constraints.join(' ') : ''}`;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=mapCharType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapCharType.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapCharType.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,IAAY,EACZ,YAA6B,EACpB,EAAE;IACX,4DAA4D;IAC5D,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,CACf,wBAAwB,YAAY,CAAC,SAAS,CAAC,EAAE,IAChD,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC7C,EAAE,CACF,CAAC;IACH,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,4CAA4C;IAC5C,6DAA6D;IAC7D,IAAI;IACJ,MAAM,MAAM,GAAG,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,OAAO,OAAO,MAAM,GACnB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACpD,EAAE,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapColumnType.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/mapColumnType.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1D,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,mBAAmB,GAC/B,MAAM,CAoDR"}
|