@c9up/atlas 0.1.18 → 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 (127) 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 +171 -7
  12. package/dist/BaseEntity.d.ts.map +1 -1
  13. package/dist/BaseEntity.js +339 -31
  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 +77 -15
  20. package/dist/BaseRepository.d.ts.map +1 -1
  21. package/dist/BaseRepository.js +1423 -354
  22. package/dist/BaseRepository.js.map +1 -1
  23. package/dist/ModelQuery.d.ts +429 -11
  24. package/dist/ModelQuery.d.ts.map +1 -1
  25. package/dist/ModelQuery.js +1733 -145
  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/SchemaCheck.d.ts.map +1 -1
  70. package/dist/schema/SchemaCheck.js +3 -1
  71. package/dist/schema/SchemaCheck.js.map +1 -1
  72. package/dist/schema/TableBuilder.d.ts +247 -8
  73. package/dist/schema/TableBuilder.d.ts.map +1 -1
  74. package/dist/schema/TableBuilder.js +607 -41
  75. package/dist/schema/TableBuilder.js.map +1 -1
  76. package/dist/schema/catalog.d.ts +47 -0
  77. package/dist/schema/catalog.d.ts.map +1 -0
  78. package/dist/schema/catalog.js +111 -0
  79. package/dist/schema/catalog.js.map +1 -0
  80. package/dist/schema/introspect.js.map +1 -1
  81. package/dist/schema/types.d.ts +150 -1
  82. package/dist/schema/types.d.ts.map +1 -1
  83. package/dist/schema/types.js +11 -0
  84. package/dist/schema/types.js.map +1 -1
  85. package/dist/services/db.d.ts +6 -0
  86. package/dist/services/db.d.ts.map +1 -1
  87. package/dist/services/db.js +17 -0
  88. package/dist/services/db.js.map +1 -1
  89. package/dist/testing/DatabaseCleanup.d.ts +7 -4
  90. package/dist/testing/DatabaseCleanup.d.ts.map +1 -1
  91. package/dist/testing/DatabaseCleanup.js +21 -18
  92. package/dist/testing/DatabaseCleanup.js.map +1 -1
  93. package/dist/testing/Factory.d.ts +70 -5
  94. package/dist/testing/Factory.d.ts.map +1 -1
  95. package/dist/testing/Factory.js +209 -10
  96. package/dist/testing/Factory.js.map +1 -1
  97. package/index.darwin-arm64.node +0 -0
  98. package/index.darwin-x64.node +0 -0
  99. package/index.linux-arm64-gnu.node +0 -0
  100. package/index.linux-x64-gnu.node +0 -0
  101. package/index.win32-x64-msvc.node +0 -0
  102. package/package.json +4 -1
  103. package/scripts/guard-publish.mjs +15 -0
  104. package/src/AtlasProvider.ts +8 -1
  105. package/src/BaseEntity.ts +449 -40
  106. package/src/BaseModel.ts +324 -0
  107. package/src/BaseRepository.ts +1659 -371
  108. package/src/ModelQuery.ts +2290 -203
  109. package/src/Transaction.ts +68 -5
  110. package/src/adapters/NapiDbAdapter.ts +159 -10
  111. package/src/console/migrationCommands.ts +258 -0
  112. package/src/decorators/entity.ts +53 -6
  113. package/src/events.ts +112 -0
  114. package/src/index.ts +19 -0
  115. package/src/metadata-keys.ts +3 -2
  116. package/src/naming/NamingStrategy.ts +23 -0
  117. package/src/schema/Migration.ts +42 -3
  118. package/src/schema/MigrationRunner.ts +270 -27
  119. package/src/schema/Schema.ts +210 -3
  120. package/src/schema/SchemaCheck.ts +7 -2
  121. package/src/schema/TableBuilder.ts +735 -41
  122. package/src/schema/catalog.ts +166 -0
  123. package/src/schema/introspect.ts +3 -4
  124. package/src/schema/types.ts +137 -2
  125. package/src/services/db.ts +28 -0
  126. package/src/testing/DatabaseCleanup.ts +23 -22
  127. package/src/testing/Factory.ts +332 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseModel.d.ts","sourceRoot":"","sources":["../src/BaseModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ import { BaseEntity } from "./BaseEntity.js";
2
+ import { BaseRepository } from "./BaseRepository.js";
3
+ import { ensureEntityMetadata } from "./decorators/entity.js";
4
+ import { AtlasError } from "./errors.js";
5
+ import { getConnection, getDb } from "./services/db.js";
6
+ import { isTransactionClient } from "./utils/transactionBrand.js";
7
+ /**
8
+ * AdonisJS Lucid–style Active Record façade. Subclass this (instead of
9
+ * `BaseEntity`) to get static finders/creators + `instance.save()/delete()`
10
+ * that delegate to a per-connection {@link BaseRepository}, while still
11
+ * inheriting `fill`/`merge`/`refresh`, dirty-tracking and the model-state flags
12
+ * (`$isPersisted`, `$isNew`, …) from BaseEntity.
13
+ *
14
+ * class User extends BaseModel {
15
+ * @PrimaryKey() declare id: number
16
+ * @Column() declare email: string
17
+ * }
18
+ * const u = await User.find(1)
19
+ * if (u) { u.email = "x@y"; await u.save() }
20
+ *
21
+ * `@Entity('table')` is OPTIONAL on a BaseModel — the table name is inferred
22
+ * from the class name via the naming strategy (or `static table`). The
23
+ * Data-Mapper `BaseRepository` remains available for those who prefer it.
24
+ */
25
+ export class BaseModel extends BaseEntity {
26
+ /** Override the inferred table name (AdonisJS `static table`). */
27
+ static table;
28
+ /** Bind to a named connection (AdonisJS `static connection`); default otherwise. */
29
+ static connection;
30
+ /** Override the primary-key column name (AdonisJS `static primaryKey`); `@PrimaryKey()` otherwise. */
31
+ static primaryKey;
32
+ /**
33
+ * Ensure `@Entity` metadata exists — infer the table name from the class name
34
+ * (naming strategy) or `static table` when the decorator is absent. Idempotent;
35
+ * runs on first repository access.
36
+ */
37
+ static $boot() {
38
+ ensureEntityMetadata(this);
39
+ }
40
+ /** Resolve this model's connection (named via `static connection`, else default). */
41
+ static $connection() {
42
+ const conn = this.connection ? getConnection(this.connection) : getDb();
43
+ if (conn === undefined) {
44
+ throw new AtlasError("MISSING_CONNECTION", this.connection
45
+ ? `No connection named '${this.connection}' is registered for model '${this.name}'.`
46
+ : `No default database connection for model '${this.name}' — is AtlasProvider booted?`, {
47
+ hint: "Boot AtlasProvider (config/database.ts) before using models, or register the named connection.",
48
+ });
49
+ }
50
+ return conn;
51
+ }
52
+ /** The {@link BaseRepository} backing this model on its resolved connection. */
53
+ static $repo() {
54
+ this.$boot();
55
+ return new BaseRepository(this, this.$connection());
56
+ }
57
+ // — Static finders (AdonisJS Lucid) —
58
+ static find(id) {
59
+ return this.$repo().find(id);
60
+ }
61
+ static findOrFail(id) {
62
+ return this.$repo().findOrFail(id);
63
+ }
64
+ static findBy(columnOrClause, value) {
65
+ return typeof columnOrClause === "string"
66
+ ? this.$repo().findBy(columnOrClause, value)
67
+ : this.$repo().findBy(columnOrClause);
68
+ }
69
+ static findByOrFail(columnOrClause, value) {
70
+ return typeof columnOrClause === "string"
71
+ ? this.$repo().findByOrFail(columnOrClause, value)
72
+ : this.$repo().findByOrFail(columnOrClause);
73
+ }
74
+ static findMany(ids) {
75
+ return this.$repo().findMany(ids);
76
+ }
77
+ static findManyBy(columnOrClause, values) {
78
+ return typeof columnOrClause === "string"
79
+ ? this.$repo().findManyBy(columnOrClause, values ?? [])
80
+ : this.$repo().findManyBy(columnOrClause);
81
+ }
82
+ static all() {
83
+ return this.$repo().all();
84
+ }
85
+ static query() {
86
+ return this.$repo().query();
87
+ }
88
+ static first() {
89
+ return this.$repo().query().first();
90
+ }
91
+ static firstOrFail() {
92
+ return this.$repo().query().firstOrFail();
93
+ }
94
+ // — Static creators (AdonisJS Lucid) —
95
+ static create(data) {
96
+ return this.$repo().create(data);
97
+ }
98
+ static createMany(rows) {
99
+ return this.$repo().createMany(rows);
100
+ }
101
+ /** {@link create} without firing lifecycle hooks (AdonisJS Lucid `createQuietly`). */
102
+ static createQuietly(data) {
103
+ return this.$repo().createQuietly(data);
104
+ }
105
+ /** {@link createMany} without firing lifecycle hooks (AdonisJS Lucid `createManyQuietly`). */
106
+ static createManyQuietly(rows) {
107
+ return this.$repo().createManyQuietly(rows);
108
+ }
109
+ static firstOrCreate(search, values) {
110
+ return this.$repo().firstOrCreate(search, values);
111
+ }
112
+ static firstOrNew(search, values) {
113
+ return this.$repo().firstOrNew(search, values);
114
+ }
115
+ static updateOrCreate(search, values) {
116
+ return this.$repo().updateOrCreate(search, values);
117
+ }
118
+ static updateOrCreateMany(key, rows) {
119
+ return this.$repo().updateOrCreateMany(key, rows);
120
+ }
121
+ static fetchOrCreateMany(key, rows) {
122
+ return this.$repo().fetchOrCreateMany(key, rows);
123
+ }
124
+ static fetchOrNewUpMany(key, rows) {
125
+ return this.$repo().fetchOrNewUpMany(key, rows);
126
+ }
127
+ /** Empty this model's table (AdonisJS `Model.truncate`). `cascade` is Postgres-only. */
128
+ static truncate(cascade = false) {
129
+ return this.$repo().truncate(cascade);
130
+ }
131
+ // — Instance persistence (AdonisJS Lucid) —
132
+ /** Transaction bound to this instance via {@link useTransaction}, if any. */
133
+ #trx;
134
+ /** The transaction bound to this instance, if any (AdonisJS Lucid `$trx`). */
135
+ get $trx() {
136
+ return this.#trx;
137
+ }
138
+ /**
139
+ * Bind this instance to a transaction so subsequent `save()` / `delete()` run
140
+ * inside it (AdonisJS Lucid `model.useTransaction`). Chainable.
141
+ *
142
+ * The binding is released when the transaction settles: Lucid clears `$trx`
143
+ * on commit/rollback so a reused instance falls back to the connection pool
144
+ * instead of a finished client. We mirror that by unbinding iff we are still
145
+ * bound to the same trx (a later `useTransaction` to another trx wins).
146
+ */
147
+ useTransaction(trx) {
148
+ this.#trx = trx;
149
+ // `.after` lives on the transaction client (a plain pool connection has no
150
+ // settle event). In practice useTransaction always receives a trx; guard so
151
+ // the type narrows and a non-trx connection is simply left bound (Lucid too
152
+ // only resets $trx for real transactions).
153
+ if (isTransactionClient(trx)) {
154
+ const release = () => {
155
+ if (this.#trx === trx)
156
+ this.#trx = undefined;
157
+ };
158
+ trx.after("commit", release);
159
+ trx.after("rollback", release);
160
+ }
161
+ return this;
162
+ }
163
+ /**
164
+ * The repository backing this instance — transaction-bound when
165
+ * {@link useTransaction} was called. `this.constructor` is the concrete
166
+ * BaseModel subclass at runtime; TS types it only as `Function`, hence the
167
+ * single unavoidable narrowing (the pattern Lucid's own BaseModel uses).
168
+ */
169
+ #repo() {
170
+ const model = this.constructor;
171
+ const repo = model.$repo();
172
+ return this.#trx ? repo.useTransaction(this.#trx) : repo;
173
+ }
174
+ /** INSERT this instance if new, else UPDATE its dirty columns. Returns `this`. */
175
+ async save() {
176
+ await this.#repo().save(this);
177
+ return this;
178
+ }
179
+ /** {@link save} without firing lifecycle hooks (AdonisJS Lucid `saveQuietly`). Returns `this`. */
180
+ async saveQuietly() {
181
+ await this.#repo().saveQuietly(this);
182
+ return this;
183
+ }
184
+ /** DELETE this instance's row (soft-delete aware). Sets `$isDeleted`. */
185
+ async delete() {
186
+ await this.#repo().delete(this);
187
+ }
188
+ /** {@link delete} without firing lifecycle hooks (AdonisJS Lucid `deleteQuietly`). */
189
+ async deleteQuietly() {
190
+ await this.#repo().deleteQuietly(this);
191
+ }
192
+ }
193
+ //# sourceMappingURL=BaseModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseModel.js","sourceRoot":"","sources":["../src/BaseModel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAA2B,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAKlE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAgB,SAAU,SAAQ,UAAU;IACjD,kEAAkE;IAClE,MAAM,CAAC,KAAK,CAAU;IACtB,oFAAoF;IACpF,MAAM,CAAC,UAAU,CAAU;IAC3B,sGAAsG;IACtG,MAAM,CAAC,UAAU,CAAU;IAE3B;;;;OAIG;IACH,MAAM,CAAC,KAAK;QACX,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,qFAAqF;IACrF,MAAM,CAAC,WAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACxE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,UAAU,CACnB,oBAAoB,EACpB,IAAI,CAAC,UAAU;gBACd,CAAC,CAAC,wBAAwB,IAAI,CAAC,UAAU,8BAA8B,IAAI,CAAC,IAAI,IAAI;gBACpF,CAAC,CAAC,6CAA6C,IAAI,CAAC,IAAI,8BAA8B,EACvF;gBACC,IAAI,EAAE,gGAAgG;aACtG,CACD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gFAAgF;IAChF,MAAM,CAAC,KAAK;QACX,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,cAAc,CAAI,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IAEtC,MAAM,CAAC,IAAI,CAEV,EAAmB;QAEnB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,UAAU,CAEhB,EAAmB;QAEnB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAWD,MAAM,CAAC,MAAM,CAEZ,cAAgD,EAChD,KAAe;QAEf,OAAO,OAAO,cAAc,KAAK,QAAQ;YACxC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;IAWD,MAAM,CAAC,YAAY,CAElB,cAAgD,EAChD,KAAe;QAEf,OAAO,OAAO,cAAc,KAAK,QAAQ;YACxC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC;YAClD,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,QAAQ,CAEd,GAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAWD,MAAM,CAAC,UAAU,CAEhB,cAAgD,EAChD,MAA+B;QAE/B,OAAO,OAAO,cAAc,KAAK,QAAQ;YACxC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,IAAI,EAAE,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,GAAG;QACT,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAK;QAGX,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,KAAK;QACX,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW;QACjB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED,uCAAuC;IAEvC,MAAM,CAAC,MAAM,CAEZ,IAAsC;QAEtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,UAAU,CAEhB,IAA6C;QAE7C,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,sFAAsF;IACtF,MAAM,CAAC,aAAa,CAEnB,IAAsC;QAEtC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,8FAA8F;IAC9F,MAAM,CAAC,iBAAiB,CAEvB,IAA6C;QAE7C,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,aAAa,CAEnB,MAA+B,EAC/B,MAAgC;QAEhC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,UAAU,CAEhB,MAA+B,EAC/B,MAAgC;QAEhC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,cAAc,CAEpB,MAA+B,EAC/B,MAA+B;QAE/B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAExB,GAAsB,EACtB,IAAoC;QAEpC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,iBAAiB,CAEvB,GAAsB,EACtB,IAAoC;QAEpC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,gBAAgB,CAEtB,GAAsB,EACtB,IAAoC;QAEpC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,wFAAwF;IACxF,MAAM,CAAC,QAAQ,CAEd,OAAO,GAAG,KAAK;QAEf,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,4CAA4C;IAE5C,6EAA6E;IAC7E,IAAI,CAAsB;IAE1B,8EAA8E;IAC9E,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,GAAuB;QACrC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,2EAA2E;QAC3E,4EAA4E;QAC5E,4EAA4E;QAC5E,2CAA2C;QAC3C,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,GAAG,EAAE;gBACpB,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG;oBAAE,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;YAC9C,CAAC,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,WAA+B,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,IAAI;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,WAAW;QAChB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,MAAM;QACX,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,aAAa;QAClB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACD"}
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * @implements FR29, FR31, FR35
5
5
  */
6
+ import type { QueryMeta, TransactionOptions } from "./adapters/NapiDbAdapter.js";
6
7
  import type { BaseEntity, DomainEvent, RelationProxy } from "./BaseEntity.js";
7
8
  import { getColumnMetadata } from "./decorators/entity.js";
8
- import type { TransactionOptions } from "./adapters/NapiDbAdapter.js";
9
- import type { TransactionClient } from "./Transaction.js";
10
9
  import { ModelQuery } from "./ModelQuery.js";
11
10
  import { type AtlasDialect } from "./query/native.js";
11
+ import { type TransactionClient } from "./Transaction.js";
12
12
  type EntityConstructor<T extends BaseEntity> = new () => T;
13
13
  /**
14
14
  * String-keyed bag of values — covers the recurring DB-shaped objects:
@@ -29,12 +29,18 @@ export type Row = Dict<unknown>;
29
29
  * satisfy this interface out-of-the-box.
30
30
  */
31
31
  export interface DatabaseConnection {
32
- /** Run a write statement; returns rowsAffected. */
33
- execute(sql: string, params?: unknown[]): Promise<{
32
+ /**
33
+ * Run a write statement; returns rowsAffected.
34
+ *
35
+ * `meta` is optional context for the `db:query` event (model, method,
36
+ * per-query debug). A connection that ignores it — every test fake — is
37
+ * still a valid `DatabaseConnection`.
38
+ */
39
+ execute(sql: string, params?: unknown[], meta?: QueryMeta): Promise<{
34
40
  rowsAffected: number;
35
41
  }>;
36
- /** Run a SELECT and return all rows. */
37
- query<T = Row>(sql: string, params?: unknown[]): Promise<T[]>;
42
+ /** Run a SELECT and return all rows. See {@link execute} for `meta`. */
43
+ query<T = Row>(sql: string, params?: unknown[], meta?: QueryMeta): Promise<T[]>;
38
44
  /**
39
45
  * Optional — open an interactive transaction pinned to ONE connection
40
46
  * (Lucid's `db.transaction`: manual without a callback, managed with one).
@@ -62,19 +68,39 @@ export declare class BaseRepository<T extends BaseEntity> {
62
68
  find(id: string | number | bigint): Promise<T | null>;
63
69
  findOrFail(id: string | number): Promise<T>;
64
70
  findBy(column: string, value: unknown): Promise<T | null>;
71
+ findBy(clause: Record<string, unknown>): Promise<T | null>;
72
+ /** Find by a column/clause or throw `EntityNotFoundError` (AdonisJS `findByOrFail`). */
73
+ findByOrFail(column: string, value: unknown): Promise<T>;
74
+ findByOrFail(clause: Record<string, unknown>): Promise<T>;
75
+ /** Find many rows by primary key (AdonisJS `findMany`), ordered PK desc. */
76
+ findMany(ids: Array<string | number>): Promise<T[]>;
77
+ /** Find many rows by a column IN values, or by an object clause (AdonisJS `findManyBy`). */
78
+ findManyBy(column: string, values: Array<string | number>): Promise<T[]>;
79
+ findManyBy(clause: Record<string, unknown>): Promise<T[]>;
65
80
  all(): Promise<T[]>;
81
+ /**
82
+ * Empty this model's table (AdonisJS Lucid `Model.truncate`). Postgres/MySQL
83
+ * issue `TRUNCATE TABLE` (fast, resets identity); SQLite has no TRUNCATE so it
84
+ * falls back to `DELETE FROM`. `cascade` is Postgres-only (truncates dependent
85
+ * FK tables). The table name comes from entity metadata — never user input.
86
+ */
87
+ truncate(cascade?: boolean): Promise<void>;
66
88
  allWithTrashed(): Promise<T[]>;
67
89
  onlyTrashed(): Promise<T[]>;
68
90
  where(column: string, value: unknown): Promise<T[]>;
69
91
  /**
70
- * Build an entity from a plain object and persist it. Fires `beforeSave` →
71
- * `beforeCreate` → INSERT → `afterCreate` → `afterSave`.
92
+ * Build an entity from a plain object and persist it. Fires `beforeCreate` →
93
+ * `beforeSave` → INSERT → `afterCreate` → `afterSave` (AdonisJS/Lucid order:
94
+ * the specific hook runs before the general `beforeSave`).
72
95
  */
73
- create(data: Partial<Record<string, unknown>>): Promise<T>;
96
+ create(data: Partial<Record<string, unknown>>, quiet?: boolean): Promise<T>;
97
+ /** {@link create} without firing lifecycle hooks (AdonisJS Lucid `createQuietly`). */
98
+ createQuietly(data: Partial<Record<string, unknown>>): Promise<T>;
74
99
  /**
75
100
  * Persist an entity. Insert if PK is missing or row doesn't exist, update
76
- * otherwise. Fires `beforeSave` → (`beforeCreate` | `beforeUpdate`) → DB →
77
- * (`afterCreate` | `afterUpdate`) → `afterSave`, then dispatches
101
+ * otherwise. Fires (`beforeCreate` | `beforeUpdate`) → `beforeSave` → DB →
102
+ * (`afterCreate` | `afterUpdate`) → `afterSave` (AdonisJS/Lucid order: the
103
+ * specific hook runs before the general `beforeSave`), then dispatches
78
104
  * accumulated domain events through `onDomainEvents`.
79
105
  *
80
106
  * Race-safety: the `find(pk)` → branch decision has a TOCTOU window. If a
@@ -85,7 +111,9 @@ export declare class BaseRepository<T extends BaseEntity> {
85
111
  * `beforeCreate` hooks to be idempotent or move side-effects into
86
112
  * `afterCreate` / `afterSave` where they only fire on commit.
87
113
  */
88
- save(entity: T): Promise<void>;
114
+ save(entity: T, quiet?: boolean): Promise<void>;
115
+ /** {@link save} without firing lifecycle hooks (AdonisJS Lucid `saveQuietly`). */
116
+ saveQuietly(entity: T): Promise<void>;
89
117
  /**
90
118
  * Insert many rows in a single multi-row INSERT. Fires beforeSave/beforeCreate
91
119
  * on each hydrated entity, then hydrates from the RETURNING clause (postgres +
@@ -94,7 +122,9 @@ export declare class BaseRepository<T extends BaseEntity> {
94
122
  *
95
123
  * @implements Story 30.1 + 30.5
96
124
  */
97
- createMany(rows: Array<Partial<Record<string, unknown>>>): Promise<T[]>;
125
+ createMany(rows: Array<Partial<Record<string, unknown>>>, quiet?: boolean): Promise<T[]>;
126
+ /** {@link createMany} without firing lifecycle hooks (AdonisJS Lucid `createManyQuietly`). */
127
+ createManyQuietly(rows: Array<Partial<Record<string, unknown>>>): Promise<T[]>;
98
128
  /**
99
129
  * Persist many already-constructed entity instances. Same hooks + batching
100
130
  * as `createMany`, but accepts prebuilt entities so dirty tracking works.
@@ -117,10 +147,27 @@ export declare class BaseRepository<T extends BaseEntity> {
117
147
  firstOrCreate(search: Record<string, unknown>, defaults?: Record<string, unknown>): Promise<T>;
118
148
  /** Find a row or build an in-memory instance without persisting. */
119
149
  firstOrNew(search: Record<string, unknown>, defaults?: Record<string, unknown>): Promise<T>;
120
- /** Atomic find-or-update-or-insert. */
150
+ /** Atomic find-or-update-or-insert (AdonisJS Lucid parity — locked + transactional). */
121
151
  updateOrCreate(search: Record<string, unknown>, values: Record<string, unknown>): Promise<T>;
152
+ /**
153
+ * Bulk find-or-update-or-insert, keyed by a unique column (or columns), in ONE
154
+ * transaction — all-or-nothing (AdonisJS Lucid `updateOrCreateMany`).
155
+ */
156
+ updateOrCreateMany(key: string | string[], rows: Array<Record<string, unknown>>): Promise<T[]>;
157
+ /**
158
+ * Bulk find-or-create keyed by a unique column(s) — existing rows are returned
159
+ * untouched — in one transaction (AdonisJS Lucid `fetchOrCreateMany`).
160
+ */
161
+ fetchOrCreateMany(key: string | string[], rows: Array<Record<string, unknown>>): Promise<T[]>;
162
+ /**
163
+ * Bulk find-or-new keyed by a unique column(s): existing rows are returned,
164
+ * misses become UNPERSISTED in-memory instances (AdonisJS `fetchOrNewUpMany`).
165
+ */
166
+ fetchOrNewUpMany(key: string | string[], rows: Array<Record<string, unknown>>): Promise<T[]>;
122
167
  /** Delete the entity. Fires `beforeDelete` → DB → `afterDelete`. Soft-delete aware. */
123
- delete(entity: T): Promise<void>;
168
+ delete(entity: T, quiet?: boolean): Promise<void>;
169
+ /** {@link delete} without firing lifecycle hooks (AdonisJS Lucid `deleteQuietly`). */
170
+ deleteQuietly(entity: T): Promise<void>;
124
171
  /** Permanently delete (bypasses soft delete). Fires `beforeDelete` / `afterDelete` hooks. */
125
172
  forceDelete(entity: T): Promise<void>;
126
173
  restore(entity: T): Promise<void>;
@@ -188,5 +235,20 @@ export declare class BaseRepository<T extends BaseEntity> {
188
235
  relatedProxy(entity: BaseEntity, relationName: string): RelationProxy;
189
236
  fresh(entity: T): Promise<T>;
190
237
  }
238
+ /**
239
+ * Annotate an adapter callback failure with the property key that triggered
240
+ * it. Without this, a `prepare`/`consume` throwing on row N silently surfaces
241
+ * as "Invalid bind value" or similar, with no hint at WHICH column the
242
+ * adapter rejected — the dev has to bisect across every adapter-tagged
243
+ * property to find the culprit.
244
+ */
245
+ export declare function wrapAdapterError(phase: "prepare" | "consume", propertyKey: string, err: unknown): Error;
246
+ /**
247
+ * Adapter callbacks must be synchronous — the bind layer cannot await before
248
+ * handing values to the Rust DML compiler. Catching an `async` adapter here
249
+ * gives the user a column-annotated error instead of an opaque "Invalid bind
250
+ * value" downstream when the unawaited Promise hits the NAPI boundary.
251
+ */
252
+ export declare function assertNotPromise(phase: "prepare" | "consume", propertyKey: string, value: unknown): void;
191
253
  export {};
192
254
  //# sourceMappingURL=BaseRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../src/BaseRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseRepository.d.ts","sourceRoot":"","sources":["../src/BaseRepository.ts"],"names":[],"mappings":"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"}