@c9up/atlas 0.1.19 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +55 -14
  2. package/db.darwin-arm64.node +0 -0
  3. package/db.darwin-x64.node +0 -0
  4. package/db.linux-arm64-gnu.node +0 -0
  5. package/db.linux-x64-gnu.node +0 -0
  6. package/db.win32-x64-msvc.node +0 -0
  7. package/dist/AtlasProvider.d.ts +6 -0
  8. package/dist/AtlasProvider.d.ts.map +1 -1
  9. package/dist/AtlasProvider.js +2 -2
  10. package/dist/AtlasProvider.js.map +1 -1
  11. package/dist/BaseEntity.d.ts +164 -5
  12. package/dist/BaseEntity.d.ts.map +1 -1
  13. package/dist/BaseEntity.js +339 -33
  14. package/dist/BaseEntity.js.map +1 -1
  15. package/dist/BaseModel.d.ts +91 -0
  16. package/dist/BaseModel.d.ts.map +1 -0
  17. package/dist/BaseModel.js +193 -0
  18. package/dist/BaseModel.js.map +1 -0
  19. package/dist/BaseRepository.d.ts +71 -15
  20. package/dist/BaseRepository.d.ts.map +1 -1
  21. package/dist/BaseRepository.js +1355 -384
  22. package/dist/BaseRepository.js.map +1 -1
  23. package/dist/ModelQuery.d.ts +341 -18
  24. package/dist/ModelQuery.d.ts.map +1 -1
  25. package/dist/ModelQuery.js +1406 -177
  26. package/dist/ModelQuery.js.map +1 -1
  27. package/dist/Transaction.d.ts +17 -0
  28. package/dist/Transaction.d.ts.map +1 -1
  29. package/dist/Transaction.js +57 -5
  30. package/dist/Transaction.js.map +1 -1
  31. package/dist/adapters/NapiDbAdapter.d.ts +33 -4
  32. package/dist/adapters/NapiDbAdapter.d.ts.map +1 -1
  33. package/dist/adapters/NapiDbAdapter.js +101 -11
  34. package/dist/adapters/NapiDbAdapter.js.map +1 -1
  35. package/dist/console/migrationCommands.d.ts +48 -0
  36. package/dist/console/migrationCommands.d.ts.map +1 -0
  37. package/dist/console/migrationCommands.js +220 -0
  38. package/dist/console/migrationCommands.js.map +1 -0
  39. package/dist/decorators/entity.d.ts +37 -6
  40. package/dist/decorators/entity.d.ts.map +1 -1
  41. package/dist/decorators/entity.js +32 -2
  42. package/dist/decorators/entity.js.map +1 -1
  43. package/dist/events.d.ts +64 -0
  44. package/dist/events.d.ts.map +1 -0
  45. package/dist/events.js +82 -0
  46. package/dist/events.js.map +1 -0
  47. package/dist/index.d.ts +5 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/metadata-keys.d.ts +3 -2
  52. package/dist/metadata-keys.d.ts.map +1 -1
  53. package/dist/naming/NamingStrategy.d.ts +7 -0
  54. package/dist/naming/NamingStrategy.d.ts.map +1 -1
  55. package/dist/naming/NamingStrategy.js +16 -0
  56. package/dist/naming/NamingStrategy.js.map +1 -1
  57. package/dist/schema/Migration.d.ts +26 -3
  58. package/dist/schema/Migration.d.ts.map +1 -1
  59. package/dist/schema/Migration.js +33 -24
  60. package/dist/schema/Migration.js.map +1 -1
  61. package/dist/schema/MigrationRunner.d.ts +43 -32
  62. package/dist/schema/MigrationRunner.d.ts.map +1 -1
  63. package/dist/schema/MigrationRunner.js +211 -26
  64. package/dist/schema/MigrationRunner.js.map +1 -1
  65. package/dist/schema/Schema.d.ts +57 -0
  66. package/dist/schema/Schema.d.ts.map +1 -1
  67. package/dist/schema/Schema.js +138 -3
  68. package/dist/schema/Schema.js.map +1 -1
  69. package/dist/schema/TableBuilder.d.ts +247 -8
  70. package/dist/schema/TableBuilder.d.ts.map +1 -1
  71. package/dist/schema/TableBuilder.js +607 -41
  72. package/dist/schema/TableBuilder.js.map +1 -1
  73. package/dist/schema/catalog.d.ts +47 -0
  74. package/dist/schema/catalog.d.ts.map +1 -0
  75. package/dist/schema/catalog.js +111 -0
  76. package/dist/schema/catalog.js.map +1 -0
  77. package/dist/schema/types.d.ts +150 -1
  78. package/dist/schema/types.d.ts.map +1 -1
  79. package/dist/schema/types.js +11 -0
  80. package/dist/schema/types.js.map +1 -1
  81. package/dist/services/db.d.ts +6 -0
  82. package/dist/services/db.d.ts.map +1 -1
  83. package/dist/services/db.js +17 -0
  84. package/dist/services/db.js.map +1 -1
  85. package/dist/testing/DatabaseCleanup.d.ts +7 -4
  86. package/dist/testing/DatabaseCleanup.d.ts.map +1 -1
  87. package/dist/testing/DatabaseCleanup.js +21 -18
  88. package/dist/testing/DatabaseCleanup.js.map +1 -1
  89. package/dist/testing/Factory.d.ts +70 -5
  90. package/dist/testing/Factory.d.ts.map +1 -1
  91. package/dist/testing/Factory.js +209 -10
  92. package/dist/testing/Factory.js.map +1 -1
  93. package/index.darwin-arm64.node +0 -0
  94. package/index.darwin-x64.node +0 -0
  95. package/index.linux-arm64-gnu.node +0 -0
  96. package/index.linux-x64-gnu.node +0 -0
  97. package/index.win32-x64-msvc.node +0 -0
  98. package/package.json +3 -1
  99. package/scripts/guard-publish.mjs +15 -0
  100. package/src/AtlasProvider.ts +8 -1
  101. package/src/BaseEntity.ts +431 -41
  102. package/src/BaseModel.ts +324 -0
  103. package/src/BaseRepository.ts +1589 -419
  104. package/src/ModelQuery.ts +1817 -203
  105. package/src/Transaction.ts +68 -5
  106. package/src/adapters/NapiDbAdapter.ts +159 -10
  107. package/src/console/migrationCommands.ts +258 -0
  108. package/src/decorators/entity.ts +53 -6
  109. package/src/events.ts +112 -0
  110. package/src/index.ts +19 -0
  111. package/src/metadata-keys.ts +3 -2
  112. package/src/naming/NamingStrategy.ts +23 -0
  113. package/src/schema/Migration.ts +42 -3
  114. package/src/schema/MigrationRunner.ts +270 -27
  115. package/src/schema/Schema.ts +210 -3
  116. package/src/schema/TableBuilder.ts +735 -41
  117. package/src/schema/catalog.ts +166 -0
  118. package/src/schema/types.ts +137 -2
  119. package/src/services/db.ts +28 -0
  120. package/src/testing/DatabaseCleanup.ts +23 -22
  121. package/src/testing/Factory.ts +332 -15
@@ -1 +1 @@
1
- {"version":3,"file":"TableBuilder.js","sourceRoot":"","sources":["../../src/schema/TableBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableBuilder.js","sourceRoot":"","sources":["../../src/schema/TableBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Dialect-aware catalog queries — "which base tables exist right now".
3
+ *
4
+ * The single source of truth for listing user tables, shared by the migration
5
+ * runner's drop/wipe and the test-time `truncateAll`. Each query hits the
6
+ * dialect's own catalog (`sqlite_master`, `pg_tables`, `information_schema`);
7
+ * they are framework introspection, not user queries, so they stay raw SQL.
8
+ */
9
+ import type { AtlasDialect } from "../query/native.js";
10
+ /**
11
+ * The minimal connection surface these helpers need — just `query`/`execute`.
12
+ * Narrower than `AsyncDatabaseConnection` on purpose, so the migration runner's
13
+ * `DatabaseAdapter` (which has no `dialect`/`ping`) satisfies it too.
14
+ */
15
+ export interface CatalogConnection {
16
+ query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]>;
17
+ execute(sql: string, params?: unknown[]): Promise<unknown>;
18
+ }
19
+ export interface ListTablesOptions {
20
+ /**
21
+ * Include `ream_*` framework tables (the migrations table). Off by default
22
+ * so cleanup helpers leave the bookkeeping intact; `fresh()` turns it on
23
+ * because it re-creates the tracking table afterwards.
24
+ */
25
+ includeFrameworkTables?: boolean;
26
+ }
27
+ /** List every base table in the current schema/database, for `dialect`. */
28
+ export declare function listUserTables(db: CatalogConnection, dialect: AtlasDialect, options?: ListTablesOptions): Promise<string[]>;
29
+ /**
30
+ * Does base table `name` exist right now, for `dialect`? The name is passed as a
31
+ * bound parameter (never interpolated) so this is injection-safe on every
32
+ * dialect. Backs `Schema.hasTable` (Adonis Lucid parity).
33
+ */
34
+ export declare function tableExists(db: CatalogConnection, dialect: AtlasDialect, name: string): Promise<boolean>;
35
+ /**
36
+ * Does column `column` exist on table `table` right now, for `dialect`? Both
37
+ * names are bound parameters. Backs `Schema.hasColumn` (Adonis Lucid parity).
38
+ */
39
+ export declare function columnExists(db: CatalogConnection, dialect: AtlasDialect, table: string, column: string): Promise<boolean>;
40
+ /**
41
+ * Run `fn` with foreign-key enforcement suspended, then restore it — the toggle
42
+ * runs even if `fn` throws. Lets a bulk drop/truncate ignore inter-table FK
43
+ * order. Postgres has no session-level switch (it uses `TRUNCATE … CASCADE` /
44
+ * `DROP … CASCADE` instead), so this is a no-op there.
45
+ */
46
+ export declare function withoutForeignKeys<T>(db: CatalogConnection, dialect: AtlasDialect, fn: () => Promise<T>): Promise<T>;
47
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/schema/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAGhB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;AAQD,MAAM,WAAW,iBAAiB;IACjC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,2EAA2E;AAC3E,wBAAsB,cAAc,CACnC,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAChC,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CACjC,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACzC,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Dialect-aware catalog queries — "which base tables exist right now".
3
+ *
4
+ * The single source of truth for listing user tables, shared by the migration
5
+ * runner's drop/wipe and the test-time `truncateAll`. Each query hits the
6
+ * dialect's own catalog (`sqlite_master`, `pg_tables`, `information_schema`);
7
+ * they are framework introspection, not user queries, so they stay raw SQL.
8
+ */
9
+ /**
10
+ * Prefix for framework-private tables (migrations bookkeeping), following the
11
+ * same `ream_`-prefix convention as AdonisJS's `adonis_`.
12
+ */
13
+ const FRAMEWORK_PREFIX = "ream_";
14
+ /** List every base table in the current schema/database, for `dialect`. */
15
+ export async function listUserTables(db, dialect, options = {}) {
16
+ let sql;
17
+ switch (dialect) {
18
+ case "sqlite":
19
+ sql =
20
+ "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'";
21
+ break;
22
+ case "postgres":
23
+ sql =
24
+ "SELECT tablename AS name FROM pg_tables WHERE schemaname = current_schema()";
25
+ break;
26
+ case "mysql":
27
+ sql =
28
+ "SELECT table_name AS name FROM information_schema.tables WHERE table_schema = DATABASE() AND table_type = 'BASE TABLE'";
29
+ break;
30
+ }
31
+ const rows = await db.query(sql);
32
+ const names = [];
33
+ for (const row of rows) {
34
+ if (typeof row.name !== "string")
35
+ continue;
36
+ if (!options.includeFrameworkTables &&
37
+ row.name.startsWith(FRAMEWORK_PREFIX)) {
38
+ continue;
39
+ }
40
+ names.push(row.name);
41
+ }
42
+ return names;
43
+ }
44
+ /**
45
+ * Does base table `name` exist right now, for `dialect`? The name is passed as a
46
+ * bound parameter (never interpolated) so this is injection-safe on every
47
+ * dialect. Backs `Schema.hasTable` (Adonis Lucid parity).
48
+ */
49
+ export async function tableExists(db, dialect, name) {
50
+ const ph = dialect === "postgres" ? "$1" : "?";
51
+ let sql;
52
+ switch (dialect) {
53
+ case "sqlite":
54
+ sql = `SELECT 1 FROM sqlite_master WHERE type='table' AND name = ${ph}`;
55
+ break;
56
+ case "postgres":
57
+ sql = `SELECT 1 FROM pg_tables WHERE schemaname = current_schema() AND tablename = ${ph}`;
58
+ break;
59
+ case "mysql":
60
+ sql = `SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = ${ph} AND table_type = 'BASE TABLE'`;
61
+ break;
62
+ }
63
+ const rows = await db.query(sql, [name]);
64
+ return rows.length > 0;
65
+ }
66
+ /**
67
+ * Does column `column` exist on table `table` right now, for `dialect`? Both
68
+ * names are bound parameters. Backs `Schema.hasColumn` (Adonis Lucid parity).
69
+ */
70
+ export async function columnExists(db, dialect, table, column) {
71
+ if (dialect === "sqlite") {
72
+ // PRAGMA introspection via the table-valued function form, which accepts a
73
+ // bound table-name argument (unlike `PRAGMA table_info(x)`).
74
+ const rows = await db.query("SELECT 1 FROM pragma_table_info(?) WHERE name = ?", [table, column]);
75
+ return rows.length > 0;
76
+ }
77
+ const [p1, p2] = dialect === "postgres" ? ["$1", "$2"] : ["?", "?"];
78
+ const schemaPredicate = dialect === "postgres"
79
+ ? "table_schema = current_schema()"
80
+ : "table_schema = DATABASE()";
81
+ const rows = await db.query(`SELECT 1 FROM information_schema.columns WHERE ${schemaPredicate} AND table_name = ${p1} AND column_name = ${p2}`, [table, column]);
82
+ return rows.length > 0;
83
+ }
84
+ /**
85
+ * Run `fn` with foreign-key enforcement suspended, then restore it — the toggle
86
+ * runs even if `fn` throws. Lets a bulk drop/truncate ignore inter-table FK
87
+ * order. Postgres has no session-level switch (it uses `TRUNCATE … CASCADE` /
88
+ * `DROP … CASCADE` instead), so this is a no-op there.
89
+ */
90
+ export async function withoutForeignKeys(db, dialect, fn) {
91
+ const off = dialect === "sqlite"
92
+ ? "PRAGMA foreign_keys = OFF"
93
+ : dialect === "mysql"
94
+ ? "SET FOREIGN_KEY_CHECKS = 0"
95
+ : null;
96
+ const on = dialect === "sqlite"
97
+ ? "PRAGMA foreign_keys = ON"
98
+ : dialect === "mysql"
99
+ ? "SET FOREIGN_KEY_CHECKS = 1"
100
+ : null;
101
+ if (off)
102
+ await db.execute(off);
103
+ try {
104
+ return await fn();
105
+ }
106
+ finally {
107
+ if (on)
108
+ await db.execute(on);
109
+ }
110
+ }
111
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/schema/catalog.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,16 @@
2
2
  * Shared schema types — column type names, definitions, and the
3
3
  * mapping from logical TS types to the Rust ColumnTypeKind.
4
4
  */
5
- export type ColumnType = "string" | "text" | "integer" | "bigInteger" | "decimal" | "boolean" | "date" | "timestamp" | "timestamptz" | "uuid" | "json" | "binary";
5
+ export type ColumnType = "string" | "text" | "mediumtext" | "longtext" | "integer" | "tinyint" | "smallint" | "mediumint" | "bigInteger" | "decimal" | "float" | "double" | "boolean" | "date" | "time" | "timestamp" | "timestamptz" | "uuid" | "json" | "jsonb" | "binary" | "enum" | "specificType";
6
6
  /** Maps our logical type names to the ColumnTypeKind expected by the Rust compiler. */
7
7
  export declare const TYPE_KIND_MAP: Record<ColumnType, string>;
8
+ /** MySQL text width (Lucid/Knex `text(name, textType)`). `TEXT` on pg/sqlite. */
9
+ export type TextVariant = "text" | "mediumtext" | "longtext";
10
+ /**
11
+ * SQL referential action for a foreign key's `ON DELETE` / `ON UPDATE`
12
+ * (Lucid parity). Validated case-insensitively by the Rust compiler.
13
+ */
14
+ export type ReferentialAction = "cascade" | "restrict" | "set null" | "set default" | "no action";
8
15
  export interface ColumnDefinition {
9
16
  name: string;
10
17
  type: ColumnType;
@@ -16,10 +23,28 @@ export interface ColumnDefinition {
16
23
  /** Dialect-appropriate auto-increment / identity column (Lucid `increments`). Implies primary key. */
17
24
  autoIncrement?: boolean;
18
25
  unique: boolean;
26
+ /** MySQL `UNSIGNED` numeric modifier (Lucid `unsigned()`). No-op on pg/sqlite. */
27
+ unsigned?: boolean;
28
+ /** Allowed values for an `enum` column. */
29
+ values?: string[];
30
+ /**
31
+ * Verbatim SQL type for a `specificType` column. Validated by the Rust
32
+ * compiler against a narrow grammar before it reaches DDL — it is
33
+ * interpolated, not bound.
34
+ */
35
+ rawType?: string;
36
+ /** Column comment. Inline on MySQL, `COMMENT ON COLUMN` on pg, dropped on SQLite. */
37
+ comment?: string;
38
+ /** Column collation, e.g. `utf8mb4_unicode_ci`. Validated as an identifier. */
39
+ collate?: string;
40
+ /** MySQL-only placement of an added column (`FIRST` / `AFTER col`). */
41
+ position?: ColumnPosition;
19
42
  defaultValue?: string;
20
43
  references?: {
21
44
  table: string;
22
45
  column: string;
46
+ onDelete?: ReferentialAction;
47
+ onUpdate?: ReferentialAction;
23
48
  };
24
49
  }
25
50
  export interface IndexDefinition {
@@ -27,4 +52,128 @@ export interface IndexDefinition {
27
52
  columns: string[];
28
53
  unique: boolean;
29
54
  }
55
+ /** MySQL-only placement of an added column. Mirrors the Rust `ColumnPosition`. */
56
+ export type ColumnPosition = {
57
+ at: "first";
58
+ } | {
59
+ at: "after";
60
+ column: string;
61
+ };
62
+ /** A scalar a CHECK constraint can compare against. DDL cannot bind params — these are quoted, not bound. */
63
+ export type CheckValue = string | number | boolean | null;
64
+ /**
65
+ * A CHECK predicate. Structured rather than free-form SQL so each variant is
66
+ * safe by construction; `raw` is the escape hatch and is exactly as trusted as
67
+ * `schema.raw()`. Mirrors the Rust `CheckExpr` tagged union.
68
+ */
69
+ export type CheckExpression = {
70
+ check: "positive";
71
+ column: string;
72
+ } | {
73
+ check: "negative";
74
+ column: string;
75
+ } | {
76
+ check: "in";
77
+ column: string;
78
+ values: CheckValue[];
79
+ } | {
80
+ check: "notIn";
81
+ column: string;
82
+ values: CheckValue[];
83
+ } | {
84
+ check: "between";
85
+ column: string;
86
+ ranges: CheckValue[][];
87
+ } | {
88
+ check: "length";
89
+ column: string;
90
+ operator: string;
91
+ length: number;
92
+ } | {
93
+ check: "regex";
94
+ column: string;
95
+ pattern: string;
96
+ } | {
97
+ check: "raw";
98
+ predicate: string;
99
+ };
100
+ /** Comparison operator accepted by `checkLength` (Lucid/Knex). */
101
+ export type CheckOperator = "=" | "!=" | "<>" | "<" | "<=" | ">" | ">=";
102
+ /** A multi-column foreign key target. Mirrors the Rust `ForeignKeyRefMulti`. */
103
+ export interface ForeignKeyReference {
104
+ table: string;
105
+ columns: string[];
106
+ onDelete?: ReferentialAction;
107
+ onUpdate?: ReferentialAction;
108
+ }
109
+ /** A table-level constraint. Mirrors the Rust `TableConstraint` tagged union. */
110
+ export type TableConstraintSpec = {
111
+ constraint: "primary";
112
+ name?: string;
113
+ columns: string[];
114
+ } | {
115
+ constraint: "unique";
116
+ name?: string;
117
+ columns: string[];
118
+ } | {
119
+ constraint: "foreign";
120
+ name?: string;
121
+ columns: string[];
122
+ references: ForeignKeyReference;
123
+ } | {
124
+ constraint: "check";
125
+ name?: string;
126
+ expr: CheckExpression;
127
+ };
128
+ /** Storage options for `CREATE TABLE`. Mirrors the Rust `TableOptions`. */
129
+ export interface TableOptionsSpec {
130
+ engine?: string;
131
+ charset?: string;
132
+ collate?: string;
133
+ comment?: string;
134
+ }
135
+ /**
136
+ * One ALTER TABLE operation, in call order (Lucid/Knex semantics). Mirrors the
137
+ * Rust `AlterOp` tagged union — the `op` tags and field names are the wire
138
+ * contract with `compile_alter_table`.
139
+ */
140
+ export type AlterOperation = {
141
+ op: "addColumn";
142
+ column: ColumnDefinition;
143
+ } | {
144
+ op: "dropColumn";
145
+ name: string;
146
+ } | {
147
+ op: "renameColumn";
148
+ from: string;
149
+ to: string;
150
+ } | {
151
+ op: "alterColumn";
152
+ column: ColumnDefinition;
153
+ /**
154
+ * Tri-state. `undefined` leaves nullability untouched so a bare type
155
+ * change never silently adds a NOT NULL — only an explicit
156
+ * `.nullable()` / `.notNullable()` before `.alter()` sets it.
157
+ */
158
+ setNullable?: boolean;
159
+ } | {
160
+ op: "setNullable";
161
+ name: string;
162
+ nullable: boolean;
163
+ } | {
164
+ op: "addConstraint";
165
+ constraint: TableConstraintSpec;
166
+ } | {
167
+ op: "dropConstraint";
168
+ name: string;
169
+ } | {
170
+ op: "dropPrimary";
171
+ name?: string;
172
+ } | {
173
+ op: "dropUnique";
174
+ name: string;
175
+ } | {
176
+ op: "dropForeign";
177
+ name: string;
178
+ };
30
179
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,GACnB,QAAQ,GACR,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,SAAS,GACT,MAAM,GACN,WAAW,GACX,aAAa,GACb,MAAM,GACN,MAAM,GACN,QAAQ,CAAC;AAEZ,uFAAuF;AACvF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAapD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,sGAAsG;IACtG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,26 @@
6
6
  export const TYPE_KIND_MAP = {
7
7
  string: "string",
8
8
  text: "text",
9
+ mediumtext: "mediumText",
10
+ longtext: "longText",
9
11
  integer: "integer",
12
+ tinyint: "tinyInt",
13
+ smallint: "smallInt",
14
+ mediumint: "mediumInt",
10
15
  bigInteger: "bigInteger",
11
16
  decimal: "decimal",
17
+ float: "float",
18
+ double: "double",
12
19
  boolean: "boolean",
13
20
  date: "date",
21
+ time: "time",
14
22
  timestamp: "timestamp",
15
23
  timestamptz: "timestamptz",
16
24
  uuid: "uuid",
17
25
  json: "json",
26
+ jsonb: "jsonb",
18
27
  binary: "binary",
28
+ enum: "enum",
29
+ specificType: "specificType",
19
30
  };
20
31
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAA+B;IACxD,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CAChB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2BH,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAA+B;IACxD,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,cAAc;CAC5B,CAAC"}
@@ -35,6 +35,12 @@ export declare function setDb(connection: AsyncDatabaseConnection): void;
35
35
  export declare function clearDb(connection: AsyncDatabaseConnection): void;
36
36
  /** @internal Read the singleton (or `undefined` pre-boot). */
37
37
  export declare function getDb(): AsyncDatabaseConnection | undefined;
38
+ /** @internal Register a named connection (called by AtlasProvider.boot per connection). */
39
+ export declare function registerConnection(name: string, connection: AsyncDatabaseConnection): void;
40
+ /** @internal Unregister a named connection IF it still points at `connection`. */
41
+ export declare function unregisterConnection(name: string, connection: AsyncDatabaseConnection): void;
42
+ /** @internal Resolve a named connection (for `BaseModel.connection`), or `undefined`. */
43
+ export declare function getConnection(name: string): AsyncDatabaseConnection | undefined;
38
44
  declare const db: DbService;
39
45
  export default db;
40
46
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,mGAAmG;AACnG,MAAM,WAAW,SAAU,SAAQ,uBAAuB;IACzD;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;CAC7C;AAID,8DAA8D;AAC9D,wBAAgB,KAAK,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAEjE;AAED,8DAA8D;AAC9D,wBAAgB,KAAK,IAAI,uBAAuB,GAAG,SAAS,CAE3D;AAED,QAAA,MAAM,EAAE,EAAE,SAiBR,CAAC;AAEH,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,mGAAmG;AACnG,MAAM,WAAW,SAAU,SAAQ,uBAAuB;IACzD;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;CAC7C;AAID,8DAA8D;AAC9D,wBAAgB,KAAK,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAEjE;AAED,8DAA8D;AAC9D,wBAAgB,KAAK,IAAI,uBAAuB,GAAG,SAAS,CAE3D;AAOD,2FAA2F;AAC3F,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,uBAAuB,GACjC,IAAI,CAEN;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,uBAAuB,GACjC,IAAI,CAEN;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAC5B,IAAI,EAAE,MAAM,GACV,uBAAuB,GAAG,SAAS,CAErC;AAED,QAAA,MAAM,EAAE,EAAE,SAiBR,CAAC;AAEH,eAAe,EAAE,CAAC"}
@@ -32,6 +32,23 @@ export function clearDb(connection) {
32
32
  export function getDb() {
33
33
  return instance;
34
34
  }
35
+ // Named-connection registry — backs `BaseModel.connection = 'analytics'` so a
36
+ // model can resolve a non-default connection from a plain import (AdonisJS
37
+ // `static connection`). Populated by AtlasProvider for every opened connection.
38
+ const namedConnections = new Map();
39
+ /** @internal Register a named connection (called by AtlasProvider.boot per connection). */
40
+ export function registerConnection(name, connection) {
41
+ namedConnections.set(name, connection);
42
+ }
43
+ /** @internal Unregister a named connection IF it still points at `connection`. */
44
+ export function unregisterConnection(name, connection) {
45
+ if (namedConnections.get(name) === connection)
46
+ namedConnections.delete(name);
47
+ }
48
+ /** @internal Resolve a named connection (for `BaseModel.connection`), or `undefined`. */
49
+ export function getConnection(name) {
50
+ return namedConnections.get(name);
51
+ }
35
52
  const db = new Proxy({}, {
36
53
  get(_target, prop) {
37
54
  // `raw` is a pure builder (no connection needed) — available pre-boot too.
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAalD,IAAI,QAA6C,CAAC;AAElD,8DAA8D;AAC9D,MAAM,UAAU,KAAK,CAAC,UAAmC;IACxD,QAAQ,GAAG,UAAU,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,UAAmC;IAC1D,IAAI,QAAQ,KAAK,UAAU;QAAE,QAAQ,GAAG,SAAS,CAAC;AACnD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,KAAK;IACpB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,EAAE,GAAc,IAAI,KAAK,CAAC,EAAe,EAAE;IAChD,GAAG,CAAC,OAAO,EAAE,IAAI;QAChB,2EAA2E;QAC3E,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAW,EAAE,SAAoB,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,iEAAiE;gBAChE,gEAAgE;gBAChE,+DAA+D;gBAC/D,aAAa,CACd,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAalD,IAAI,QAA6C,CAAC;AAElD,8DAA8D;AAC9D,MAAM,UAAU,KAAK,CAAC,UAAmC;IACxD,QAAQ,GAAG,UAAU,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,UAAmC;IAC1D,IAAI,QAAQ,KAAK,UAAU;QAAE,QAAQ,GAAG,SAAS,CAAC;AACnD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,KAAK;IACpB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;AAEpE,2FAA2F;AAC3F,MAAM,UAAU,kBAAkB,CACjC,IAAY,EACZ,UAAmC;IAEnC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CACnC,IAAY,EACZ,UAAmC;IAEnC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU;QAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAC5B,IAAY;IAEZ,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,EAAE,GAAc,IAAI,KAAK,CAAC,EAAe,EAAE;IAChD,GAAG,CAAC,OAAO,EAAE,IAAI;QAChB,2EAA2E;QAC3E,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,GAAW,EAAE,SAAoB,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,iEAAiE;gBAChE,gEAAgE;gBAChE,+DAA+D;gBAC/D,aAAa,CACd,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,EAAE,CAAC"}
@@ -9,11 +9,14 @@ import type { AsyncDatabaseConnection } from "../adapters/NapiDbAdapter.js";
9
9
  */
10
10
  export declare function useTransaction(db: AsyncDatabaseConnection): Promise<() => Promise<void>>;
11
11
  /**
12
- * Truncate all user tables (excludes ream_* framework tables and SQLite internals).
12
+ * Empty every user table (leaves `ream_*` framework tables and dialect
13
+ * internals alone). Works on all three dialects — the table list comes from the
14
+ * shared dialect-aware catalog helper, not a SQLite-only `sqlite_master` query.
13
15
  *
14
- * The SELECT on `sqlite_master` is SQLite-specific introspection and is kept
15
- * as raw SQL intentionally it's not a user query. The resulting DELETEs
16
- * go through the Rust compiler.
16
+ * Foreign keys are suspended for the duration so the delete order doesn't
17
+ * matter, and restored even if a statement throws. The row removal itself goes
18
+ * through the Rust compiler (`DELETE` — cross-dialect and transaction-friendly,
19
+ * unlike `TRUNCATE` which auto-commits on MySQL).
17
20
  */
18
21
  export declare function truncateAll(db: AsyncDatabaseConnection): Promise<void>;
19
22
  //# sourceMappingURL=DatabaseCleanup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseCleanup.d.ts","sourceRoot":"","sources":["../../src/testing/DatabaseCleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAG5E;;GAEG;AACH,wBAAsB,cAAc,CACnC,EAAE,EAAE,uBAAuB,GACzB,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAM9B;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB5E"}
1
+ {"version":3,"file":"DatabaseCleanup.d.ts","sourceRoot":"","sources":["../../src/testing/DatabaseCleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAI5E;;GAEG;AACH,wBAAsB,cAAc,CACnC,EAAE,EAAE,uBAAuB,GACzB,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAM9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * @implements MISS-19
5
5
  */
6
- import { compileStatementNative, getAtlasDialect } from "../query/native.js";
6
+ import { compileStatementNative } from "../query/native.js";
7
+ import { listUserTables, withoutForeignKeys } from "../schema/catalog.js";
7
8
  /**
8
9
  * Wrap a test in a savepoint that is rolled back after.
9
10
  */
@@ -15,25 +16,27 @@ export async function useTransaction(db) {
15
16
  };
16
17
  }
17
18
  /**
18
- * Truncate all user tables (excludes ream_* framework tables and SQLite internals).
19
+ * Empty every user table (leaves `ream_*` framework tables and dialect
20
+ * internals alone). Works on all three dialects — the table list comes from the
21
+ * shared dialect-aware catalog helper, not a SQLite-only `sqlite_master` query.
19
22
  *
20
- * The SELECT on `sqlite_master` is SQLite-specific introspection and is kept
21
- * as raw SQL intentionally it's not a user query. The resulting DELETEs
22
- * go through the Rust compiler.
23
+ * Foreign keys are suspended for the duration so the delete order doesn't
24
+ * matter, and restored even if a statement throws. The row removal itself goes
25
+ * through the Rust compiler (`DELETE` — cross-dialect and transaction-friendly,
26
+ * unlike `TRUNCATE` which auto-commits on MySQL).
23
27
  */
24
28
  export async function truncateAll(db) {
25
- // SQL LIKE `_` is a single-char wildcard, not a literal underscore, so the
26
- // `ESCAPE '\'` clause makes `\_` a literal underscore. The exclusion targets
27
- // names starting with `ream_` (the convention for framework-private tables,
28
- // including `ream_migrations`) and SQLite's own `sqlite_%` tables.
29
- const tables = await db.query("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'ream\\_%' ESCAPE '\\' AND name NOT LIKE 'sqlite_%'");
30
- const dialect = getAtlasDialect();
31
- for (const row of tables) {
32
- const name = row.name;
33
- if (typeof name !== "string")
34
- continue;
35
- const compiled = compileStatementNative({ kind: "delete", table: name, wheres: [] }, dialect);
36
- await db.execute(compiled.statements[0], compiled.params);
37
- }
29
+ // The connection's own dialect, not the module default correct even when
30
+ // an app runs several connections on different engines.
31
+ const dialect = db.dialect;
32
+ const tables = await listUserTables(db, dialect);
33
+ if (tables.length === 0)
34
+ return;
35
+ await withoutForeignKeys(db, dialect, async () => {
36
+ for (const name of tables) {
37
+ const compiled = compileStatementNative({ kind: "delete", table: name, wheres: [] }, dialect);
38
+ await db.execute(compiled.statements[0], compiled.params);
39
+ }
40
+ });
38
41
  }
39
42
  //# sourceMappingURL=DatabaseCleanup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseCleanup.js","sourceRoot":"","sources":["../../src/testing/DatabaseCleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,EAA2B;IAE3B,MAAM,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC7C,OAAO,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAA2B;IAC5D,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAC5B,yHAAyH,CACzH,CAAC;IACF,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QACvC,MAAM,QAAQ,GAAG,sBAAsB,CACtC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAC3C,OAAO,CACP,CAAC;QACF,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"DatabaseCleanup.js","sourceRoot":"","sources":["../../src/testing/DatabaseCleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,EAA2B;IAE3B,MAAM,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC7C,OAAO,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAA2B;IAC5D,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;QAChD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,sBAAsB,CACtC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAC3C,OAAO,CACP,CAAC;YACF,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}