@c9up/atlas 0.1.8 → 0.1.10
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/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.map +1 -1
- package/dist/AtlasProvider.js +9 -1
- package/dist/AtlasProvider.js.map +1 -1
- package/dist/BaseEntity.d.ts +3 -12
- package/dist/BaseEntity.d.ts.map +1 -1
- package/dist/BaseEntity.js +20 -4
- package/dist/BaseEntity.js.map +1 -1
- package/dist/BaseRepository.d.ts.map +1 -1
- package/dist/BaseRepository.js +122 -110
- package/dist/BaseRepository.js.map +1 -1
- package/dist/ModelQuery.d.ts +2 -2
- package/dist/ModelQuery.d.ts.map +1 -1
- package/dist/ModelQuery.js +62 -17
- package/dist/ModelQuery.js.map +1 -1
- package/dist/adapters/NapiDbAdapter.d.ts.map +1 -1
- package/dist/adapters/NapiDbAdapter.js +7 -5
- package/dist/adapters/NapiDbAdapter.js.map +1 -1
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +5 -6
- package/dist/configure.js.map +1 -1
- package/dist/decorators/entity.d.ts +1 -1
- package/dist/decorators/entity.d.ts.map +1 -1
- package/dist/decorators/entity.js +11 -3
- package/dist/decorators/entity.js.map +1 -1
- package/dist/metadata-keys.d.ts +20 -0
- package/dist/metadata-keys.d.ts.map +1 -0
- package/dist/metadata-keys.js +13 -0
- package/dist/metadata-keys.js.map +1 -0
- package/dist/query/native.d.ts +19 -0
- package/dist/query/native.d.ts.map +1 -1
- package/dist/query/native.js +77 -2
- package/dist/query/native.js.map +1 -1
- package/dist/schema/MigrationRunner.d.ts.map +1 -1
- package/dist/schema/MigrationRunner.js +5 -2
- package/dist/schema/MigrationRunner.js.map +1 -1
- package/dist/schema/Seeder.d.ts +13 -8
- package/dist/schema/Seeder.d.ts.map +1 -1
- package/dist/schema/Seeder.js +13 -8
- package/dist/schema/Seeder.js.map +1 -1
- package/dist/services/db.d.ts +7 -0
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +10 -0
- package/dist/services/db.js.map +1 -1
- package/dist/testing/Factory.d.ts +6 -7
- package/dist/testing/Factory.d.ts.map +1 -1
- package/dist/testing/Factory.js +3 -5
- package/dist/testing/Factory.js.map +1 -1
- package/dist/utils/safePath.d.ts +7 -1
- package/dist/utils/safePath.d.ts.map +1 -1
- package/dist/utils/safePath.js +24 -1
- package/dist/utils/safePath.js.map +1 -1
- 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 +1 -1
- package/src/AtlasProvider.ts +9 -1
- package/src/BaseEntity.ts +27 -12
- package/src/BaseRepository.ts +125 -118
- package/src/ModelQuery.ts +66 -17
- package/src/adapters/NapiDbAdapter.ts +11 -8
- package/src/configure.ts +5 -6
- package/src/decorators/entity.ts +12 -4
- package/src/metadata-keys.ts +22 -0
- package/src/query/native.ts +93 -2
- package/src/schema/MigrationRunner.ts +5 -2
- package/src/schema/Seeder.ts +14 -12
- package/src/services/db.ts +10 -0
- package/src/testing/Factory.ts +9 -12
- package/src/utils/safePath.ts +27 -2
package/db.darwin-arm64.node
CHANGED
|
Binary file
|
package/db.darwin-x64.node
CHANGED
|
Binary file
|
package/db.linux-arm64-gnu.node
CHANGED
|
Binary file
|
package/db.linux-x64-gnu.node
CHANGED
|
Binary file
|
package/db.win32-x64-msvc.node
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtlasProvider.d.ts","sourceRoot":"","sources":["../src/AtlasProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE;QACV,SAAS,CACR,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,EAC5D,OAAO,EAAE,MAAM,OAAO,GACpB,IAAI,CAAC;KACR,CAAC;IACF,MAAM,EAAE;QAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB;;;EAGrB,CAAC;AAEZ,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAChC,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC5D,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,UAAU,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;;WAIG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACF;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAKrB,SAAS,CAAC,GAAG,EAAE,eAAe;gBAApB,GAAG,EAAE,eAAe;IAE1C,QAAQ;IAEF,IAAI;IAyFJ,QAAQ;
|
|
1
|
+
{"version":3,"file":"AtlasProvider.d.ts","sourceRoot":"","sources":["../src/AtlasProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE;QACV,SAAS,CACR,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,EAC5D,OAAO,EAAE,MAAM,OAAO,GACpB,IAAI,CAAC;KACR,CAAC;IACF,MAAM,EAAE;QAAE,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB;;;EAGrB,CAAC;AAEZ,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAChC,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC5D,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,UAAU,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;;WAIG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACF;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAKrB,SAAS,CAAC,GAAG,EAAE,eAAe;gBAApB,GAAG,EAAE,eAAe;IAE1C,QAAQ;IAEF,IAAI;IAyFJ,QAAQ;IAqCR,KAAK;IACL,KAAK;CAwDX"}
|
package/dist/AtlasProvider.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* const tenant1 = app.container.resolve('db:tenant1') // named
|
|
22
22
|
*/
|
|
23
23
|
import { createNapiConnection, } from "./adapters/NapiDbAdapter.js";
|
|
24
|
-
import { setAtlasDialect } from "./query/native.js";
|
|
24
|
+
import { clearCastRegistry, setAtlasDialect } from "./query/native.js";
|
|
25
25
|
import { MigrationRunner, } from "./schema/MigrationRunner.js";
|
|
26
26
|
import { dialectFromUrl } from "./utils/dialectFromUrl.js";
|
|
27
27
|
/**
|
|
@@ -130,6 +130,14 @@ export default class AtlasProvider {
|
|
|
130
130
|
const named = [...this.#connections.entries()];
|
|
131
131
|
const results = await Promise.allSettled(named.map(([, c]) => c.close()));
|
|
132
132
|
this.#connections.clear();
|
|
133
|
+
// Release the module-level singletons this provider populated at boot so a
|
|
134
|
+
// re-boot starts clean and `db.*` can't dereference a now-closed handle.
|
|
135
|
+
// `clearDb` is ownership-guarded, so clearing every connection only unbinds
|
|
136
|
+
// the one still owning the singleton.
|
|
137
|
+
const { clearDb } = await import("./services/db.js");
|
|
138
|
+
for (const [, conn] of named)
|
|
139
|
+
clearDb(conn);
|
|
140
|
+
clearCastRegistry();
|
|
133
141
|
const errors = results
|
|
134
142
|
.map((r, i) => r.status === "rejected" ? { name: named[i][0], error: r.reason } : null)
|
|
135
143
|
.filter((x) => x !== null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtlasProvider.js","sourceRoot":"","sources":["../src/AtlasProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAEN,oBAAoB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"AtlasProvider.js","sourceRoot":"","sources":["../src/AtlasProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/BaseEntity.d.ts
CHANGED
|
@@ -10,14 +10,12 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @implements FR29, FR35, stories 32.1 through 32.5
|
|
12
12
|
*/
|
|
13
|
+
import { COLUMN_SERIALIZE_KEY, COMPUTED_KEY, type ColumnSerializeConfig } from "./metadata-keys.js";
|
|
13
14
|
export interface DomainEvent {
|
|
14
15
|
name: string;
|
|
15
16
|
data: Record<string, unknown>;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
export declare const COMPUTED_KEY: unique symbol;
|
|
19
|
-
/** Symbol metadata key for the serialize-as / serializer overrides on columns. */
|
|
20
|
-
export declare const COLUMN_SERIALIZE_KEY: unique symbol;
|
|
18
|
+
export { COLUMN_SERIALIZE_KEY, COMPUTED_KEY };
|
|
21
19
|
/** Symbol property key used by entities to back-reference their hydrating repo. */
|
|
22
20
|
export declare const REPO_REF: unique symbol;
|
|
23
21
|
/** Minimal repo-back-reference interface used by `entity.refresh()` / `entity.fresh()` / `entity.loadCount()`. */
|
|
@@ -74,13 +72,7 @@ export interface ManyToManyRelationProxy extends BulkRelationProxy {
|
|
|
74
72
|
sync(target: Array<string | number> | Record<string, Record<string, unknown>>, additive?: boolean): Promise<void>;
|
|
75
73
|
}
|
|
76
74
|
export type RelationProxy = HasOneRelationProxy | HasManyRelationProxy | BelongsToRelationProxy | ManyToManyRelationProxy;
|
|
77
|
-
|
|
78
|
-
export interface ColumnSerializeConfig {
|
|
79
|
-
/** Rename this column at toJSON time (e.g. `password` → `passwordHash`). Null = hidden. */
|
|
80
|
-
serializeAs?: string | null;
|
|
81
|
-
/** Transform function applied to the value at toJSON time. */
|
|
82
|
-
serialize?: (value: unknown) => unknown;
|
|
83
|
-
}
|
|
75
|
+
export type { ColumnSerializeConfig };
|
|
84
76
|
export declare class BaseEntity {
|
|
85
77
|
#private;
|
|
86
78
|
/** Index signature — entities have dynamic column properties set by hydrate/create. */
|
|
@@ -251,5 +243,4 @@ export declare class BaseEntity {
|
|
|
251
243
|
fields?: readonly string[];
|
|
252
244
|
}): Record<string, unknown>;
|
|
253
245
|
}
|
|
254
|
-
export {};
|
|
255
246
|
//# sourceMappingURL=BaseEntity.d.ts.map
|
package/dist/BaseEntity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEntity.d.ts","sourceRoot":"","sources":["../src/BaseEntity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"BaseEntity.d.ts","sourceRoot":"","sources":["../src/BaseEntity.ts"],"names":[],"mappings":"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"}
|
package/dist/BaseEntity.js
CHANGED
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @implements FR29, FR35, stories 32.1 through 32.5
|
|
12
12
|
*/
|
|
13
|
+
import { getRelationMetadata } from "./decorators/entity.js";
|
|
13
14
|
import { MassAssignmentError } from "./errors.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
import { COLUMN_SERIALIZE_KEY, COMPUTED_KEY, } from "./metadata-keys.js";
|
|
16
|
+
// COMPUTED_KEY / COLUMN_SERIALIZE_KEY / ColumnSerializeConfig moved to
|
|
17
|
+
// ./metadata-keys.js to break the BaseEntity ↔ entity-decorator runtime cycle
|
|
18
|
+
// (fallow 2026-06-14). Re-exported here for backward compatibility.
|
|
19
|
+
export { COLUMN_SERIALIZE_KEY, COMPUTED_KEY };
|
|
18
20
|
/** Symbol property key used by entities to back-reference their hydrating repo. */
|
|
19
21
|
export const REPO_REF = Symbol.for("atlas:repoRef");
|
|
20
22
|
/**
|
|
@@ -336,6 +338,11 @@ export class BaseEntity {
|
|
|
336
338
|
const hidden = new Set(ctor.hidden ?? []);
|
|
337
339
|
const visible = ctor.visible && ctor.visible.length > 0 ? new Set(ctor.visible) : null;
|
|
338
340
|
const serializeConfig = getColumnSerializeConfig(ctor);
|
|
341
|
+
// Relation `serializeAs` overrides — a preloaded relation is a plain
|
|
342
|
+
// property on the instance, so it shows up in `Object.keys` below. Without
|
|
343
|
+
// this map the `serializeAs` declared on @HasOne/@HasMany/etc. was silently
|
|
344
|
+
// ignored (the relation always serialized under its property name).
|
|
345
|
+
const relByKey = new Map(getRelationMetadata(ctor).map((r) => [r.propertyKey, r]));
|
|
339
346
|
const result = {};
|
|
340
347
|
// Regular columns (respecting hidden/visible + serialize overrides)
|
|
341
348
|
for (const key of Object.keys(this)) {
|
|
@@ -345,6 +352,15 @@ export class BaseEntity {
|
|
|
345
352
|
continue;
|
|
346
353
|
if (hidden.has(key))
|
|
347
354
|
continue;
|
|
355
|
+
// Preloaded relation: honour its `serializeAs` (rename, or `null` hides
|
|
356
|
+
// it from the JSON). The nested entity serializes via its own toJSON.
|
|
357
|
+
const rel = relByKey.get(key);
|
|
358
|
+
if (rel) {
|
|
359
|
+
if (rel.serializeAs === null)
|
|
360
|
+
continue;
|
|
361
|
+
result[rel.serializeAs ?? key] = this[key];
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
348
364
|
const cfg = serializeConfig[key];
|
|
349
365
|
if (cfg?.serializeAs === null)
|
|
350
366
|
continue; // explicit hide
|
package/dist/BaseEntity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEntity.js","sourceRoot":"","sources":["../src/BaseEntity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseEntity.js","sourceRoot":"","sources":["../src/BaseEntity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../src/BaseRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACX,UAAU,EAEV,WAAW,EAIX,aAAa,EACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEN,iBAAiB,EAQjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,UAAU,EAA8B,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../src/BaseRepository.ts"],"names":[],"mappings":"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"}
|
package/dist/BaseRepository.js
CHANGED
|
@@ -9,7 +9,7 @@ import { getColumnMetadata, getDateColumnConfig, getEntityMetadata, getPrimaryKe
|
|
|
9
9
|
import { fireHooks } from "./decorators/hooks.js";
|
|
10
10
|
import { AtlasError, EntityNotFoundError } from "./errors.js";
|
|
11
11
|
import { ModelQuery, runWithAtlasInternalBypass } from "./ModelQuery.js";
|
|
12
|
-
import { compileStatementNative, getAtlasDialect, } from "./query/native.js";
|
|
12
|
+
import { compileStatementNative, getAtlasDialect, registerColumnCast, registerTableCasts, } from "./query/native.js";
|
|
13
13
|
import { camelToSnake, snakeToCamel } from "./utils/casing.js";
|
|
14
14
|
/**
|
|
15
15
|
* Coerce a `lastInsertRowid` to a JS number when it fits, leaving large
|
|
@@ -179,6 +179,40 @@ export class BaseRepository {
|
|
|
179
179
|
// Postgres cast hints: sqlx binds JS strings as `text`, which Postgres
|
|
180
180
|
// won't coerce to timestamp/uuid/date. See `computeCastTypes`.
|
|
181
181
|
this.#castTypes = computeCastTypes(entityClass);
|
|
182
|
+
// Publish this table's casts to the compile-time registry so EVERY
|
|
183
|
+
// statement on this table — including the fluent `ModelQuery` and relation
|
|
184
|
+
// loaders, which never receive `#castTypes` directly — gets `$N::uuid`
|
|
185
|
+
// casts on its params. Without this, `repo.query().where('id', uuid)` and
|
|
186
|
+
// relation WHEREs fail on Postgres with `operator does not exist: uuid = text`.
|
|
187
|
+
registerTableCasts(this.#tableName, this.#castTypes);
|
|
188
|
+
// Publish relation FK column casts to the (merging) registry so eager AND
|
|
189
|
+
// lazy relation WHEREs on a uuid FK get `::uuid` even when the FK column
|
|
190
|
+
// wasn't explicitly `@Column({ type })`-typed. A FK references a typed PK
|
|
191
|
+
// whose logical type we know. (m2m FKs live on the pivot table — handled
|
|
192
|
+
// separately via `pivotKeyCasts`.)
|
|
193
|
+
for (const rel of getRelationMetadata(entityClass)) {
|
|
194
|
+
if (rel.type === "manyToMany")
|
|
195
|
+
continue;
|
|
196
|
+
const related = rel.target();
|
|
197
|
+
if (rel.type === "belongsTo") {
|
|
198
|
+
// FK lives on THIS table, references the related (owner) PK.
|
|
199
|
+
const fk = rel.foreignKey ?? `${camelToSnake(related.name)}_id`;
|
|
200
|
+
const ownerKey = rel.ownerKey ?? getPrimaryKey(related) ?? "id";
|
|
201
|
+
const cast = computeCastTypes(related)[camelToSnake(ownerKey)];
|
|
202
|
+
if (cast)
|
|
203
|
+
registerColumnCast(this.#tableName, fk, cast);
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// hasOne / hasMany: FK lives on the RELATED table, references THIS PK.
|
|
207
|
+
const fk = rel.foreignKey ?? `${camelToSnake(entityClass.name)}_id`;
|
|
208
|
+
const localKey = rel.localKey ?? this.#primaryKey;
|
|
209
|
+
const cast = this.#castTypes[camelToSnake(localKey)];
|
|
210
|
+
const relatedMeta = getEntityMetadata(related);
|
|
211
|
+
if (cast && relatedMeta) {
|
|
212
|
+
registerColumnCast(relatedMeta.tableName, fk, cast);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
182
216
|
}
|
|
183
217
|
// ─── Column validation ────────────────────────────────────
|
|
184
218
|
/** Resolve a column name to snake_case. Throws on invalid column. */
|
|
@@ -212,16 +246,10 @@ export class BaseRepository {
|
|
|
212
246
|
}
|
|
213
247
|
// ─── Finders ──────────────────────────────────────────────
|
|
214
248
|
async find(id) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
this.#
|
|
219
|
-
const { sql, params } = this.#compileSelect({ wheres, limit: 1 });
|
|
220
|
-
const rows = await this.#db.query(sql, params);
|
|
221
|
-
const row = rows[0];
|
|
222
|
-
if (!row)
|
|
223
|
-
return null;
|
|
224
|
-
return this.#hydrate(row);
|
|
249
|
+
// Route through the query builder so the read hooks (beforeFind/afterFind)
|
|
250
|
+
// fire and a `beforeFind` hook can mutate the query — the previous direct
|
|
251
|
+
// `#compileSelect` fast path bypassed every read hook silently.
|
|
252
|
+
return this.query().where(this.#primaryKey, id).first();
|
|
225
253
|
}
|
|
226
254
|
async findOrFail(id) {
|
|
227
255
|
const entity = await this.find(id);
|
|
@@ -233,58 +261,31 @@ export class BaseRepository {
|
|
|
233
261
|
return entity;
|
|
234
262
|
}
|
|
235
263
|
async findBy(column, value) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
{ column: col, operator: "=", value, type: "and" },
|
|
239
|
-
];
|
|
240
|
-
this.#appendSoftScope(wheres);
|
|
241
|
-
const { sql, params } = this.#compileSelect({ wheres, limit: 1 });
|
|
242
|
-
const rows = await this.#db.query(sql, params);
|
|
243
|
-
const row = rows[0];
|
|
244
|
-
if (!row)
|
|
245
|
-
return null;
|
|
246
|
-
return this.#hydrate(row);
|
|
264
|
+
// Through the builder for read-hook parity (see `find`).
|
|
265
|
+
return this.query().where(column, value).first();
|
|
247
266
|
}
|
|
248
267
|
async all() {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
return this
|
|
268
|
+
// Through the builder so beforeFetch/afterFetch fire. The builder applies
|
|
269
|
+
// the soft-delete scope by default, exactly like the old fast path.
|
|
270
|
+
return this.query().exec();
|
|
252
271
|
}
|
|
253
272
|
async allWithTrashed() {
|
|
254
|
-
return this
|
|
273
|
+
return this.query().withTrashed().exec();
|
|
255
274
|
}
|
|
256
275
|
async onlyTrashed() {
|
|
257
276
|
if (!this.#softDeletes)
|
|
258
277
|
return [];
|
|
259
|
-
return this
|
|
260
|
-
wheres: [
|
|
261
|
-
{
|
|
262
|
-
column: "deleted_at",
|
|
263
|
-
operator: "IS NOT NULL",
|
|
264
|
-
value: null,
|
|
265
|
-
type: "and",
|
|
266
|
-
},
|
|
267
|
-
],
|
|
268
|
-
});
|
|
278
|
+
return this.query().onlyTrashed().exec();
|
|
269
279
|
}
|
|
270
280
|
async where(column, value) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
this
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// blew up on Postgres/MySQL the moment the app ran against a real driver.
|
|
280
|
-
// Using the PK works on every dialect and matches the user's actual
|
|
281
|
-
// schema — the ordering contract is "most recent first by PK" for
|
|
282
|
-
// `repo.where(col, val)` as a convenience finder.
|
|
283
|
-
const pkCol = camelToSnake(this.#primaryKey);
|
|
284
|
-
return this.#runSelect({
|
|
285
|
-
wheres,
|
|
286
|
-
orderBy: [{ column: pkCol, direction: "desc" }],
|
|
287
|
-
});
|
|
281
|
+
// Order by the primary key (DESC = most recent insert first when the PK is
|
|
282
|
+
// an auto-increment integer or a monotonic UUID). The ordering contract is
|
|
283
|
+
// "most recent first by PK" for `repo.where(col, val)` as a convenience
|
|
284
|
+
// finder. Through the builder for read-hook parity (see `find`).
|
|
285
|
+
return this.query()
|
|
286
|
+
.where(column, value)
|
|
287
|
+
.orderBy(this.#primaryKey, "desc")
|
|
288
|
+
.exec();
|
|
288
289
|
}
|
|
289
290
|
// ─── Create / Save / Delete ───────────────────────────────
|
|
290
291
|
/**
|
|
@@ -304,6 +305,7 @@ export class BaseRepository {
|
|
|
304
305
|
await this.#insert(entity);
|
|
305
306
|
await fireHooks(this.#entityClass, "afterCreate", entity);
|
|
306
307
|
await fireHooks(this.#entityClass, "afterSave", entity);
|
|
308
|
+
await this.#dispatchDomainEvents(entity);
|
|
307
309
|
return entity;
|
|
308
310
|
}
|
|
309
311
|
/**
|
|
@@ -348,6 +350,16 @@ export class BaseRepository {
|
|
|
348
350
|
}
|
|
349
351
|
}
|
|
350
352
|
await fireHooks(this.#entityClass, "afterSave", entity);
|
|
353
|
+
await this.#dispatchDomainEvents(entity);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Flush the entity's accumulated domain events through `onDomainEvents`.
|
|
357
|
+
* On dispatch failure the events are re-queued on the entity and the error
|
|
358
|
+
* propagates, so a caller can retry without losing them. Shared by `save`,
|
|
359
|
+
* `create` and `createMany` — every persistence path that produces a live
|
|
360
|
+
* entity must dispatch, otherwise events silently vanish on batch inserts.
|
|
361
|
+
*/
|
|
362
|
+
async #dispatchDomainEvents(entity) {
|
|
351
363
|
const events = entity.flushDomainEvents();
|
|
352
364
|
if (events.length > 0 && this.onDomainEvents) {
|
|
353
365
|
try {
|
|
@@ -423,6 +435,9 @@ export class BaseRepository {
|
|
|
423
435
|
await fireHooks(this.#entityClass, "afterCreate", e);
|
|
424
436
|
await fireHooks(this.#entityClass, "afterSave", e);
|
|
425
437
|
}
|
|
438
|
+
for (const e of entities) {
|
|
439
|
+
await this.#dispatchDomainEvents(e);
|
|
440
|
+
}
|
|
426
441
|
return entities;
|
|
427
442
|
}
|
|
428
443
|
/**
|
|
@@ -547,17 +562,32 @@ export class BaseRepository {
|
|
|
547
562
|
}
|
|
548
563
|
#applyConsume(propertyKey, value) {
|
|
549
564
|
const consume = this.#columnConsumes.get(propertyKey);
|
|
550
|
-
if (
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
565
|
+
if (consume) {
|
|
566
|
+
let result;
|
|
567
|
+
try {
|
|
568
|
+
result = consume(value);
|
|
569
|
+
}
|
|
570
|
+
catch (err) {
|
|
571
|
+
throw wrapAdapterError("consume", propertyKey, err);
|
|
572
|
+
}
|
|
573
|
+
assertNotPromise("consume", propertyKey, result);
|
|
574
|
+
return result;
|
|
555
575
|
}
|
|
556
|
-
|
|
557
|
-
|
|
576
|
+
// No explicit `@Column({ consume })`: a `@column.date()` / `@column.dateTime()`
|
|
577
|
+
// column hydrates its DB value (an ISO string from the Rust decode) into a
|
|
578
|
+
// JS `Date`, so `.getTime()` / date arithmetic work on read. Mirrors Adonis
|
|
579
|
+
// Lucid hydrating date columns to a Luxon `DateTime` — atlas standardises on
|
|
580
|
+
// the native `Date` (no Luxon dependency). An unparseable string is left
|
|
581
|
+
// untouched rather than turned into `Invalid Date`.
|
|
582
|
+
if (this.#dateColumns[propertyKey] &&
|
|
583
|
+
value != null &&
|
|
584
|
+
!(value instanceof Date) &&
|
|
585
|
+
(typeof value === "string" || typeof value === "number")) {
|
|
586
|
+
const d = new Date(value);
|
|
587
|
+
if (!Number.isNaN(d.getTime()))
|
|
588
|
+
return d;
|
|
558
589
|
}
|
|
559
|
-
|
|
560
|
-
return result;
|
|
590
|
+
return value;
|
|
561
591
|
}
|
|
562
592
|
#plainToRowPairs(obj) {
|
|
563
593
|
const pairs = [];
|
|
@@ -664,33 +694,6 @@ export class BaseRepository {
|
|
|
664
694
|
return this.#primaryKey;
|
|
665
695
|
}
|
|
666
696
|
// ─── Private helpers ──────────────────────────────────────
|
|
667
|
-
#compileSelect(opts) {
|
|
668
|
-
const spec = {
|
|
669
|
-
kind: "select",
|
|
670
|
-
table: this.#tableName,
|
|
671
|
-
select: ["*"],
|
|
672
|
-
wheres: opts.wheres ?? [],
|
|
673
|
-
orderBy: opts.orderBy ?? [],
|
|
674
|
-
groupBy: [],
|
|
675
|
-
having: [],
|
|
676
|
-
limit: opts.limit ?? null,
|
|
677
|
-
offset: null,
|
|
678
|
-
distinct: false,
|
|
679
|
-
ctes: [],
|
|
680
|
-
unions: [],
|
|
681
|
-
// Cast WHERE params on native-typed columns (uuid/timestamp/…) so a
|
|
682
|
-
// `WHERE id = $1` on a uuid PK emits `$1::uuid` — otherwise Postgres
|
|
683
|
-
// rejects it with `operator does not exist: uuid = text`.
|
|
684
|
-
casts: this.#castTypes,
|
|
685
|
-
};
|
|
686
|
-
const compiled = compileStatementNative(spec, this.#dialect);
|
|
687
|
-
return { sql: compiled.statements[0], params: compiled.params };
|
|
688
|
-
}
|
|
689
|
-
async #runSelect(opts) {
|
|
690
|
-
const { sql, params } = this.#compileSelect(opts);
|
|
691
|
-
const rows = await this.#db.query(sql, params);
|
|
692
|
-
return rows.map((r) => this.#hydrate(r));
|
|
693
|
-
}
|
|
694
697
|
async #runDelete(wheres) {
|
|
695
698
|
const compiled = compileStatementNative({ kind: "delete", table: this.#tableName, wheres }, this.#dialect);
|
|
696
699
|
await this.#db.execute(compiled.statements[0], compiled.params);
|
|
@@ -754,16 +757,6 @@ export class BaseRepository {
|
|
|
754
757
|
// by the caller or generated client-side as a UUID).
|
|
755
758
|
return {};
|
|
756
759
|
}
|
|
757
|
-
#appendSoftScope(wheres) {
|
|
758
|
-
if (this.#softDeletes) {
|
|
759
|
-
wheres.push({
|
|
760
|
-
column: "deleted_at",
|
|
761
|
-
operator: "IS NULL",
|
|
762
|
-
value: null,
|
|
763
|
-
type: "and",
|
|
764
|
-
});
|
|
765
|
-
}
|
|
766
|
-
}
|
|
767
760
|
async #insert(entity) {
|
|
768
761
|
// Auto-generate the PK when declared via `@PrimaryKey({ generated })`.
|
|
769
762
|
this.#applyPrimaryKeyGenerator(entity);
|
|
@@ -1020,6 +1013,10 @@ export class BaseRepository {
|
|
|
1020
1013
|
const relatedRepo = new BaseRepository(relatedClass, this.#db, {
|
|
1021
1014
|
dialect: this.#dialect,
|
|
1022
1015
|
});
|
|
1016
|
+
// Propagate the domain-event sink so entities persisted through a relation
|
|
1017
|
+
// proxy (user.related('posts').create(...)) dispatch their events too —
|
|
1018
|
+
// otherwise the related entity's events silently vanish.
|
|
1019
|
+
relatedRepo.onDomainEvents = this.onDomainEvents;
|
|
1023
1020
|
const db = this.#db;
|
|
1024
1021
|
// FK column naming: belongsTo stores the FK on THIS side; has* / m2m on the OTHER side.
|
|
1025
1022
|
const fkCol = relation.foreignKey ??
|
|
@@ -1073,13 +1070,20 @@ export class BaseRepository {
|
|
|
1073
1070
|
}
|
|
1074
1071
|
return dialect === "mysql" ? `\`${name}\`` : `"${name}"`;
|
|
1075
1072
|
};
|
|
1073
|
+
// The bound `?` carries the parent PK type (often uuid). A raw `?`
|
|
1074
|
+
// can't be cast by the structured `casts` mechanism, so emit the
|
|
1075
|
+
// `::uuid` inline — `whereRaw` rewrites `?`→`$N`, yielding `$N::uuid`.
|
|
1076
|
+
// Postgres-only; sqlite/mysql coerce. Without it: `pivotFk = $N` is
|
|
1077
|
+
// `uuid = text`.
|
|
1078
|
+
const parentPkCast = this.#castTypes[camelToSnake(this.#primaryKey)];
|
|
1079
|
+
const ph = dialect === "postgres" && parentPkCast ? `?::${parentPkCast}` : "?";
|
|
1076
1080
|
// EXISTS (SELECT 1 FROM pivot WHERE pivot.pivotFk = ? AND pivot.pivotOther = related.pk)
|
|
1077
1081
|
// Framework-internal raw fragment (identifiers already validated by
|
|
1078
1082
|
// the `quote` helper above) — bypass strict mode so this path still
|
|
1079
1083
|
// works when the user enables `setAtlasStrictMode(true)` on their app.
|
|
1080
1084
|
runWithAtlasInternalBypass(() => {
|
|
1081
1085
|
q.whereRaw(`EXISTS (SELECT 1 FROM ${quote(pivot.pivotTable)} ` +
|
|
1082
|
-
`WHERE ${quote(pivot.pivotTable)}.${quote(pivotFk)} =
|
|
1086
|
+
`WHERE ${quote(pivot.pivotTable)}.${quote(pivotFk)} = ${ph} ` +
|
|
1083
1087
|
`AND ${quote(pivot.pivotTable)}.${quote(pivotOther)} = ${quote(relatedTable)}.${quote(relatedPk)})`, [parentIdValue]);
|
|
1084
1088
|
});
|
|
1085
1089
|
}
|
|
@@ -1132,6 +1136,18 @@ export class BaseRepository {
|
|
|
1132
1136
|
const tsConfig = pivot.pivotTimestamps;
|
|
1133
1137
|
const pivotAdapters = pivot.pivotColumnAdapters;
|
|
1134
1138
|
const dialect = this.#dialect;
|
|
1139
|
+
// Postgres cast hints for the two pivot FK columns — they reference the
|
|
1140
|
+
// parent / related PK types (often uuid). The pivot table is NOT an
|
|
1141
|
+
// entity table, so the compile-time cast registry never covers it;
|
|
1142
|
+
// every pivot statement (sync's currentIds SELECT, detach DELETE, attach
|
|
1143
|
+
// INSERT) must carry these explicitly, else `pivotFk = $1` is `uuid = text`.
|
|
1144
|
+
const pivotKeyCasts = {};
|
|
1145
|
+
const parentPkCast = this.#castTypes[camelToSnake(this.#primaryKey)];
|
|
1146
|
+
if (parentPkCast)
|
|
1147
|
+
pivotKeyCasts[pivotFk] = parentPkCast;
|
|
1148
|
+
const relatedPkCast = computeCastTypes(relatedClass)[camelToSnake(getPrimaryKey(relatedClass) ?? "id")];
|
|
1149
|
+
if (relatedPkCast)
|
|
1150
|
+
pivotKeyCasts[pivotOther] = relatedPkCast;
|
|
1135
1151
|
/**
|
|
1136
1152
|
* Resolve pivot timestamp column names from the decorator config.
|
|
1137
1153
|
*
|
|
@@ -1205,6 +1221,7 @@ export class BaseRepository {
|
|
|
1205
1221
|
unions: [],
|
|
1206
1222
|
joins: [],
|
|
1207
1223
|
lockMode: null,
|
|
1224
|
+
casts: pivotKeyCasts,
|
|
1208
1225
|
};
|
|
1209
1226
|
const compiled = compileStatementNative(selectSpec, dialect);
|
|
1210
1227
|
const rows = await db.query(compiled.statements[0], compiled.params);
|
|
@@ -1230,6 +1247,7 @@ export class BaseRepository {
|
|
|
1230
1247
|
table: pivotTable,
|
|
1231
1248
|
wheres,
|
|
1232
1249
|
returning: [],
|
|
1250
|
+
casts: pivotKeyCasts,
|
|
1233
1251
|
};
|
|
1234
1252
|
const compiled = compileStatementNative(spec, dialect);
|
|
1235
1253
|
await db.execute(compiled.statements[0], compiled.params);
|
|
@@ -1288,16 +1306,10 @@ export class BaseRepository {
|
|
|
1288
1306
|
pairs.push([k, v]);
|
|
1289
1307
|
return pairs;
|
|
1290
1308
|
});
|
|
1291
|
-
// Postgres casts for the pivot row: the two FK columns
|
|
1292
|
-
//
|
|
1293
|
-
// bound strings — all need `$N::<type>` on Postgres.
|
|
1294
|
-
const pivotCasts = {};
|
|
1295
|
-
const parentPkCast = this.#castTypes[camelToSnake(this.#primaryKey)];
|
|
1296
|
-
if (parentPkCast)
|
|
1297
|
-
pivotCasts[pivotFk] = parentPkCast;
|
|
1298
|
-
const relatedPkCast = computeCastTypes(relatedClass)[camelToSnake(getPrimaryKey(relatedClass) ?? "id")];
|
|
1299
|
-
if (relatedPkCast)
|
|
1300
|
-
pivotCasts[pivotOther] = relatedPkCast;
|
|
1309
|
+
// Postgres casts for the pivot row: the two FK columns (parent /
|
|
1310
|
+
// related PK types, often uuid) reuse `pivotKeyCasts`; pivot
|
|
1311
|
+
// timestamps are bound strings — all need `$N::<type>` on Postgres.
|
|
1312
|
+
const pivotCasts = { ...pivotKeyCasts };
|
|
1301
1313
|
for (const k of Object.keys(ts))
|
|
1302
1314
|
pivotCasts[k] = "timestamp";
|
|
1303
1315
|
const spec = {
|