neoorm 0.1.4 → 0.1.5
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 +223 -12
- package/dist/bin/neoorm.js +50 -29
- package/dist/bin/neoorm.js.map +1 -1
- package/dist/codegen/diff-manifest.d.ts +4 -1
- package/dist/codegen/diff-manifest.d.ts.map +1 -1
- package/dist/codegen/diff-manifest.js +85 -4
- package/dist/codegen/diff-manifest.js.map +1 -1
- package/dist/codegen/generate-summary.d.ts +21 -0
- package/dist/codegen/generate-summary.d.ts.map +1 -0
- package/dist/codegen/generate-summary.js +101 -0
- package/dist/codegen/generate-summary.js.map +1 -0
- package/dist/codegen/generate.d.ts +6 -1
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/generate.js +21 -8
- package/dist/codegen/generate.js.map +1 -1
- package/dist/codegen/manifest-relations.d.ts.map +1 -1
- package/dist/codegen/manifest-relations.js +9 -2
- package/dist/codegen/manifest-relations.js.map +1 -1
- package/dist/codegen/schema-to-manifest.d.ts +4 -1
- package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
- package/dist/codegen/schema-to-manifest.js +58 -12
- package/dist/codegen/schema-to-manifest.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/dialect/postgres.d.ts +3 -0
- package/dist/dialect/postgres.d.ts.map +1 -1
- package/dist/dialect/postgres.js +51 -1
- package/dist/dialect/postgres.js.map +1 -1
- package/dist/dialect/types.d.ts +12 -1
- package/dist/dialect/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/introspect/queries.d.ts +5 -0
- package/dist/introspect/queries.d.ts.map +1 -1
- package/dist/introspect/queries.js +17 -0
- package/dist/introspect/queries.js.map +1 -1
- package/dist/introspect/to-manifest.d.ts.map +1 -1
- package/dist/introspect/to-manifest.js +58 -14
- package/dist/introspect/to-manifest.js.map +1 -1
- package/dist/migrate/runner.d.ts +21 -0
- package/dist/migrate/runner.d.ts.map +1 -1
- package/dist/migrate/runner.js +99 -6
- package/dist/migrate/runner.js.map +1 -1
- package/dist/plugins/builtin.d.ts +35 -2
- package/dist/plugins/builtin.d.ts.map +1 -1
- package/dist/plugins/builtin.js +312 -1
- package/dist/plugins/builtin.js.map +1 -1
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +3 -1
- package/dist/plugins/registry.js.map +1 -1
- package/dist/runtime/client.d.ts +3 -0
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +11 -12
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/executor.d.ts +1 -0
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +27 -4
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/query/compile.d.ts +6 -1
- package/dist/runtime/query/compile.d.ts.map +1 -1
- package/dist/runtime/query/compile.js +38 -6
- package/dist/runtime/query/compile.js.map +1 -1
- package/dist/runtime/query/create.d.ts +7 -0
- package/dist/runtime/query/create.d.ts.map +1 -1
- package/dist/runtime/query/create.js +50 -104
- package/dist/runtime/query/create.js.map +1 -1
- package/dist/runtime/query/delete.d.ts.map +1 -1
- package/dist/runtime/query/delete.js +9 -3
- package/dist/runtime/query/delete.js.map +1 -1
- package/dist/runtime/query/find.d.ts.map +1 -1
- package/dist/runtime/query/find.js +15 -11
- package/dist/runtime/query/find.js.map +1 -1
- package/dist/runtime/query/primary-key.d.ts +11 -1
- package/dist/runtime/query/primary-key.d.ts.map +1 -1
- package/dist/runtime/query/primary-key.js +55 -0
- package/dist/runtime/query/primary-key.js.map +1 -1
- package/dist/runtime/query/relation-writes.d.ts +24 -0
- package/dist/runtime/query/relation-writes.d.ts.map +1 -0
- package/dist/runtime/query/relation-writes.js +325 -0
- package/dist/runtime/query/relation-writes.js.map +1 -0
- package/dist/runtime/query/unique.d.ts.map +1 -1
- package/dist/runtime/query/unique.js +1 -5
- package/dist/runtime/query/unique.js.map +1 -1
- package/dist/runtime/query/update.d.ts.map +1 -1
- package/dist/runtime/query/update.js +45 -28
- package/dist/runtime/query/update.js.map +1 -1
- package/dist/runtime/types.d.ts +3 -2
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/schema/column-where.d.ts +18 -15
- package/dist/schema/column-where.d.ts.map +1 -1
- package/dist/schema/column.d.ts +2 -2
- package/dist/schema/column.d.ts.map +1 -1
- package/dist/schema/column.js +1 -1
- package/dist/schema/column.js.map +1 -1
- package/dist/schema/index.d.ts +4 -4
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/nested-relation-types.d.ts +60 -0
- package/dist/schema/nested-relation-types.d.ts.map +1 -0
- package/dist/schema/nested-relation-types.js +2 -0
- package/dist/schema/nested-relation-types.js.map +1 -0
- package/dist/schema/relation-types.d.ts +122 -22
- package/dist/schema/relation-types.d.ts.map +1 -1
- package/dist/schema/types.d.ts +27 -38
- package/dist/schema/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { toCamelCase } from "../utils/case.js";
|
|
2
2
|
import { findIntrospectColumnType } from "../plugins/registry.js";
|
|
3
3
|
import { pgStorageSqlType } from "../dialect/postgres.js";
|
|
4
|
-
import { queryColumns, queryForeignKeys, queryIndexes, queryInstalledExtensions, queryPrimaryKeyColumns, queryTables, queryUniqueConstraints, } from "./queries.js";
|
|
4
|
+
import { queryColumns, queryForeignKeys, queryIndexes, queryInstalledExtensions, queryPrimaryKeyColumns, queryTables, queryUniqueConstraints, queryEnumTypes, } from "./queries.js";
|
|
5
5
|
function tableAccessor(tableName) {
|
|
6
6
|
return toCamelCase(tableName.endsWith("s") ? tableName : `${tableName}s`);
|
|
7
7
|
}
|
|
8
|
-
function
|
|
8
|
+
function isSerialColumn(dataType, columnDefault) {
|
|
9
|
+
if (dataType !== "integer") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (!columnDefault) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return (columnDefault.includes("nextval(") ||
|
|
16
|
+
columnDefault.toLowerCase().includes("generated"));
|
|
17
|
+
}
|
|
18
|
+
function pgTypeToKind(dataType, udtName, enumTypes) {
|
|
19
|
+
if (enumTypes[udtName]) {
|
|
20
|
+
return "enum";
|
|
21
|
+
}
|
|
9
22
|
const pluginType = findIntrospectColumnType(dataType, udtName);
|
|
10
23
|
if (pluginType) {
|
|
11
24
|
return pluginType.kind;
|
|
@@ -37,10 +50,24 @@ function parseDefaultValue(kind, columnDefault) {
|
|
|
37
50
|
if (columnDefault === "false")
|
|
38
51
|
return { defaultNow: false, defaultValue: false };
|
|
39
52
|
}
|
|
40
|
-
if (kind === "int") {
|
|
41
|
-
const match = columnDefault.match(/^(-?\d+)/);
|
|
53
|
+
if (kind === "int" || kind === "decimal") {
|
|
54
|
+
const match = columnDefault.match(/^(-?\d+(?:\.\d+)?)/);
|
|
42
55
|
if (match) {
|
|
43
|
-
return { defaultNow: false, defaultValue: Number(match[1]) };
|
|
56
|
+
return { defaultNow: false, defaultValue: kind === "int" ? Number(match[1]) : match[1] };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (kind === "json" || kind === "jsonb") {
|
|
60
|
+
const jsonMatch = columnDefault.match(/^'((?:''|[^'])*)'::/);
|
|
61
|
+
if (jsonMatch) {
|
|
62
|
+
try {
|
|
63
|
+
return {
|
|
64
|
+
defaultNow: false,
|
|
65
|
+
defaultValue: JSON.parse(jsonMatch[1].replace(/''/g, "'")),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return { defaultNow: false };
|
|
70
|
+
}
|
|
44
71
|
}
|
|
45
72
|
}
|
|
46
73
|
const stringMatch = columnDefault.match(/^'((?:''|[^'])*)'::/);
|
|
@@ -95,7 +122,7 @@ function filterConstraintBackedIndexes(indexes, columns) {
|
|
|
95
122
|
return !uniqueColumns.has(index.columns[0]);
|
|
96
123
|
});
|
|
97
124
|
}
|
|
98
|
-
async function introspectTable(pool, tableName) {
|
|
125
|
+
async function introspectTable(pool, tableName, enumTypes) {
|
|
99
126
|
const [columns, fks, indexRows, uniqueRows, primaryKey] = await Promise.all([
|
|
100
127
|
queryColumns(pool, tableName),
|
|
101
128
|
queryForeignKeys(pool, tableName),
|
|
@@ -111,7 +138,9 @@ async function introspectTable(pool, tableName) {
|
|
|
111
138
|
const fk = fkMap.get(col.column_name);
|
|
112
139
|
const nullable = col.is_nullable === "YES";
|
|
113
140
|
const uniqueConstraintName = uniqueMap.get(col.column_name);
|
|
114
|
-
const defaults = parseDefaultValue(fk ? "fk" :
|
|
141
|
+
const defaults = parseDefaultValue(fk ? "fk" : isSerialColumn(col.data_type, col.column_default)
|
|
142
|
+
? "serial"
|
|
143
|
+
: pgTypeToKind(col.data_type, col.udt_name, enumTypes), col.column_default);
|
|
115
144
|
if (fk) {
|
|
116
145
|
const onDelete = mapDeleteRule(fk.delete_rule);
|
|
117
146
|
return {
|
|
@@ -132,11 +161,13 @@ async function introspectTable(pool, tableName) {
|
|
|
132
161
|
...(onDelete ? { onDelete } : {}),
|
|
133
162
|
};
|
|
134
163
|
}
|
|
135
|
-
const kind = col.
|
|
136
|
-
? "
|
|
137
|
-
: col.column_name === "id"
|
|
138
|
-
? "
|
|
139
|
-
:
|
|
164
|
+
const kind = isSerialColumn(col.data_type, col.column_default)
|
|
165
|
+
? "serial"
|
|
166
|
+
: col.column_name === "id" && col.udt_name === "uuid"
|
|
167
|
+
? "uuid"
|
|
168
|
+
: col.column_name === "id"
|
|
169
|
+
? "id"
|
|
170
|
+
: pgTypeToKind(col.data_type, col.udt_name, enumTypes);
|
|
140
171
|
const column = {
|
|
141
172
|
tsName,
|
|
142
173
|
sqlName: col.column_name,
|
|
@@ -150,12 +181,19 @@ async function introspectTable(pool, tableName) {
|
|
|
150
181
|
? { defaultValue: defaults.defaultValue }
|
|
151
182
|
: {}),
|
|
152
183
|
...(uniqueConstraintName ? { uniqueConstraintName } : {}),
|
|
184
|
+
...(kind === "serial" ? { generated: true } : {}),
|
|
153
185
|
};
|
|
154
186
|
if (kind === "uuid" && col.column_default?.includes("gen_random_uuid")) {
|
|
155
187
|
column.typeOptions = {
|
|
156
188
|
version: col.column_default.includes("uuid_generate_v4()") ? 4 : 7,
|
|
157
189
|
};
|
|
158
190
|
}
|
|
191
|
+
if (kind === "enum" && enumTypes[col.udt_name]) {
|
|
192
|
+
column.typeOptions = {
|
|
193
|
+
values: enumTypes[col.udt_name],
|
|
194
|
+
nativeTypeName: col.udt_name,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
159
197
|
return column;
|
|
160
198
|
});
|
|
161
199
|
return {
|
|
@@ -170,16 +208,22 @@ async function introspectTable(pool, tableName) {
|
|
|
170
208
|
export async function introspectToManifest(pool) {
|
|
171
209
|
const tables = await queryTables(pool);
|
|
172
210
|
const extensions = await queryInstalledExtensions(pool);
|
|
211
|
+
const enumTypes = await queryEnumTypes(pool);
|
|
173
212
|
const manifestTables = {};
|
|
174
213
|
for (const { table_name } of tables) {
|
|
175
|
-
const table = await introspectTable(pool, table_name);
|
|
214
|
+
const table = await introspectTable(pool, table_name, enumTypes);
|
|
176
215
|
manifestTables[table.accessor] = table;
|
|
177
216
|
}
|
|
178
|
-
const relevantExtensions = extensions.filter((ext) => ["postgis"].includes(ext));
|
|
217
|
+
const relevantExtensions = extensions.filter((ext) => ["postgis", "citext"].includes(ext));
|
|
218
|
+
const manifestEnumTypes = Object.fromEntries(Object.entries(enumTypes).map(([name, values]) => [name, { values }]));
|
|
179
219
|
return {
|
|
180
220
|
version: 1,
|
|
181
221
|
tables: manifestTables,
|
|
182
222
|
manyToMany: [],
|
|
223
|
+
enumMode: "native",
|
|
224
|
+
...(Object.keys(manifestEnumTypes).length > 0
|
|
225
|
+
? { enumTypes: manifestEnumTypes }
|
|
226
|
+
: {}),
|
|
183
227
|
...(relevantExtensions.length > 0
|
|
184
228
|
? { extensions: relevantExtensions }
|
|
185
229
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-manifest.js","sourceRoot":"","sources":["../../src/introspect/to-manifest.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,sBAAsB,
|
|
1
|
+
{"version":3,"file":"to-manifest.js","sourceRoot":"","sources":["../../src/introspect/to-manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/migrate/runner.d.ts
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
import type { Pool } from "pg";
|
|
2
2
|
import type { Manifest } from "../dialect/types.js";
|
|
3
|
+
export type MigrationRecord = {
|
|
4
|
+
name: string;
|
|
5
|
+
appliedAt: Date;
|
|
6
|
+
};
|
|
7
|
+
export type MigrationStatus = {
|
|
8
|
+
applied: MigrationRecord[];
|
|
9
|
+
pending: string[];
|
|
10
|
+
orphanApplied: string[];
|
|
11
|
+
};
|
|
3
12
|
export declare function ensureMigrationsTable(pool: Pool): Promise<void>;
|
|
13
|
+
export declare function listAppliedMigrations(pool: Pool): Promise<MigrationRecord[]>;
|
|
4
14
|
export declare function getAppliedMigrations(pool: Pool): Promise<Set<string>>;
|
|
15
|
+
export declare function listMigrationsOnDisk(migrationsDir: string): Promise<string[]>;
|
|
16
|
+
export declare function computeMigrationStatus(diskMigrations: string[], applied: MigrationRecord[]): MigrationStatus;
|
|
17
|
+
export declare function migrateStatus(pool: Pool, migrationsDir: string): Promise<MigrationStatus>;
|
|
18
|
+
export declare function formatMigrateStatus(status: MigrationStatus, migrationsDir: string): string[];
|
|
19
|
+
export declare function resetDatabaseSchema(pool: Pool): Promise<void>;
|
|
20
|
+
export declare function migrateReset(pool: Pool, migrationsDir: string, options: {
|
|
21
|
+
force: boolean;
|
|
22
|
+
skipApply?: boolean;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
reapplied: string[];
|
|
25
|
+
}>;
|
|
5
26
|
export declare function listPendingMigrations(migrationsDir: string, applied: Set<string>): Promise<string[]>;
|
|
6
27
|
export declare function applySql(pool: Pool, sql: string[]): Promise<void>;
|
|
7
28
|
export declare function applyMigration(pool: Pool, migrationsDir: string, name: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAWpD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAWpD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CASlF;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAG3E;AAED,wBAAsB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBnF;AAED,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,EAAE,eAAe,EAAE,GACzB,eAAe,CASjB;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CAqCV;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnE;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAelC;AAED,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvE;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,KAAK,iBAAiB,GAAG,OAAO,qBAAqB,EAAE,iBAAiB,CAAC;AAEzE,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,QAAQ,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAerE"}
|
package/dist/migrate/runner.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readdir, readFile } from "node:fs/promises";
|
|
1
|
+
import { readdir, readFile, stat } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { postgresDialect } from "../dialect/postgres.js";
|
|
4
4
|
import { diffManifest, formatDestructiveWarnings, resolveMigrationSql, } from "../codegen/diff-manifest.js";
|
|
@@ -13,12 +13,19 @@ export async function ensureMigrationsTable(pool) {
|
|
|
13
13
|
)
|
|
14
14
|
`);
|
|
15
15
|
}
|
|
16
|
-
export async function
|
|
16
|
+
export async function listAppliedMigrations(pool) {
|
|
17
17
|
await ensureMigrationsTable(pool);
|
|
18
|
-
const result = await pool.query(`SELECT name FROM ${postgresDialect.quoteIdentifier(MIGRATIONS_TABLE)} ORDER BY id`);
|
|
19
|
-
return
|
|
18
|
+
const result = await pool.query(`SELECT name, applied_at FROM ${postgresDialect.quoteIdentifier(MIGRATIONS_TABLE)} ORDER BY id`);
|
|
19
|
+
return result.rows.map((row) => ({
|
|
20
|
+
name: row.name,
|
|
21
|
+
appliedAt: row.applied_at,
|
|
22
|
+
}));
|
|
20
23
|
}
|
|
21
|
-
export async function
|
|
24
|
+
export async function getAppliedMigrations(pool) {
|
|
25
|
+
const applied = await listAppliedMigrations(pool);
|
|
26
|
+
return new Set(applied.map((record) => record.name));
|
|
27
|
+
}
|
|
28
|
+
export async function listMigrationsOnDisk(migrationsDir) {
|
|
22
29
|
let entries;
|
|
23
30
|
try {
|
|
24
31
|
entries = await readdir(migrationsDir);
|
|
@@ -26,7 +33,93 @@ export async function listPendingMigrations(migrationsDir, applied) {
|
|
|
26
33
|
catch {
|
|
27
34
|
return [];
|
|
28
35
|
}
|
|
29
|
-
|
|
36
|
+
const migrations = [];
|
|
37
|
+
for (const entry of entries) {
|
|
38
|
+
const entryPath = join(migrationsDir, entry);
|
|
39
|
+
try {
|
|
40
|
+
const entryStat = await stat(entryPath);
|
|
41
|
+
if (!entryStat.isDirectory()) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
await readFile(join(entryPath, "migration.sql"), "utf-8");
|
|
45
|
+
migrations.push(entry);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// skip entries without migration.sql
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return migrations.sort();
|
|
52
|
+
}
|
|
53
|
+
export function computeMigrationStatus(diskMigrations, applied) {
|
|
54
|
+
const appliedNames = new Set(applied.map((record) => record.name));
|
|
55
|
+
const diskSet = new Set(diskMigrations);
|
|
56
|
+
const pending = diskMigrations.filter((name) => !appliedNames.has(name));
|
|
57
|
+
const orphanApplied = applied
|
|
58
|
+
.map((record) => record.name)
|
|
59
|
+
.filter((name) => !diskSet.has(name));
|
|
60
|
+
return { applied, pending, orphanApplied };
|
|
61
|
+
}
|
|
62
|
+
export async function migrateStatus(pool, migrationsDir) {
|
|
63
|
+
const [applied, diskMigrations] = await Promise.all([
|
|
64
|
+
listAppliedMigrations(pool),
|
|
65
|
+
listMigrationsOnDisk(migrationsDir),
|
|
66
|
+
]);
|
|
67
|
+
return computeMigrationStatus(diskMigrations, applied);
|
|
68
|
+
}
|
|
69
|
+
export function formatMigrateStatus(status, migrationsDir) {
|
|
70
|
+
const lines = [`Migration status (${migrationsDir})`, ""];
|
|
71
|
+
lines.push("Applied:");
|
|
72
|
+
if (status.applied.length === 0) {
|
|
73
|
+
lines.push(" (none)");
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
for (const record of status.applied) {
|
|
77
|
+
const appliedAt = record.appliedAt.toISOString().replace("T", " ").replace(/\.\d{3}Z$/, " UTC");
|
|
78
|
+
lines.push(` ✓ ${record.name.padEnd(28)} ${appliedAt}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
lines.push("");
|
|
82
|
+
lines.push("Pending:");
|
|
83
|
+
if (status.pending.length === 0) {
|
|
84
|
+
lines.push(" (none)");
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
for (const name of status.pending) {
|
|
88
|
+
lines.push(` ○ ${name}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (status.orphanApplied.length > 0) {
|
|
92
|
+
lines.push("");
|
|
93
|
+
lines.push("Warnings:");
|
|
94
|
+
for (const name of status.orphanApplied) {
|
|
95
|
+
lines.push(` ! Applied migration missing on disk: ${name}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
lines.push("");
|
|
99
|
+
lines.push(`Summary: ${status.applied.length} applied, ${status.pending.length} pending`);
|
|
100
|
+
return lines;
|
|
101
|
+
}
|
|
102
|
+
export async function resetDatabaseSchema(pool) {
|
|
103
|
+
await pool.query(`
|
|
104
|
+
DROP SCHEMA public CASCADE;
|
|
105
|
+
CREATE SCHEMA public;
|
|
106
|
+
GRANT ALL ON SCHEMA public TO PUBLIC;
|
|
107
|
+
`);
|
|
108
|
+
}
|
|
109
|
+
export async function migrateReset(pool, migrationsDir, options) {
|
|
110
|
+
if (!options.force) {
|
|
111
|
+
throw new Error("migrate reset requires --force. This drops the public schema and all data.");
|
|
112
|
+
}
|
|
113
|
+
await resetDatabaseSchema(pool);
|
|
114
|
+
if (options.skipApply) {
|
|
115
|
+
return { reapplied: [] };
|
|
116
|
+
}
|
|
117
|
+
const reapplied = await migrateDeploy(pool, migrationsDir);
|
|
118
|
+
return { reapplied };
|
|
119
|
+
}
|
|
120
|
+
export async function listPendingMigrations(migrationsDir, applied) {
|
|
121
|
+
const diskMigrations = await listMigrationsOnDisk(migrationsDir);
|
|
122
|
+
return diskMigrations.filter((name) => !applied.has(name));
|
|
30
123
|
}
|
|
31
124
|
export async function applySql(pool, sql) {
|
|
32
125
|
if (sql.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/migrate/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,48 @@
|
|
|
1
|
-
import type { ColumnBuilder } from "../schema/column.js";
|
|
1
|
+
import type { ColumnBuilder, ColumnMeta } from "../schema/column.js";
|
|
2
2
|
import type { NeoOrmPlugin } from "./types.js";
|
|
3
3
|
export type UuidOptions = {
|
|
4
4
|
version?: 4 | 7;
|
|
5
5
|
};
|
|
6
|
+
export type DecimalOptions = {
|
|
7
|
+
precision?: number;
|
|
8
|
+
scale?: number;
|
|
9
|
+
};
|
|
10
|
+
export type EnumTypeOptions = {
|
|
11
|
+
name?: string;
|
|
12
|
+
};
|
|
6
13
|
export declare const builtinPlugin: NeoOrmPlugin;
|
|
14
|
+
export declare const citextPlugin: NeoOrmPlugin;
|
|
15
|
+
type IdColumnMeta = {
|
|
16
|
+
kind: "id";
|
|
17
|
+
nullable: false;
|
|
18
|
+
unique: false;
|
|
19
|
+
primary: true;
|
|
20
|
+
defaultNow: false;
|
|
21
|
+
};
|
|
7
22
|
export declare const id: {
|
|
8
|
-
primary(): ColumnBuilder<string>;
|
|
23
|
+
primary(): ColumnBuilder<string, IdColumnMeta>;
|
|
9
24
|
};
|
|
10
25
|
export declare function text(): ColumnBuilder<string | null>;
|
|
11
26
|
export declare function bool(): ColumnBuilder<boolean | null>;
|
|
12
27
|
export declare function int(): ColumnBuilder<number | null>;
|
|
13
28
|
export declare function timestamp(): ColumnBuilder<Date | null>;
|
|
14
29
|
export declare function uuid(options?: UuidOptions): ColumnBuilder<string | null>;
|
|
30
|
+
export declare function json<T = unknown>(): ColumnBuilder<T | null>;
|
|
31
|
+
export declare function jsonb<T = unknown>(): ColumnBuilder<T | null>;
|
|
32
|
+
export declare function decimal(options?: DecimalOptions): ColumnBuilder<string | null, ColumnMeta & {
|
|
33
|
+
kind: "decimal";
|
|
34
|
+
}>;
|
|
35
|
+
export declare function numeric(options?: DecimalOptions): ColumnBuilder<string | null, ColumnMeta & {
|
|
36
|
+
kind: "decimal";
|
|
37
|
+
}>;
|
|
38
|
+
export declare function serial(): ColumnBuilder<number, ColumnMeta & {
|
|
39
|
+
kind: "serial";
|
|
40
|
+
nullable: false;
|
|
41
|
+
}>;
|
|
42
|
+
export declare function enumType<const T extends readonly [string, ...string[]]>(values: T, options?: EnumTypeOptions): ColumnBuilder<T[number] | null>;
|
|
43
|
+
export declare function bytea(): ColumnBuilder<Buffer | null>;
|
|
44
|
+
export declare function textArray(): ColumnBuilder<string[] | null>;
|
|
45
|
+
export declare function intArray(): ColumnBuilder<number[] | null>;
|
|
46
|
+
export declare function citext(): ColumnBuilder<string | null>;
|
|
47
|
+
export {};
|
|
15
48
|
//# sourceMappingURL=builtin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/plugins/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../src/plugins/builtin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAsaF,eAAO,MAAM,aAAa,EAAE,YAkB3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAI1B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,EAAE;eACF,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC;CAG/C,CAAC;AAEF,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAEnD;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,CAEpD;AAED,wBAAgB,GAAG,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAElD;AAED,wBAAgB,SAAS,IAAI,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAEtD;AAED,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxE;AAED,wBAAgB,IAAI,CAAC,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAE3D;AAED,wBAAgB,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAE5D;AAED,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAIhE;AAED,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,cAAc,GACvB,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,UAAU,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAEhE;AAED,wBAAgB,MAAM,IAAI,aAAa,CACrC,MAAM,EACN,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAA;CAAE,CACjD,CAKA;AAED,wBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,EACrE,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,eAAe,GACxB,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAKjC;AAED,wBAAgB,KAAK,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAEpD;AAED,wBAAgB,SAAS,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAE1D;AAED,wBAAgB,QAAQ,IAAI,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAEzD;AAED,wBAAgB,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,CAErD"}
|