@t4h.framework/orm 0.8.0 → 0.10.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 (41) hide show
  1. package/.ai/skills/framework-orm/SKILL.md +27 -6
  2. package/CHANGELOG.md +20 -0
  3. package/README.md +30 -1
  4. package/dist/activities/ORMDeleteActivity.d.ts +13 -0
  5. package/dist/activities/ORMDeleteActivity.d.ts.map +1 -0
  6. package/dist/activities/ORMDeleteActivity.js +18 -0
  7. package/dist/activities/ORMDeleteActivity.js.map +1 -0
  8. package/dist/activities/ORMUpsertActivity.d.ts +13 -0
  9. package/dist/activities/ORMUpsertActivity.d.ts.map +1 -0
  10. package/dist/activities/ORMUpsertActivity.js +16 -0
  11. package/dist/activities/ORMUpsertActivity.js.map +1 -0
  12. package/dist/claims/ORMClaim.d.ts +3 -1
  13. package/dist/claims/ORMClaim.d.ts.map +1 -1
  14. package/dist/claims/ORMClaim.js +14 -0
  15. package/dist/claims/ORMClaim.js.map +1 -1
  16. package/dist/decorators/Entity.d.ts.map +1 -1
  17. package/dist/decorators/Entity.js +2 -1
  18. package/dist/decorators/Entity.js.map +1 -1
  19. package/dist/decorators/metadata.d.ts +2 -0
  20. package/dist/decorators/metadata.d.ts.map +1 -1
  21. package/dist/decorators/metadata.js +10 -0
  22. package/dist/decorators/metadata.js.map +1 -1
  23. package/dist/models/ORM.d.ts +9 -0
  24. package/dist/models/ORM.d.ts.map +1 -1
  25. package/dist/models/ORM.js +37 -0
  26. package/dist/models/ORM.js.map +1 -1
  27. package/dist/models/Ref.d.ts +8 -1
  28. package/dist/models/Ref.d.ts.map +1 -1
  29. package/dist/models/Ref.js +18 -3
  30. package/dist/models/Ref.js.map +1 -1
  31. package/dist/models/RefCollection.d.ts +6 -1
  32. package/dist/models/RefCollection.d.ts.map +1 -1
  33. package/dist/models/RefCollection.js +15 -1
  34. package/dist/models/RefCollection.js.map +1 -1
  35. package/dist/orm.d.ts +2 -0
  36. package/dist/orm.d.ts.map +1 -1
  37. package/dist/orm.js +2 -0
  38. package/dist/orm.js.map +1 -1
  39. package/dist/typings/ORM.d.ts +15 -0
  40. package/dist/typings/ORM.d.ts.map +1 -1
  41. package/package.json +3 -3
@@ -2,8 +2,8 @@
2
2
  name: framework-orm
3
3
  description: >-
4
4
  Guides correct use of @t4h.framework/orm in T4H Framework workflows: entity
5
- decorators (@Entity, @Property, @Index), the ORM model (create, find, findOne,
6
- exists), Ref and RefCollection, query operators, constraint validation, ORM
5
+ decorators (@Entity, @Property, @Index), the ORM model (create, upsert, find, findOne,
6
+ exists, delete), Ref and RefCollection, query operators, constraint validation, ORM
7
7
  activities, and ORMClaim wiring. Use when defining database entities, persisting
8
8
  or querying rows in workflows, implementing ORMClaim providers, testing ORM
9
9
  workflows with TestWorkflowEnvironment, or working in packages/orm.
@@ -21,11 +21,12 @@ import {
21
21
  ORMClaim, ConstraintError,
22
22
  ORMCreateActivity, ORMFindActivity, ORMFindOneActivity,
23
23
  ORMGetSnapshotActivity, ORMUpdateActivity, ORMRemoveActivity,
24
+ ORMDeleteActivity,
24
25
  getEntityMetadata, getEntityTableName, getEntityProperties,
25
26
  type EntityInsertData, type EntityPartialData, type FindWhere,
26
27
  type SerializableCreateInput, type SerializableFindInput,
27
28
  type SerializableGetSnapshotInput, type SerializableUpdateInput,
28
- type SerializableRemoveInput,
29
+ type SerializableRemoveInput, type SerializableDeleteInput,
29
30
  } from '@t4h.framework/orm'
30
31
  ```
31
32
 
@@ -146,6 +147,19 @@ const usersRef = await orm.create(User, [
146
147
 
147
148
  Defaults are applied before persistence (`applyDefaultProperties`). Omitted fields with `@Property({ default })` are filled in.
148
149
 
150
+ ### Upsert
151
+
152
+ ```typescript
153
+ // Single row → Ref<T>; array → RefCollection<T>
154
+ const userRef = await orm.upsert(
155
+ User,
156
+ { email: 'john@example.com', name: 'John', active: true },
157
+ { conflictOn: ['email'] },
158
+ )
159
+ ```
160
+
161
+ Rows are validated like `create`. If a row matching `conflictOn` (equality on every listed property) exists, only the passed fields are written; defaults apply on insert only. Every row must have a value for each `conflictOn` property (`ConstraintError` otherwise), and `conflictOn` cannot be empty. The call is a single `ORMUpsertActivity` backed by `ORMClaim.upsert`, which has a default (`find`, then `create` or `update`) — mock `upsert` in tests, or `find`/`create`/`update` if the mock extends `ORMClaim`. A retry after a crash updates instead of duplicating, but it is not atomic across workflows: concurrent writes of the same key may both insert.
162
+
149
163
  ### Find
150
164
 
151
165
  ```typescript
@@ -164,6 +178,10 @@ const usersRef = await orm.find(User, {
164
178
  const exists = await orm.exists(User, {
165
179
  where: { email: 'john@example.com' },
166
180
  }) // boolean (delegates to findOne)
181
+
182
+ const deleted = await orm.delete(User, {
183
+ where: { active: false },
184
+ }) // number — deletes every match; `{}` empties the table
167
185
  ```
168
186
 
169
187
  `findOne` activity internally calls `claim.find` with `limit: 1`.
@@ -206,7 +224,7 @@ Available operators: `$eq`, `$ne`, `$in`, `$nin`, `$not`, `$gt`, `$gte`, `$lt`,
206
224
 
207
225
  ## Constraint validation
208
226
 
209
- Validation runs in the ORM library (`ORM.create` and `Ref.update`), **not** in `ORMClaim` implementations. Failures throw `ConstraintError`.
227
+ Validation runs in the ORM library (`ORM.create`, `ORM.upsert` and `Ref.update`), **not** in `ORMClaim` implementations. Failures throw `ConstraintError`.
210
228
 
211
229
  ### Create pipeline
212
230
 
@@ -255,10 +273,12 @@ abstract class ORMClaim<R extends SerializableRowRef> {
255
273
  abstract getSnapshot(input: SerializableGetSnapshotInput<R>): SerializedRow | null | Promise<SerializedRow | null>
256
274
  abstract update(input: SerializableUpdateInput<R>): void | Promise<void>
257
275
  abstract remove(input: SerializableRemoveInput<R>): void | Promise<void>
276
+ upsert(input: SerializableUpsertInput): Promise<R[]> // default: find, then create/update; override for a native upsert
277
+ abstract delete(input: SerializableDeleteInput): number | Promise<number>
258
278
  }
259
279
  ```
260
280
 
261
- Activity inputs always include `orm` + `table`; create adds `data[]`, find adds `where` (+ optional `orderBy`/`limit`/`offset`), snapshot/update/remove add `ref` (opaque `Serializable` row handle). Update also includes partial `data`.
281
+ Activity inputs always include `orm` + `table`; create adds `data[]`, find and delete add `where` (find also takes optional `orderBy`/`limit`/`offset`), snapshot/update/remove add `ref` (opaque `Serializable` row handle). Update also includes partial `data`. Upsert adds `conflictOn` and `data: { insert, update }[]` — `insert` is the full row with defaults, `update` only the caller's fields; return refs in input order.
262
282
 
263
283
  The `ORM`/`Ref` calls run inside a workflow (the runtime, or `TestWorkflowEnvironment` in tests, provides the reconciler context).
264
284
 
@@ -276,6 +296,7 @@ These are the **shipped, replay-safe activities** the `ORM`/`Ref` APIs drive for
276
296
  | `ORMGetSnapshotActivity` | `SerializableGetSnapshotInput` | `SerializedRow \| null` |
277
297
  | `ORMUpdateActivity` | `SerializableUpdateInput` | `void` |
278
298
  | `ORMRemoveActivity` | `SerializableRemoveInput` | `void` |
299
+ | `ORMDeleteActivity` | `SerializableDeleteInput` | `number` |
279
300
 
280
301
  Prefer **`ORM` / `Ref` APIs** in workflow code — they apply constraints and return typed handles. Use activities directly only for advanced/testing scenarios.
281
302
 
@@ -305,7 +326,7 @@ Ensure the runtime provides `ORMClaim`.
305
326
 
306
327
  Test the **workflow** with `TestWorkflowEnvironment` from
307
328
  `@t4h.framework/core/testing`, mocking `ORMClaim` — the single claim the ORM
308
- activities resolve. Provide the methods your workflow triggers (`create`, `find`,
329
+ activities resolve. Provide the methods your workflow triggers (`create`, `upsert`, `find`,
309
330
  `findOne`, `getSnapshot`, `update`, `remove`). See the **framework-workflow-testing**
310
331
  skill for the harness API.
311
332
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @t4h.framework/orm
2
2
 
3
+ ## 0.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#193](https://github.com/tech4humans-brasil/framework/pull/193) [`a0a1003`](https://github.com/tech4humans-brasil/framework/commit/a0a1003b719d54c727b211c07699fa4e3162f208) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - `orm.delete(entity, { where })` deletes every row matching the filter in a
8
+ single durable step and returns how many rows were deleted.
9
+
10
+ It is backed by the new `ORMDeleteActivity`, which calls the new abstract
11
+ `ORMClaim.delete(input: SerializableDeleteInput)`. Runtimes that
12
+ implement `ORMClaim` must add it; the dev claim already does. `where` takes the
13
+ same operators as `find`, and an empty `{}` matches every row.
14
+
15
+ - [#191](https://github.com/tech4humans-brasil/framework/pull/191) [`728372d`](https://github.com/tech4humans-brasil/framework/commit/728372dff010c5b1a91dd8a77f0fc2fa020a10f8) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds `orm.upsert(entity, data, { conflictOn })`, which inserts rows or updates the ones matching `conflictOn`. It runs as the new `ORMUpsertActivity`, backed by `ORMClaim.upsert`. The claim method has a default built on `find`, `create` and `update`, so existing claims keep working; override it for a native upsert. Runtimes that register activities explicitly must register `ORMUpsertActivity`.
16
+
17
+ ## 0.9.0
18
+
19
+ ### Minor Changes
20
+
21
+ - [#187](https://github.com/tech4humans-brasil/framework/pull/187) [`a714f89`](https://github.com/tech4humans-brasil/framework/commit/a714f89f7051b82ad39daadf0adc0860e2d654c4) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Turn Ref and Ref Collection serializable
22
+
3
23
  ## 0.8.0
4
24
 
5
25
  ### Minor Changes
package/README.md CHANGED
@@ -21,6 +21,10 @@ abstract class ORMClaim<R extends SerializableRowRef> {
21
21
  public abstract getSnapshot(input: SerializableGetSnapshotInput<R>): SerializedRow | Promise<SerializedRow>
22
22
  public abstract update(input: SerializableUpdateInput<R>): void | Promise<void>
23
23
  public abstract remove(input: SerializableRemoveInput<R>): void | Promise<void>
24
+ public abstract delete(input: SerializableDeleteInput): number | Promise<number>
25
+
26
+ // Default: find, then create or update. Override for a native upsert.
27
+ public upsert(input: SerializableUpsertInput): Promise<R[]>
24
28
  }
25
29
  ```
26
30
 
@@ -88,7 +92,7 @@ Projects that define entities with `@Property()` should enable:
88
92
 
89
93
  ## Constraints
90
94
 
91
- Row validation runs in the ORM library (`ORM.create` and `Ref.update`), not in `ORMClaim` implementations. Failed checks throw `ConstraintError`.
95
+ Row validation runs in the ORM library (`ORM.create`, `ORM.upsert` and `Ref.update`), not in `ORMClaim` implementations. Failed checks throw `ConstraintError`.
92
96
 
93
97
  ### Pipeline
94
98
 
@@ -151,6 +155,19 @@ const usersRef = await orm.create(User, [
151
155
  ])
152
156
  ```
153
157
 
158
+ ### Upsert
159
+
160
+ ```typescript
161
+ // Inserts, or updates the row with the same email
162
+ const userRef = await orm.upsert(
163
+ User,
164
+ { email: 'john@example.com', name: 'John', active: true },
165
+ { conflictOn: ['email'] },
166
+ )
167
+ ```
168
+
169
+ Pass an array for a batch (returns a `RefCollection`). On update only the fields you passed are written; defaults apply on insert only. The call runs as a single `ORMUpsertActivity`, so a retry after a crash updates instead of duplicating; it is not atomic across workflows, so concurrent writes of the same key may both insert.
170
+
154
171
  ### Finding records
155
172
 
156
173
  ```typescript
@@ -174,6 +191,16 @@ const exists = await orm.exists(User, {
174
191
  })
175
192
  ```
176
193
 
194
+ ### Deleting records
195
+
196
+ ```typescript
197
+ const deleted = await orm.delete(User, {
198
+ where: { active: false },
199
+ }) // number of deleted rows
200
+ ```
201
+
202
+ `where` is required; an empty `{}` deletes every row.
203
+
177
204
  ## Ref
178
205
 
179
206
  A `Ref<T>` is a reference to a single entity row. It supports `getSnapshot`, `update`, and `remove`:
@@ -226,6 +253,8 @@ The package includes the following activities (used internally by `ORM` and `Ref
226
253
  - `ORMFindOneActivity` -- finds a single row
227
254
  - `ORMGetSnapshotActivity` -- retrieves full entity data from a ref
228
255
  - `ORMUpdateActivity` -- updates a row
256
+ - `ORMUpsertActivity` -- inserts or updates rows by `conflictOn` (via `ORMClaim.upsert`)
229
257
  - `ORMRemoveActivity` -- removes a row
258
+ - `ORMDeleteActivity` -- deletes every row matching a `where`
230
259
 
231
260
  All activities extend `SyncActivity` and use `ORMClaim` internally.
@@ -0,0 +1,13 @@
1
+ import { SyncActivity } from '@t4h.framework/core';
2
+ import type { SerializableDeleteInput } from '../typings/ORM.js';
3
+ declare const CLAIMS_KEY: unique symbol;
4
+ export declare class ORMDeleteActivity extends SyncActivity<[
5
+ input: SerializableDeleteInput
6
+ ], SerializableDeleteInput, number, number> {
7
+ private readonly [CLAIMS_KEY];
8
+ toInput(input: SerializableDeleteInput): SerializableDeleteInput;
9
+ toOutput(output: number): number;
10
+ run(input: SerializableDeleteInput): number | Promise<number>;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=ORMDeleteActivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ORMDeleteActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMDeleteActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;AAGzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAEhE,QAAA,MAAM,UAAU,eAAuC,CAAA;AAEvD,qBAAa,iBAAkB,SAAQ,YAAY,CACjD;IAAC,KAAK,EAAE,uBAAuB;CAAC,EAChC,uBAAuB,EACvB,MAAM,EACN,MAAM,CACP;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAE3B;IAEK,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,uBAAuB;IAIhE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC,GAAG,CAAC,KAAK,EAAE,uBAAuB;CAG1C"}
@@ -0,0 +1,18 @@
1
+ import { SyncActivity, Claim } from '@t4h.framework/core';
2
+ import { ORMClaim } from '../claims/ORMClaim.js';
3
+ const CLAIMS_KEY = Symbol('orm-delete-activity-claims');
4
+ export class ORMDeleteActivity extends SyncActivity {
5
+ [CLAIMS_KEY] = new Claim({
6
+ orm: ORMClaim,
7
+ });
8
+ toInput(input) {
9
+ return input;
10
+ }
11
+ toOutput(output) {
12
+ return output;
13
+ }
14
+ run(input) {
15
+ return this[CLAIMS_KEY].orm.delete(input);
16
+ }
17
+ }
18
+ //# sourceMappingURL=ORMDeleteActivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ORMDeleteActivity.js","sourceRoot":"","sources":["../../src/activities/ORMDeleteActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAGhD,MAAM,UAAU,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAEvD,MAAM,OAAO,iBAAkB,SAAQ,YAKtC;IACkB,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC;QACxC,GAAG,EAAE,QAAQ;KACd,CAAC,CAAA;IAEK,OAAO,CAAC,KAA8B;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,QAAQ,CAAC,MAAc;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,GAAG,CAAC,KAA8B;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { SyncActivity } from '@t4h.framework/core';
2
+ import type { SerializableUpsertInput, SerializableRowRef } from '../typings/ORM.js';
3
+ declare const CLAIMS_KEY: unique symbol;
4
+ export declare class ORMUpsertActivity extends SyncActivity<[
5
+ input: SerializableUpsertInput
6
+ ], SerializableUpsertInput, SerializableRowRef[], SerializableRowRef[]> {
7
+ private readonly [CLAIMS_KEY];
8
+ toInput(input: SerializableUpsertInput): SerializableUpsertInput;
9
+ run(input: SerializableUpsertInput): Promise<import("@t4h.framework/core").Serializable[]>;
10
+ toOutput(output: SerializableRowRef[]): SerializableRowRef[];
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=ORMUpsertActivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ORMUpsertActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMUpsertActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;AAGzD,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAE1B,QAAA,MAAM,UAAU,eAAuC,CAAA;AAEvD,qBAAa,iBAAkB,SAAQ,YAAY,CACjD;IAAC,KAAK,EAAE,uBAAuB;CAAC,EAChC,uBAAuB,EACvB,kBAAkB,EAAE,EACpB,kBAAkB,EAAE,CACrB;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAA+B;IAErD,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,uBAAuB;IAIhE,GAAG,CAAC,KAAK,EAAE,uBAAuB;IAIlC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE;CAGpE"}
@@ -0,0 +1,16 @@
1
+ import { SyncActivity, Claim } from '@t4h.framework/core';
2
+ import { ORMClaim } from '../claims/ORMClaim.js';
3
+ const CLAIMS_KEY = Symbol('orm-upsert-activity-claims');
4
+ export class ORMUpsertActivity extends SyncActivity {
5
+ [CLAIMS_KEY] = new Claim({ orm: ORMClaim });
6
+ toInput(input) {
7
+ return input;
8
+ }
9
+ run(input) {
10
+ return this[CLAIMS_KEY].orm.upsert(input);
11
+ }
12
+ toOutput(output) {
13
+ return output;
14
+ }
15
+ }
16
+ //# sourceMappingURL=ORMUpsertActivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ORMUpsertActivity.js","sourceRoot":"","sources":["../../src/activities/ORMUpsertActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAMhD,MAAM,UAAU,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAEvD,MAAM,OAAO,iBAAkB,SAAQ,YAKtC;IACkB,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;IAErD,OAAO,CAAC,KAA8B;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,GAAG,CAAC,KAA8B;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC;IAEM,QAAQ,CAAC,MAA4B;QAC1C,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -1,9 +1,11 @@
1
- import type { SerializableCreateInput, SerializableFindInput, SerializableGetSnapshotInput, SerializableRemoveInput, SerializableUpdateInput, SerializableRowRef, SerializedRow } from '../typings/ORM.js';
1
+ import type { SerializableCreateInput, SerializableFindInput, SerializableGetSnapshotInput, SerializableRemoveInput, SerializableDeleteInput, SerializableUpdateInput, SerializableUpsertInput, SerializableRowRef, SerializedRow } from '../typings/ORM.js';
2
2
  export declare abstract class ORMClaim<R extends SerializableRowRef> {
3
3
  abstract find(input: SerializableFindInput): R[] | Promise<R[]>;
4
4
  abstract create(input: SerializableCreateInput): R[] | Promise<R[]>;
5
5
  abstract getSnapshot(input: SerializableGetSnapshotInput<R>): SerializedRow | null | Promise<SerializedRow | null>;
6
6
  abstract update(input: SerializableUpdateInput<R>): void | Promise<void>;
7
7
  abstract remove(input: SerializableRemoveInput<R>): void | Promise<void>;
8
+ upsert({ orm, table, conflictOn, data, }: SerializableUpsertInput): Promise<R[]>;
9
+ abstract delete(input: SerializableDeleteInput): number | Promise<number>;
8
10
  }
9
11
  //# sourceMappingURL=ORMClaim.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ORMClaim.d.ts","sourceRoot":"","sources":["../../src/claims/ORMClaim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACd,MAAM,mBAAmB,CAAA;AAE1B,8BAAsB,QAAQ,CAAC,CAAC,SAAS,kBAAkB;aACzC,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;aAEtD,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;aAE1D,WAAW,CACzB,KAAK,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACrC,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;aAEvC,MAAM,CACpB,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAChC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;aAEP,MAAM,CACpB,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAChC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CACxB"}
1
+ {"version":3,"file":"ORMClaim.d.ts","sourceRoot":"","sources":["../../src/claims/ORMClaim.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACd,MAAM,mBAAmB,CAAA;AAE1B,8BAAsB,QAAQ,CAAC,CAAC,SAAS,kBAAkB;aACzC,IAAI,CAAC,KAAK,EAAE,qBAAqB,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;aAEtD,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;aAE1D,WAAW,CACzB,KAAK,EAAE,4BAA4B,CAAC,CAAC,CAAC,GACrC,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;aAEvC,MAAM,CACpB,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAChC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;aAEP,MAAM,CACpB,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAChC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEV,MAAM,CAAC,EAClB,GAAG,EACH,KAAK,EACL,UAAU,EACV,IAAI,GACL,EAAE,uBAAuB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;aAwBzB,MAAM,CACpB,KAAK,EAAE,uBAAuB,GAC7B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAC5B"}
@@ -1,3 +1,17 @@
1
1
  export class ORMClaim {
2
+ async upsert({ orm, table, conflictOn, data, }) {
3
+ const refs = [];
4
+ for (const { insert, update } of data) {
5
+ const where = Object.fromEntries(conflictOn.map(key => [key, insert[key]]));
6
+ const [ref] = await this.find({ orm, table, where, limit: 1, offset: 0 });
7
+ if (ref === undefined) {
8
+ refs.push(...(await this.create({ orm, table, data: [insert] })));
9
+ continue;
10
+ }
11
+ await this.update({ orm, table, ref, data: update });
12
+ refs.push(ref);
13
+ }
14
+ return refs;
15
+ }
2
16
  }
3
17
  //# sourceMappingURL=ORMClaim.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ORMClaim.js","sourceRoot":"","sources":["../../src/claims/ORMClaim.ts"],"names":[],"mappings":"AAUA,MAAM,OAAgB,QAAQ;CAgB7B"}
1
+ {"version":3,"file":"ORMClaim.js","sourceRoot":"","sources":["../../src/claims/ORMClaim.ts"],"names":[],"mappings":"AAYA,MAAM,OAAgB,QAAQ;IAiBrB,KAAK,CAAC,MAAM,CAAC,EAClB,GAAG,EACH,KAAK,EACL,UAAU,EACV,IAAI,GACoB;QACxB,MAAM,IAAI,GAAQ,EAAE,CAAA;QAEpB,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAE,CAAC,CAAC,CAC3C,CAAA;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YAEzE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAEjE,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAEpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAKF"}
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAM7D"}
1
+ {"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAQ7D"}
@@ -1,8 +1,9 @@
1
- import { getEntityMetadata } from './metadata.js';
1
+ import { getEntityMetadata, registerEntity } from './metadata.js';
2
2
  export function Entity(options) {
3
3
  return target => {
4
4
  const metadata = getEntityMetadata(target);
5
5
  metadata.tableName = options?.tableName;
6
+ registerEntity(target);
6
7
  };
7
8
  }
8
9
  //# sourceMappingURL=Entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAMjD,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,MAAM,CAAC,EAAE;QACd,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAkC,CAAC,CAAA;QAEtE,QAAQ,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAA;IACzC,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAMjE,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,MAAM,CAAC,EAAE;QACd,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAkC,CAAC,CAAA;QAEtE,QAAQ,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAA;QAEvC,cAAc,CAAC,MAAkC,CAAC,CAAA;IACpD,CAAC,CAAA;AACH,CAAC"}
@@ -15,4 +15,6 @@ export interface PropertyMetadata {
15
15
  export declare function getEntityMetadata(target: new (...args: any[]) => any): EntityMetadata;
16
16
  export declare function getEntityTableName(target: new (...args: any[]) => any): string;
17
17
  export declare function getEntityProperties(target: new (...args: any[]) => any): Map<string, PropertyMetadata>;
18
+ export declare function registerEntity(target: new (...args: any[]) => any): void;
19
+ export declare function getEntityByTableName(tableName: string): new (...args: any[]) => any;
18
20
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAID,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,cAAc,CAShB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,MAAM,CAIR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE/B"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,cAAc,CAShB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,MAAM,CAIR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAClC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE/B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,CAExE;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAChB,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAS7B"}
@@ -1,4 +1,5 @@
1
1
  const entityMetadataMap = new WeakMap();
2
+ const entityRegistry = new Map();
2
3
  export function getEntityMetadata(target) {
3
4
  let metadata = entityMetadataMap.get(target.prototype);
4
5
  if (!metadata) {
@@ -14,4 +15,13 @@ export function getEntityTableName(target) {
14
15
  export function getEntityProperties(target) {
15
16
  return getEntityMetadata(target).properties;
16
17
  }
18
+ export function registerEntity(target) {
19
+ entityRegistry.set(getEntityTableName(target), target);
20
+ }
21
+ export function getEntityByTableName(tableName) {
22
+ const entity = entityRegistry.get(tableName);
23
+ if (!entity)
24
+ throw new Error(`Could not find an entity for table "${tableName}": is it decorated with @Entity?`);
25
+ return entity;
26
+ }
17
27
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAkBA,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAA;AAE/D,MAAM,UAAU,iBAAiB,CAC/B,MAAmC;IAEnC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACjD,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAmC;IAEnC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE1C,OAAO,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAmC;IAEnC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAkBA,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAA;AAE/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuC,CAAA;AAErE,MAAM,UAAU,iBAAiB,CAC/B,MAAmC;IAEnC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACjD,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAmC;IAEnC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE1C,OAAO,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAmC;IAEnC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAmC;IAChE,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAAiB;IAEjB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAE5C,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,kCAAkC,CACnF,CAAA;IAEH,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -18,6 +18,12 @@ export interface FindOptions<T> extends FindOneOptions<T> {
18
18
  limit?: number;
19
19
  offset?: number;
20
20
  }
21
+ export interface UpsertOptions<T> {
22
+ conflictOn: (keyof EntityData<T> & string)[];
23
+ }
24
+ export interface DeleteOptions<T> {
25
+ where: FindWhere<T>;
26
+ }
21
27
  export declare class ORM extends SerializableClass {
22
28
  readonly config: ORMConfig;
23
29
  toSerializable(serializer: Serializer): Promise<{
@@ -44,8 +50,11 @@ export declare class ORM extends SerializableClass {
44
50
  });
45
51
  create<T>(entity: EntityConstructor<T>, data: EntityInsertData<T>): Promise<Ref<T>>;
46
52
  create<T>(entity: EntityConstructor<T>, data: EntityInsertData<T>[]): Promise<RefCollection<T>>;
53
+ upsert<T>(entity: EntityConstructor<T>, data: EntityInsertData<T>, options: UpsertOptions<T>): Promise<Ref<T>>;
54
+ upsert<T>(entity: EntityConstructor<T>, data: EntityInsertData<T>[], options: UpsertOptions<T>): Promise<RefCollection<T>>;
47
55
  findOne<T>(entity: EntityConstructor<T>, options: FindOneOptions<T>): Promise<Ref<T> | null>;
48
56
  find<T>(entity: EntityConstructor<T>, options?: FindOptions<T>): Promise<RefCollection<T>>;
49
57
  exists<T>(entity: EntityConstructor<T>, options: FindOneOptions<T>): Promise<boolean>;
58
+ delete<T>(entity: EntityConstructor<T>, options: DeleteOptions<T>): Promise<number>;
50
59
  }
51
60
  //# sourceMappingURL=ORM.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ORM.d.ts","sourceRoot":"","sources":["../../src/models/ORM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAMlD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAGjB,MAAM,mBAAmB,CAAA;AAM1B,MAAM,WAAW,SAAS;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACnB,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM;KAAE,CAAA;CAC1D;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,GAAI,SAAQ,iBAAiB;IACxC,SAAgB,MAAM,EAAG,SAAS,CAAA;IAErB,cAAc,CAAC,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;cAsBlC,gBAAgB,CAC9B,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjE,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC;gBAiBJ,MAAM,EAAE;QAClB,gBAAgB,EAAE,MAAM,CAAA;QACxB,QAAQ,EAAE,iBAAiB,EAAE,CAAA;KAC9B;IAaY,MAAM,CAAC,CAAC,EACnB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEL,MAAM,CAAC,CAAC,EACnB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAC1B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IA0Bf,OAAO,CAAC,CAAC,EACpB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAaZ,IAAI,CAAC,CAAC,EACjB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAaf,MAAM,CAAC,CAAC,EACnB,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,OAAO,CAAC;CAGpB"}
1
+ {"version":3,"file":"ORM.d.ts","sourceRoot":"","sources":["../../src/models/ORM.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,19 @@ import { History, SerializableClass, } from '@t4h.framework/core';
2
2
  import { Ref } from './Ref.js';
3
3
  import { RefCollection } from './RefCollection.js';
4
4
  import { ORMCreateActivity } from '../activities/ORMCreateActivity.js';
5
+ import { ORMDeleteActivity } from '../activities/ORMDeleteActivity.js';
5
6
  import { ORMFindActivity } from '../activities/ORMFindActivity.js';
6
7
  import { ORMFindOneActivity } from '../activities/ORMFindOneActivity.js';
8
+ import { ORMUpsertActivity } from '../activities/ORMUpsertActivity.js';
7
9
  import { applyDefaultProperties } from '../constraints/apply-default-properties.js';
8
10
  import { assertConstraints } from '../constraints/assert-constraints.js';
9
11
  import { getEntityMetadata, getEntityTableName, } from '../decorators/metadata.js';
12
+ import { ConstraintError } from '../errors/ConstraintError.js';
10
13
  const create = History.bind(ORMCreateActivity);
11
14
  const find = History.bind(ORMFindActivity);
12
15
  const findOne = History.bind(ORMFindOneActivity);
16
+ const upsert = History.bind(ORMUpsertActivity);
17
+ const deleteOp = History.bind(ORMDeleteActivity);
13
18
  export class ORM extends SerializableClass {
14
19
  config;
15
20
  async toSerializable(serializer) {
@@ -67,6 +72,31 @@ export class ORM extends SerializableClass {
67
72
  return new RefCollection(this, entity, result);
68
73
  return new Ref(this, entity, result[0]);
69
74
  }
75
+ async upsert(entity, data, options) {
76
+ const isBatch = Array.isArray(data);
77
+ const { conflictOn } = options;
78
+ if (!conflictOn.length)
79
+ throw new Error('Upsert conflictOn properties cannot be empty');
80
+ const updates = (isBatch ? data : [data]);
81
+ for (const row of updates)
82
+ for (const key of conflictOn)
83
+ if (row[key] === undefined)
84
+ throw new ConstraintError(`Property "${key}" is required to upsert`);
85
+ const inserts = applyDefaultProperties(updates, getEntityMetadata(entity));
86
+ await assertConstraints(entity, inserts);
87
+ const result = await upsert({
88
+ orm: this,
89
+ table: getEntityTableName(entity),
90
+ conflictOn,
91
+ data: inserts.map((insert, index) => ({
92
+ insert,
93
+ update: updates[index],
94
+ })),
95
+ });
96
+ if (isBatch)
97
+ return new RefCollection(this, entity, result);
98
+ return new Ref(this, entity, result[0]);
99
+ }
70
100
  async findOne(entity, options) {
71
101
  const ref = await findOne({
72
102
  orm: this,
@@ -92,5 +122,12 @@ export class ORM extends SerializableClass {
92
122
  async exists(entity, options) {
93
123
  return (await this.findOne(entity, options)) !== null;
94
124
  }
125
+ async delete(entity, options) {
126
+ return deleteOp({
127
+ orm: this,
128
+ table: getEntityTableName(entity),
129
+ where: options.where,
130
+ });
131
+ }
95
132
  }
96
133
  //# sourceMappingURL=ORM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ORM.js","sourceRoot":"","sources":["../../src/models/ORM.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ORM.js","sourceRoot":"","sources":["../../src/models/ORM.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import { SerializableClass, type Deserializer, type PromiseLikeType, type Serializer } from '@t4h.framework/core';
1
2
  import type { ORM } from './ORM.js';
2
3
  import type { EntityConstructor, EntityPartialData, SerializableRowRef } from '../typings/ORM.js';
3
- export declare class Ref<T> {
4
+ export declare class Ref<T> extends SerializableClass {
4
5
  private readonly orm;
5
6
  private readonly entity;
6
7
  private readonly ref;
@@ -8,5 +9,11 @@ export declare class Ref<T> {
8
9
  getSnapshot(): Promise<T | null>;
9
10
  update(data: EntityPartialData<T>): Promise<void>;
10
11
  remove(): Promise<void>;
12
+ toSerializable(serializer: Serializer): Promise<{
13
+ orm: import("@t4h.framework/core").Serializable;
14
+ table: string;
15
+ ref: import("@t4h.framework/core").Serializable;
16
+ }>;
17
+ protected fromSerializable(serializable: PromiseLikeType<ReturnType<this['toSerializable']>>, deserializer: Deserializer): Promise<void>;
11
18
  }
12
19
  //# sourceMappingURL=Ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAUnC,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAA;AAM1B,qBAAa,GAAG,CAAC,CAAC;IAEd,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,GAAG,EAAE,kBAAkB;IAG7B,WAAW,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBhC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAOrC"}
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAWnC,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAA;AAM1B,qBAAa,GAAG,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,GAAG,EAAE,kBAAkB;IAK7B,WAAW,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAgBhC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,cAAc,CAAC,UAAU,EAAE,UAAU;;;;;cAQlC,gBAAgB,CAC9B,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjE,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC;CAOjB"}
@@ -1,18 +1,19 @@
1
- import { History } from '@t4h.framework/core';
1
+ import { History, SerializableClass, } from '@t4h.framework/core';
2
2
  import { ORMGetSnapshotActivity } from '../activities/ORMGetSnapshotActivity.js';
3
3
  import { ORMRemoveActivity } from '../activities/ORMRemoveActivity.js';
4
4
  import { ORMUpdateActivity } from '../activities/ORMUpdateActivity.js';
5
5
  import { applyDefaultProperties } from '../constraints/apply-default-properties.js';
6
6
  import { assertConstraints } from '../constraints/assert-constraints.js';
7
- import { getEntityMetadata, getEntityTableName, } from '../decorators/metadata.js';
7
+ import { getEntityByTableName, getEntityMetadata, getEntityTableName, } from '../decorators/metadata.js';
8
8
  const getSnapshotOp = History.bind(ORMGetSnapshotActivity);
9
9
  const update = History.bind(ORMUpdateActivity);
10
10
  const remove = History.bind(ORMRemoveActivity);
11
- export class Ref {
11
+ export class Ref extends SerializableClass {
12
12
  orm;
13
13
  entity;
14
14
  ref;
15
15
  constructor(orm, entity, ref) {
16
+ super();
16
17
  this.orm = orm;
17
18
  this.entity = entity;
18
19
  this.ref = ref;
@@ -49,5 +50,19 @@ export class Ref {
49
50
  ref: this.ref,
50
51
  });
51
52
  }
53
+ async toSerializable(serializer) {
54
+ return {
55
+ orm: await serializer(this.orm),
56
+ table: getEntityTableName(this.entity),
57
+ ref: await serializer(this.ref),
58
+ };
59
+ }
60
+ async fromSerializable(serializable, deserializer) {
61
+ Object.assign(this, {
62
+ orm: await deserializer(serializable.orm),
63
+ entity: getEntityByTableName(serializable.table),
64
+ ref: await deserializer(serializable.ref),
65
+ });
66
+ }
52
67
  }
53
68
  //# sourceMappingURL=Ref.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.js","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAQlC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;AAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;AAE9C,MAAM,OAAO,GAAG;IAEK;IACA;IACA;IAHnB,YACmB,GAAQ,EACR,MAA4B,EAC5B,GAAuB;QAFvB,QAAG,GAAH,GAAG,CAAK;QACR,WAAM,GAAN,MAAM,CAAsB;QAC5B,QAAG,GAAH,GAAG,CAAoB;IACvC,CAAC;IAEG,KAAK,CAAC,WAAW;QACtB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAW,CAAA;QAE3D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAE7B,OAAO,MAAW,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAA0B;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9B,MAAM,GAAG,GAAG,sBAAsB,CAChC,IAAqB,EACrB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9B,IAAI,CACY,CAAA;QAElB,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;YAC1C,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,GAAG;SACV,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,MAAM,MAAM,CAAC;YACX,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Ref.js","sourceRoot":"","sources":["../../src/models/Ref.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,13 @@
1
+ import { SerializableClass, type Deserializer, type PromiseLikeType, type Serializer } from '@t4h.framework/core';
1
2
  import type { ORM } from './ORM.js';
2
3
  import { Ref } from './Ref.js';
3
4
  import type { EntityConstructor, SerializableRowRef } from '../typings/ORM.js';
4
- export declare class RefCollection<T> {
5
+ export declare class RefCollection<T> extends SerializableClass {
5
6
  private readonly refs;
7
+ toSerializable(serializer: Serializer): Promise<{
8
+ refs: import("@t4h.framework/core").Serializable[];
9
+ }>;
10
+ protected fromSerializable(serializable: PromiseLikeType<ReturnType<this['toSerializable']>>, deserializer: Deserializer): Promise<void>;
6
11
  constructor(orm: ORM, entity: EntityConstructor<T>, refs: SerializableRowRef[]);
7
12
  toArray(): Ref<T>[];
8
13
  get length(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"RefCollection.d.ts","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,qBAAa,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAG7B,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,kBAAkB,EAAE;IAKrB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;IAI1B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;IAI/B,GAAG,CAAC,CAAC,EAChB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,EAAE,CAAC;IAIF,OAAO,CAClB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC;IAIH,MAAM,CACjB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAIb,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAG7C"}
1
+ {"version":3,"file":"RefCollection.d.ts","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE9E,qBAAa,aAAa,CAAC,CAAC,CAAE,SAAQ,iBAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAEnB,cAAc,CAAC,UAAU,EAAE,UAAU;;;cAMlC,gBAAgB,CAC9B,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjE,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC;gBAOd,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,kBAAkB,EAAE;IASrB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;IAI1B,IAAW,MAAM,IAAI,MAAM,CAE1B;IAEM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;IAI/B,GAAG,CAAC,CAAC,EAChB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,EAAE,CAAC;IAIF,OAAO,CAClB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvD,OAAO,CAAC,IAAI,CAAC;IAIH,MAAM,CACjB,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAIb,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAG7C"}
@@ -1,7 +1,21 @@
1
+ import { SerializableClass, } from '@t4h.framework/core';
1
2
  import { Ref } from './Ref.js';
2
- export class RefCollection {
3
+ export class RefCollection extends SerializableClass {
3
4
  refs;
5
+ async toSerializable(serializer) {
6
+ return {
7
+ refs: await Promise.all(this.refs.map(ref => serializer(ref))),
8
+ };
9
+ }
10
+ async fromSerializable(serializable, deserializer) {
11
+ Object.assign(this, {
12
+ refs: await Promise.all(serializable.refs.map(ref => deserializer(ref))),
13
+ });
14
+ }
4
15
  constructor(orm, entity, refs) {
16
+ super();
17
+ if (!refs)
18
+ return;
5
19
  this.refs = refs.map(ref => new Ref(orm, entity, ref));
6
20
  }
7
21
  toArray() {
@@ -1 +1 @@
1
- {"version":3,"file":"RefCollection.js","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9B,MAAM,OAAO,aAAa;IACP,IAAI,CAAU;IAE/B,YACE,GAAQ,EACR,MAA4B,EAC5B,IAA0B;QAE1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAEM,EAAE,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,EAAkD;QAElD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,EAAwD;QAExD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAA8D;QAE9D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"RefCollection.js","sourceRoot":"","sources":["../../src/models/RefCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAIlB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9B,MAAM,OAAO,aAAiB,SAAQ,iBAAiB;IACpC,IAAI,CAAW;IAEzB,KAAK,CAAC,cAAc,CAAC,UAAsB;QAChD,OAAO;YACL,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/D,CAAA;IACH,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC9B,YAAiE,EACjE,YAA0B;QAE1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAClB,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE,CAAC,CAAA;IACJ,CAAC;IAED,YACE,GAAQ,EACR,MAA4B,EAC5B,IAA0B;QAE1B,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;IACxD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;IACzB,CAAC;IAEM,EAAE,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,EAAkD;QAElD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,EAAwD;QAExD,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,EAA8D;QAE9D,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,CAAC;IAEM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;IACrC,CAAC;CACF"}
package/dist/orm.d.ts CHANGED
@@ -10,8 +10,10 @@ export * from './models/RefCollection.js';
10
10
  export * from './activities/ORMCreateActivity.js';
11
11
  export * from './activities/ORMFindOneActivity.js';
12
12
  export * from './activities/ORMRemoveActivity.js';
13
+ export * from './activities/ORMDeleteActivity.js';
13
14
  export * from './activities/ORMFindActivity.js';
14
15
  export * from './activities/ORMGetSnapshotActivity.js';
15
16
  export * from './activities/ORMUpdateActivity.js';
17
+ export * from './activities/ORMUpsertActivity.js';
16
18
  export * from './typings/ORM.js';
17
19
  //# sourceMappingURL=orm.d.ts.map
package/dist/orm.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"orm.d.ts","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA"}
package/dist/orm.js CHANGED
@@ -10,8 +10,10 @@ export * from './models/RefCollection.js';
10
10
  export * from './activities/ORMCreateActivity.js';
11
11
  export * from './activities/ORMFindOneActivity.js';
12
12
  export * from './activities/ORMRemoveActivity.js';
13
+ export * from './activities/ORMDeleteActivity.js';
13
14
  export * from './activities/ORMFindActivity.js';
14
15
  export * from './activities/ORMGetSnapshotActivity.js';
15
16
  export * from './activities/ORMUpdateActivity.js';
17
+ export * from './activities/ORMUpsertActivity.js';
16
18
  export * from './typings/ORM.js';
17
19
  //# sourceMappingURL=orm.js.map
package/dist/orm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"orm.js","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"orm.js","sourceRoot":"","sources":["../src/orm.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AAEpC,cAAc,6BAA6B,CAAA;AAE3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AAExC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AAEjD,cAAc,kBAAkB,CAAA"}
@@ -44,5 +44,20 @@ export type SerializableRemoveInput<R extends SerializableRowRef> = {
44
44
  table: string;
45
45
  ref: R;
46
46
  };
47
+ export type SerializableUpsertRow = {
48
+ insert: SerializedRow;
49
+ update: SerializedRow;
50
+ };
51
+ export type SerializableUpsertInput = {
52
+ orm: ORM;
53
+ table: string;
54
+ conflictOn: string[];
55
+ data: SerializableUpsertRow[];
56
+ };
57
+ export type SerializableDeleteInput = {
58
+ orm: ORM;
59
+ table: string;
60
+ where: SerializableWhere;
61
+ };
47
62
  export {};
48
63
  //# sourceMappingURL=ORM.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ORM.d.ts","sourceRoot":"","sources":["../../src/typings/ORM.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,CAAA;AAEpD,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AAEjC,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;KACjC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAC5B,KAAK,GACL,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACf,KAAK,GACL,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACf,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpD,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpD,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;AAEzD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAExD,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAE7C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAE5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,iBAAiB,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,aAAa,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,kBAAkB,IAAI;IACvE,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,CAAA;CACP,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IAClE,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,CAAA;IACN,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IAClE,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,CAAA;CACP,CAAA"}
1
+ {"version":3,"file":"ORM.d.ts","sourceRoot":"","sources":["../../src/typings/ORM.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/orm",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "description": "ORM module for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/orm",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",
@@ -35,12 +35,12 @@
35
35
  "reflect-metadata": "^0.2.2"
36
36
  },
37
37
  "devDependencies": {
38
- "@t4h.framework/core": "^0.15.0",
38
+ "@t4h.framework/core": "^0.17.0",
39
39
  "typescript": "^5.9.3",
40
40
  "vitest": "^4.0.18"
41
41
  },
42
42
  "peerDependencies": {
43
- "@t4h.framework/core": "^0.15.0"
43
+ "@t4h.framework/core": ">=0.15.0 <1.0.0"
44
44
  },
45
45
  "packageManager": "yarn@4.12.0",
46
46
  "engines": {