@c9up/atlas 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/db.darwin-arm64.node +0 -0
- package/db.darwin-x64.node +0 -0
- package/db.linux-arm64-gnu.node +0 -0
- package/db.linux-x64-gnu.node +0 -0
- package/db.win32-x64-msvc.node +0 -0
- package/dist/AtlasProvider.d.ts +60 -7
- package/dist/AtlasProvider.d.ts.map +1 -1
- package/dist/AtlasProvider.js +204 -38
- package/dist/AtlasProvider.js.map +1 -1
- package/dist/BaseEntity.d.ts +17 -0
- package/dist/BaseEntity.d.ts.map +1 -1
- package/dist/BaseEntity.js.map +1 -1
- package/dist/BaseModel.d.ts +63 -27
- package/dist/BaseModel.d.ts.map +1 -1
- package/dist/BaseModel.js +108 -51
- package/dist/BaseModel.js.map +1 -1
- package/dist/BaseRepository.d.ts +11 -1
- package/dist/BaseRepository.d.ts.map +1 -1
- package/dist/BaseRepository.js +95 -20
- package/dist/BaseRepository.js.map +1 -1
- package/dist/ConnectionManager.d.ts +106 -0
- package/dist/ConnectionManager.d.ts.map +1 -0
- package/dist/ConnectionManager.js +228 -0
- package/dist/ConnectionManager.js.map +1 -0
- package/dist/ModelQuery.d.ts +256 -43
- package/dist/ModelQuery.d.ts.map +1 -1
- package/dist/ModelQuery.js +899 -231
- package/dist/ModelQuery.js.map +1 -1
- package/dist/Transaction.d.ts +54 -1
- package/dist/Transaction.d.ts.map +1 -1
- package/dist/Transaction.js +121 -59
- package/dist/Transaction.js.map +1 -1
- package/dist/adapters/NapiDbAdapter.d.ts +11 -0
- package/dist/adapters/NapiDbAdapter.d.ts.map +1 -1
- package/dist/adapters/NapiDbAdapter.js +35 -7
- package/dist/adapters/NapiDbAdapter.js.map +1 -1
- package/dist/console/contract.d.ts +62 -0
- package/dist/console/contract.d.ts.map +1 -0
- package/dist/console/contract.js +38 -0
- package/dist/console/contract.js.map +1 -0
- package/dist/console/factoryCommands.d.ts +23 -0
- package/dist/console/factoryCommands.d.ts.map +1 -0
- package/dist/console/factoryCommands.js +62 -0
- package/dist/console/factoryCommands.js.map +1 -0
- package/dist/console/migrationCommands.d.ts +38 -8
- package/dist/console/migrationCommands.d.ts.map +1 -1
- package/dist/console/migrationCommands.js +157 -50
- package/dist/console/migrationCommands.js.map +1 -1
- package/dist/console/schemaCheckCommand.d.ts +11 -17
- package/dist/console/schemaCheckCommand.d.ts.map +1 -1
- package/dist/console/schemaCheckCommand.js +21 -15
- package/dist/console/schemaCheckCommand.js.map +1 -1
- package/dist/console/schemaDumpCommand.d.ts +30 -0
- package/dist/console/schemaDumpCommand.d.ts.map +1 -0
- package/dist/console/schemaDumpCommand.js +69 -0
- package/dist/console/schemaDumpCommand.js.map +1 -0
- package/dist/console/schemaGenerateCommand.d.ts +100 -0
- package/dist/console/schemaGenerateCommand.d.ts.map +1 -0
- package/dist/console/schemaGenerateCommand.js +246 -0
- package/dist/console/schemaGenerateCommand.js.map +1 -0
- package/dist/console/seederCommands.d.ts +46 -0
- package/dist/console/seederCommands.d.ts.map +1 -0
- package/dist/console/seederCommands.js +136 -0
- package/dist/console/seederCommands.js.map +1 -0
- package/dist/decorators/entity.d.ts +13 -2
- package/dist/decorators/entity.d.ts.map +1 -1
- package/dist/decorators/entity.js +10 -0
- package/dist/decorators/entity.js.map +1 -1
- package/dist/decorators/hooks.d.ts +3 -3
- package/dist/decorators/hooks.d.ts.map +1 -1
- package/dist/decorators/hooks.js.map +1 -1
- package/dist/events.d.ts +5 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/factories.d.ts +8 -0
- package/dist/factories.d.ts.map +1 -0
- package/dist/factories.js +8 -0
- package/dist/factories.js.map +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/lucid-schema.d.ts +15 -0
- package/dist/lucid-schema.d.ts.map +1 -0
- package/dist/lucid-schema.js +16 -0
- package/dist/lucid-schema.js.map +1 -0
- package/dist/orm.d.ts +14 -0
- package/dist/orm.d.ts.map +1 -0
- package/dist/orm.js +14 -0
- package/dist/orm.js.map +1 -0
- package/dist/query/DatabaseQueryBuilder.d.ts +557 -0
- package/dist/query/DatabaseQueryBuilder.d.ts.map +1 -0
- package/dist/query/DatabaseQueryBuilder.js +1798 -0
- package/dist/query/DatabaseQueryBuilder.js.map +1 -0
- package/dist/query/DmlBuilder.d.ts +62 -0
- package/dist/query/DmlBuilder.d.ts.map +1 -0
- package/dist/query/DmlBuilder.js +84 -0
- package/dist/query/DmlBuilder.js.map +1 -0
- package/dist/query/QueryBuilder.d.ts +5 -0
- package/dist/query/QueryBuilder.d.ts.map +1 -1
- package/dist/query/QueryBuilder.js +7 -0
- package/dist/query/QueryBuilder.js.map +1 -1
- package/dist/query/RawQueryBuilder.d.ts +47 -0
- package/dist/query/RawQueryBuilder.d.ts.map +1 -0
- package/dist/query/RawQueryBuilder.js +138 -0
- package/dist/query/RawQueryBuilder.js.map +1 -0
- package/dist/query/interpolate.d.ts +45 -0
- package/dist/query/interpolate.d.ts.map +1 -0
- package/dist/query/interpolate.js +51 -0
- package/dist/query/interpolate.js.map +1 -0
- package/dist/query/native.d.ts +8 -0
- package/dist/query/native.d.ts.map +1 -1
- package/dist/query/native.js +14 -0
- package/dist/query/native.js.map +1 -1
- package/dist/query/operators.d.ts +4 -0
- package/dist/query/operators.d.ts.map +1 -0
- package/dist/query/operators.js +27 -0
- package/dist/query/operators.js.map +1 -0
- package/dist/schema/Migration.d.ts +31 -7
- package/dist/schema/Migration.d.ts.map +1 -1
- package/dist/schema/Migration.js +34 -7
- package/dist/schema/Migration.js.map +1 -1
- package/dist/schema/MigrationRunner.d.ts +56 -6
- package/dist/schema/MigrationRunner.d.ts.map +1 -1
- package/dist/schema/MigrationRunner.js +382 -112
- package/dist/schema/MigrationRunner.js.map +1 -1
- package/dist/schema/Schema.d.ts +59 -2
- package/dist/schema/Schema.d.ts.map +1 -1
- package/dist/schema/Schema.js +143 -9
- package/dist/schema/Schema.js.map +1 -1
- package/dist/schema/SchemaDumper.d.ts +121 -0
- package/dist/schema/SchemaDumper.d.ts.map +1 -0
- package/dist/schema/SchemaDumper.js +365 -0
- package/dist/schema/SchemaDumper.js.map +1 -0
- package/dist/schema/Seeder.d.ts +13 -0
- package/dist/schema/Seeder.d.ts.map +1 -1
- package/dist/schema/Seeder.js +28 -5
- package/dist/schema/Seeder.js.map +1 -1
- package/dist/schema/TableBuilder.d.ts +27 -8
- package/dist/schema/TableBuilder.d.ts.map +1 -1
- package/dist/schema/TableBuilder.js +50 -12
- package/dist/schema/TableBuilder.js.map +1 -1
- package/dist/schema/catalog.d.ts +25 -1
- package/dist/schema/catalog.d.ts.map +1 -1
- package/dist/schema/catalog.js +69 -22
- package/dist/schema/catalog.js.map +1 -1
- package/dist/schema/introspect.d.ts +1 -1
- package/dist/schema/introspect.d.ts.map +1 -1
- package/dist/schema/introspect.js +26 -11
- package/dist/schema/introspect.js.map +1 -1
- package/dist/seeders.d.ts +7 -0
- package/dist/seeders.d.ts.map +1 -0
- package/dist/seeders.js +7 -0
- package/dist/seeders.js.map +1 -0
- package/dist/services/db.d.ts +120 -9
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +182 -26
- package/dist/services/db.js.map +1 -1
- package/dist/testing/DatabaseCleanup.d.ts +29 -6
- package/dist/testing/DatabaseCleanup.d.ts.map +1 -1
- package/dist/testing/DatabaseCleanup.js +44 -17
- package/dist/testing/DatabaseCleanup.js.map +1 -1
- package/dist/testing/DbAssertions.d.ts +48 -0
- package/dist/testing/DbAssertions.d.ts.map +1 -0
- package/dist/testing/DbAssertions.js +80 -0
- package/dist/testing/DbAssertions.js.map +1 -0
- package/dist/testing/Factory.d.ts +111 -25
- package/dist/testing/Factory.d.ts.map +1 -1
- package/dist/testing/Factory.js +331 -56
- package/dist/testing/Factory.js.map +1 -1
- package/dist/testing/TestUtils.d.ts +49 -0
- package/dist/testing/TestUtils.d.ts.map +1 -0
- package/dist/testing/TestUtils.js +79 -0
- package/dist/testing/TestUtils.js.map +1 -0
- package/dist/testing/index.d.ts +3 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/types/relations.d.ts +31 -0
- package/dist/types/relations.d.ts.map +1 -0
- package/dist/types/relations.js +20 -0
- package/dist/types/relations.js.map +1 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +30 -2
- package/src/AtlasProvider.ts +297 -51
- package/src/BaseEntity.ts +29 -0
- package/src/BaseModel.ts +174 -37
- package/src/BaseRepository.ts +136 -17
- package/src/ConnectionManager.ts +298 -0
- package/src/ModelQuery.ts +1309 -260
- package/src/Transaction.ts +194 -60
- package/src/adapters/NapiDbAdapter.ts +72 -14
- package/src/console/contract.ts +96 -0
- package/src/console/factoryCommands.ts +73 -0
- package/src/console/migrationCommands.ts +253 -63
- package/src/console/schemaCheckCommand.ts +26 -22
- package/src/console/schemaDumpCommand.ts +96 -0
- package/src/console/schemaGenerateCommand.ts +380 -0
- package/src/console/seederCommands.ts +174 -0
- package/src/decorators/entity.ts +18 -2
- package/src/decorators/hooks.ts +5 -3
- package/src/events.ts +5 -0
- package/src/factories.ts +10 -0
- package/src/index.ts +50 -3
- package/src/lucid-schema.ts +22 -0
- package/src/orm.ts +13 -0
- package/src/query/DatabaseQueryBuilder.ts +2724 -0
- package/src/query/DmlBuilder.ts +131 -0
- package/src/query/QueryBuilder.ts +8 -0
- package/src/query/RawQueryBuilder.ts +173 -0
- package/src/query/interpolate.ts +73 -0
- package/src/query/native.ts +29 -0
- package/src/query/operators.ts +27 -0
- package/src/schema/Migration.ts +36 -7
- package/src/schema/MigrationRunner.ts +483 -119
- package/src/schema/Schema.ts +168 -19
- package/src/schema/SchemaDumper.ts +518 -0
- package/src/schema/Seeder.ts +47 -10
- package/src/schema/TableBuilder.ts +48 -11
- package/src/schema/catalog.ts +94 -24
- package/src/schema/introspect.ts +26 -9
- package/src/seeders.ts +16 -0
- package/src/services/db.ts +343 -31
- package/src/testing/DatabaseCleanup.ts +73 -21
- package/src/testing/DbAssertions.ts +127 -0
- package/src/testing/Factory.ts +559 -79
- package/src/testing/TestUtils.ts +123 -0
- package/src/testing/index.ts +12 -1
- package/src/types/relations.ts +43 -0
package/src/schema/Schema.ts
CHANGED
|
@@ -149,7 +149,18 @@ export class Schema {
|
|
|
149
149
|
return this;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
/** `DROP TABLE` — errors if the table is missing (Adonis Lucid/Knex `dropTable`). */
|
|
152
153
|
dropTable(name: string): this {
|
|
154
|
+
const { statements } = compileStatementNative(
|
|
155
|
+
{ kind: "dropTable", table: this.#qualify(name), ifExists: false },
|
|
156
|
+
this.#dialect,
|
|
157
|
+
);
|
|
158
|
+
this.#statements.push(...statements);
|
|
159
|
+
return this;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** `DROP TABLE IF EXISTS` — a no-op when missing (Lucid/Knex `dropTableIfExists`). */
|
|
163
|
+
dropTableIfExists(name: string): this {
|
|
153
164
|
const { statements } = compileStatementNative(
|
|
154
165
|
{ kind: "dropTable", table: this.#qualify(name), ifExists: true },
|
|
155
166
|
this.#dialect,
|
|
@@ -158,6 +169,89 @@ export class Schema {
|
|
|
158
169
|
return this;
|
|
159
170
|
}
|
|
160
171
|
|
|
172
|
+
/**
|
|
173
|
+
* `CREATE SCHEMA` (Lucid/Knex `createSchema`). Postgres and MySQL (where a
|
|
174
|
+
* schema is a database); rejected on SQLite, which has no schemas.
|
|
175
|
+
*/
|
|
176
|
+
createSchema(name: string): this {
|
|
177
|
+
return this.#schemaStmt({ kind: "createSchema", name, ifNotExists: false });
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** `CREATE SCHEMA IF NOT EXISTS` (Lucid/Knex `createSchemaIfNotExists`). */
|
|
181
|
+
createSchemaIfNotExists(name: string): this {
|
|
182
|
+
return this.#schemaStmt({ kind: "createSchema", name, ifNotExists: true });
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** `DROP SCHEMA [CASCADE]` (Lucid/Knex `dropSchema`). CASCADE is Postgres-only. */
|
|
186
|
+
dropSchema(name: string, cascade = false): this {
|
|
187
|
+
return this.#schemaStmt({
|
|
188
|
+
kind: "dropSchema",
|
|
189
|
+
name,
|
|
190
|
+
ifExists: false,
|
|
191
|
+
cascade,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** `DROP SCHEMA IF EXISTS [CASCADE]` (Lucid/Knex `dropSchemaIfExists`). */
|
|
196
|
+
dropSchemaIfExists(name: string, cascade = false): this {
|
|
197
|
+
return this.#schemaStmt({
|
|
198
|
+
kind: "dropSchema",
|
|
199
|
+
name,
|
|
200
|
+
ifExists: true,
|
|
201
|
+
cascade,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** Compile a schema-level DDL spec and queue it. */
|
|
206
|
+
#schemaStmt(spec: object): this {
|
|
207
|
+
const { statements } = compileStatementNative(spec, this.#dialect);
|
|
208
|
+
this.#statements.push(...statements);
|
|
209
|
+
return this;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* `CREATE TABLE new LIKE old` (Lucid/Knex `createTableLike`) — copy a table's
|
|
214
|
+
* structure. Postgres copies everything (`INCLUDING ALL`), MySQL uses `LIKE`,
|
|
215
|
+
* SQLite copies COLUMNS ONLY (`AS SELECT … WHERE 0` — no constraints/indexes,
|
|
216
|
+
* the same limitation Knex documents).
|
|
217
|
+
*/
|
|
218
|
+
createTableLike(
|
|
219
|
+
name: string,
|
|
220
|
+
likeTable: string,
|
|
221
|
+
callback?: (table: TableBuilder) => void,
|
|
222
|
+
): this {
|
|
223
|
+
this.#schemaStmt({
|
|
224
|
+
kind: "createTableLike",
|
|
225
|
+
table: this.#qualify(name),
|
|
226
|
+
likeTable: this.#qualify(likeTable),
|
|
227
|
+
ifNotExists: false,
|
|
228
|
+
});
|
|
229
|
+
// Lucid's optional callback adds columns to the copied table — emit them as
|
|
230
|
+
// a follow-up ALTER TABLE (the copy exists by the time it runs).
|
|
231
|
+
if (callback) this.alterTable(name, callback);
|
|
232
|
+
return this;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* `ALTER VIEW` (Lucid/Knex `alterView`) — rename a view's columns via the
|
|
237
|
+
* callback (`view.column('id').rename('user_id')`). Postgres only: MySQL/SQLite
|
|
238
|
+
* can't rename view columns in place, so drop and re-create the view there.
|
|
239
|
+
*/
|
|
240
|
+
alterView(name: string, callback: (view: AlterViewBuilder) => void): this {
|
|
241
|
+
const builder = new AlterViewBuilder();
|
|
242
|
+
callback(builder);
|
|
243
|
+
return this.#schemaStmt({
|
|
244
|
+
kind: "alterView",
|
|
245
|
+
view: this.#qualify(name),
|
|
246
|
+
renames: builder.renames,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/** Alias of {@link alterView} (Lucid/Knex `view`). */
|
|
251
|
+
view(name: string, callback: (view: AlterViewBuilder) => void): this {
|
|
252
|
+
return this.alterView(name, callback);
|
|
253
|
+
}
|
|
254
|
+
|
|
161
255
|
createIndex(
|
|
162
256
|
table: string,
|
|
163
257
|
columns: string | string[],
|
|
@@ -221,29 +315,67 @@ export class Schema {
|
|
|
221
315
|
return this.#pushView(name, select, { ...options, materialized: true });
|
|
222
316
|
}
|
|
223
317
|
|
|
224
|
-
/** `DROP VIEW
|
|
318
|
+
/** `DROP VIEW` — errors if missing (Lucid/Knex `dropView`). */
|
|
225
319
|
dropView(name: string): this {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
this.#
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
320
|
+
return this.#schemaStmt({
|
|
321
|
+
kind: "dropView",
|
|
322
|
+
name: this.#qualify(name),
|
|
323
|
+
ifExists: false,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/** `DROP VIEW IF EXISTS` — a no-op when missing (Lucid/Knex `dropViewIfExists`). */
|
|
328
|
+
dropViewIfExists(name: string): this {
|
|
329
|
+
return this.#schemaStmt({
|
|
330
|
+
kind: "dropView",
|
|
331
|
+
name: this.#qualify(name),
|
|
332
|
+
ifExists: true,
|
|
333
|
+
});
|
|
232
334
|
}
|
|
233
335
|
|
|
234
|
-
/** `DROP MATERIALIZED VIEW
|
|
336
|
+
/** `DROP MATERIALIZED VIEW` (Lucid/Knex). Postgres-only. */
|
|
235
337
|
dropMaterializedView(name: string): this {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return this
|
|
338
|
+
return this.#schemaStmt({
|
|
339
|
+
kind: "dropView",
|
|
340
|
+
name: this.#qualify(name),
|
|
341
|
+
ifExists: false,
|
|
342
|
+
materialized: true,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/** `DROP MATERIALIZED VIEW IF EXISTS` (Lucid/Knex). Postgres-only. */
|
|
347
|
+
dropMaterializedViewIfExists(name: string): this {
|
|
348
|
+
return this.#schemaStmt({
|
|
349
|
+
kind: "dropView",
|
|
350
|
+
name: this.#qualify(name),
|
|
351
|
+
ifExists: true,
|
|
352
|
+
materialized: true,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Rename a view (Lucid/Knex `renameView`). Postgres `ALTER VIEW … RENAME TO`,
|
|
358
|
+
* MySQL `RENAME TABLE`; SQLite can't rename a view (drop and re-create).
|
|
359
|
+
*/
|
|
360
|
+
renameView(from: string, to: string): this {
|
|
361
|
+
return this.#schemaStmt({
|
|
362
|
+
kind: "renameView",
|
|
363
|
+
from: this.#qualify(from),
|
|
364
|
+
to: this.#qualify(to),
|
|
365
|
+
materialized: false,
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* `REFRESH MATERIALIZED VIEW [CONCURRENTLY]` (Lucid/Knex
|
|
371
|
+
* `refreshMaterializedView`). Postgres-only.
|
|
372
|
+
*/
|
|
373
|
+
refreshMaterializedView(name: string, concurrently = false): this {
|
|
374
|
+
return this.#schemaStmt({
|
|
375
|
+
kind: "refreshMaterializedView",
|
|
376
|
+
name: this.#qualify(name),
|
|
377
|
+
concurrently,
|
|
378
|
+
});
|
|
247
379
|
}
|
|
248
380
|
|
|
249
381
|
#pushView(
|
|
@@ -283,3 +415,20 @@ export class Schema {
|
|
|
283
415
|
return [...this.#statements];
|
|
284
416
|
}
|
|
285
417
|
}
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Callback builder for {@link Schema.alterView} — collects column renames
|
|
421
|
+
* (Adonis Lucid `view.column('id').rename('user_id')`).
|
|
422
|
+
*/
|
|
423
|
+
export class AlterViewBuilder {
|
|
424
|
+
readonly renames: Array<{ from: string; to: string }> = [];
|
|
425
|
+
|
|
426
|
+
/** Target a view column; `.rename(to)` queues its rename. */
|
|
427
|
+
column(name: string): { rename(to: string): void } {
|
|
428
|
+
return {
|
|
429
|
+
rename: (to: string): void => {
|
|
430
|
+
this.renames.push({ from: name, to });
|
|
431
|
+
},
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
}
|