@t4h.framework/orm 0.11.2 → 0.11.4
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/.ai/skills/framework-orm/SKILL.md +8 -19
- package/CHANGELOG.md +30 -0
- package/README.md +14 -1
- package/dist/activities/ORMFindOneActivity.d.ts +2 -0
- package/dist/activities/ORMFindOneActivity.d.ts.map +1 -1
- package/dist/activities/ORMLoadActivity.d.ts.map +1 -1
- package/dist/activities/ORMLoadActivity.js +6 -5
- package/dist/activities/ORMLoadActivity.js.map +1 -1
- package/dist/activities/ORMLoadRelationActivity.d.ts.map +1 -1
- package/dist/activities/ORMLoadRelationActivity.js +2 -2
- package/dist/activities/ORMLoadRelationActivity.js.map +1 -1
- package/dist/claims/ORMClaim.js.map +1 -1
- package/dist/constraints/assert-constraints.d.ts +1 -1
- package/dist/constraints/assert-constraints.d.ts.map +1 -1
- package/dist/constraints/assert-constraints.js +1 -1
- package/dist/constraints/assert-constraints.js.map +1 -1
- package/dist/constraints/assert-property-type-constraint.js.map +1 -1
- package/dist/decorators/Entity.d.ts.map +1 -1
- package/dist/decorators/Entity.js +1 -1
- package/dist/decorators/Entity.js.map +1 -1
- package/dist/decorators/Index.d.ts.map +1 -1
- package/dist/decorators/Index.js.map +1 -1
- package/dist/decorators/ManyToOne.js.map +1 -1
- package/dist/decorators/OneToMany.d.ts +1 -1
- package/dist/decorators/OneToMany.d.ts.map +1 -1
- package/dist/decorators/OneToMany.js.map +1 -1
- package/dist/decorators/Property.d.ts.map +1 -1
- package/dist/decorators/Property.js.map +1 -1
- package/dist/decorators/metadata.d.ts +11 -9
- package/dist/decorators/metadata.d.ts.map +1 -1
- package/dist/decorators/metadata.js.map +1 -1
- package/dist/helpers/Insert.d.ts +4 -3
- package/dist/helpers/Insert.d.ts.map +1 -1
- package/dist/helpers/Insert.js +22 -15
- package/dist/helpers/Insert.js.map +1 -1
- package/dist/helpers/Populate.d.ts.map +1 -1
- package/dist/helpers/Populate.js +10 -5
- package/dist/helpers/Populate.js.map +1 -1
- package/dist/helpers/Serialize.d.ts +4 -3
- package/dist/helpers/Serialize.d.ts.map +1 -1
- package/dist/helpers/Serialize.js +20 -18
- package/dist/helpers/Serialize.js.map +1 -1
- package/dist/helpers/isPlainObject.js.map +1 -1
- package/dist/helpers/refs.d.ts +1 -1
- package/dist/helpers/refs.d.ts.map +1 -1
- package/dist/helpers/refs.js.map +1 -1
- package/dist/models/MapCollection.d.ts +1 -0
- package/dist/models/MapCollection.d.ts.map +1 -1
- package/dist/models/MapCollection.js +12 -5
- package/dist/models/MapCollection.js.map +1 -1
- package/dist/models/ORM.d.ts +2 -0
- package/dist/models/ORM.d.ts.map +1 -1
- package/dist/models/ORM.js +58 -25
- package/dist/models/ORM.js.map +1 -1
- package/dist/models/Ref.d.ts.map +1 -1
- package/dist/models/Ref.js +3 -2
- package/dist/models/Ref.js.map +1 -1
- package/dist/models/RefCollection.d.ts.map +1 -1
- package/dist/models/RefCollection.js +6 -4
- package/dist/models/RefCollection.js.map +1 -1
- package/dist/typings/FindWhere.d.ts +1 -1
- package/dist/typings/FindWhere.d.ts.map +1 -1
- package/dist/typings/ORM.d.ts +5 -5
- package/dist/typings/ORM.d.ts.map +1 -1
- package/dist/typings/Relations.d.ts +2 -2
- package/dist/typings/Relations.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -13,7 +13,7 @@ description: >-
|
|
|
13
13
|
|
|
14
14
|
ORM activities, claim, and models for database operations within workflows. Package path: `framework/packages/orm`. Peer dependency: `@t4h.framework/core`.
|
|
15
15
|
|
|
16
|
-
Import from
|
|
16
|
+
Import from the package entry `@t4h.framework/orm`. Its `exports` map has only `.`, so `tsc` rejects a deep import.
|
|
17
17
|
|
|
18
18
|
```typescript
|
|
19
19
|
import {
|
|
@@ -49,16 +49,7 @@ Node `>=22`. See [README.md](../../../README.md).
|
|
|
49
49
|
|
|
50
50
|
## Defining entities
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
```json
|
|
55
|
-
{
|
|
56
|
-
"compilerOptions": {
|
|
57
|
-
"experimentalDecorators": true,
|
|
58
|
-
"emitDecoratorMetadata": true
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
```
|
|
52
|
+
Set `experimentalDecorators` and `emitDecoratorMetadata` to `true` in the `compilerOptions` of the project `tsconfig.json`.
|
|
62
53
|
|
|
63
54
|
Import `reflect-metadata` where decorators are evaluated (Property decorator imports it).
|
|
64
55
|
|
|
@@ -96,13 +87,13 @@ Class-level composite indexes:
|
|
|
96
87
|
class Account { /* ... */ }
|
|
97
88
|
```
|
|
98
89
|
|
|
99
|
-
`properties`
|
|
90
|
+
An empty `properties` throws (`decorators/Index.ts`). Per-property `@Property({ index: true })` also registers `{ properties: [propertyKey] }`.
|
|
100
91
|
|
|
101
92
|
---
|
|
102
93
|
|
|
103
94
|
## ORM configuration
|
|
104
95
|
|
|
105
|
-
`ORM` extends `SerializableClass` — instances can be serialized for workflow persistence. `connectionString` is
|
|
96
|
+
`ORM` extends `SerializableClass` — instances can be serialized for workflow persistence. `connectionString` is typed `Secret` (a string is a `tsc` error): pass the `EnvDesign` entry declared `type: Secret`. The host reads the value where each query runs.
|
|
106
97
|
|
|
107
98
|
```typescript
|
|
108
99
|
import { environments } from '../constants/environments.js'
|
|
@@ -158,7 +149,7 @@ const userRef = await orm.upsert(
|
|
|
158
149
|
)
|
|
159
150
|
```
|
|
160
151
|
|
|
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.
|
|
152
|
+
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. An empty `conflictOn`, or a row with no value for a `conflictOn` property, throws (`ConstraintError` for a missing key, `Error` for an empty `conflictOn`). 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
153
|
|
|
163
154
|
### Find
|
|
164
155
|
|
|
@@ -280,13 +271,11 @@ abstract class ORMClaim<R extends SerializableRowRef> {
|
|
|
280
271
|
|
|
281
272
|
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.
|
|
282
273
|
|
|
283
|
-
The `ORM`/`Ref` calls run inside a workflow (the runtime, or `TestWorkflowEnvironment` in tests, provides the reconciler context).
|
|
284
|
-
|
|
285
274
|
---
|
|
286
275
|
|
|
287
276
|
## Activities
|
|
288
277
|
|
|
289
|
-
These are the **shipped, replay-safe activities** the `ORM`/`Ref` APIs drive for you (you can also pass them to `History.reconciler` directly).
|
|
278
|
+
These are the **shipped, replay-safe activities** the `ORM`/`Ref` APIs drive for you (you can also pass them to `History.reconciler` directly). `@t4h.framework/core/no-framework-activity-in-app` rejects `new` and `extends` on them:
|
|
290
279
|
|
|
291
280
|
| Activity | Input | Output |
|
|
292
281
|
|----------|-------|--------|
|
|
@@ -352,11 +341,11 @@ called: `expect(mockCreate).not.toHaveBeenCalled()`.
|
|
|
352
341
|
|
|
353
342
|
## Checklist for agents
|
|
354
343
|
|
|
355
|
-
1. **`@Entity` + `@Property`**
|
|
344
|
+
1. **`@Entity` + `@Property`** on each entity class.
|
|
356
345
|
2. Register entities in **`ORM({ entities: [...] })`**; runtime provides **`ORMClaim`**.
|
|
357
346
|
3. Use **`orm` / `Ref` APIs** in workflows — not raw SQL or direct claim calls.
|
|
358
347
|
4. Handle **`ConstraintError`**; validation runs before activities.
|
|
359
348
|
5. **`Ref.update`** is partial; **`getSnapshot`** returns entity instances.
|
|
360
|
-
6. Test workflows with **`TestWorkflowEnvironment`** + **`mockClaim(ORMClaim, ...)
|
|
349
|
+
6. Test workflows with **`TestWorkflowEnvironment`** + **`mockClaim(ORMClaim, ...)`**.
|
|
361
350
|
|
|
362
351
|
See also: `packages/orm/README.md`; **framework-workflow-testing** for the test harness.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# @t4h.framework/orm
|
|
2
2
|
|
|
3
|
+
## 0.11.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#241](https://github.com/tech4humans-brasil/framework/pull/241) [`f6b8454`](https://github.com/tech4humans-brasil/framework/commit/f6b845484d22e7c8e7240fe2e113f1cdea7c8ce3) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds seven rules to `@t4h.framework/core/eslint` and turns them on in `configs.recommended`:
|
|
8
|
+
- `no-io-in-workflow` reports `fetch` and calls to network, file, database and mail modules in a workflow and in the `constructor`, `toInput` and `toOutput` of an activity. It also reports `zlib` and `stream` calls there, because they work on the content in memory on each replay.
|
|
9
|
+
- `no-binary-subclass` reports a class that extends `Binary`.
|
|
10
|
+
- `no-framework-activity-in-app` reports `new` and `extends` on an activity of a framework package other than the core.
|
|
11
|
+
- `no-testing-import-in-source` reports an import of a `@t4h.framework/<package>/testing` entry out of a test file.
|
|
12
|
+
- `require-workflow-id` reports a `Workflow` with no `id`.
|
|
13
|
+
- `no-secret-to-string` reports a `Secret` that becomes a string.
|
|
14
|
+
- `no-literal-secret-in-authorization` reports a string literal in the `secret` or `clientSecret` field of an `Authorization`.
|
|
15
|
+
|
|
16
|
+
The package skills now name these rules in place of the text that the rules enforce. The docs and skills give each `Workflow` an `id`, read the HMAC secret from `EnvDesign`, and do not document a custom HTTP activity.
|
|
17
|
+
|
|
18
|
+
- [#243](https://github.com/tech4humans-brasil/framework/pull/243) [`0ffd663`](https://github.com/tech4humans-brasil/framework/commit/0ffd663ce8369edd7b54206cb3216568ad1de471) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - The README examples read each value from `environments`, an `EnvDesign` in `src/constants/environments.ts`, and pass each credential as a `Secret`. They no longer use `process.env`, the raw `env` from the core or a literal in a `Secret` field. The jwks README describes the real context fields (`signature`, `rawPayload`) and says that a token that `jwt.verify` rejects throws.
|
|
19
|
+
|
|
20
|
+
- [#240](https://github.com/tech4humans-brasil/framework/pull/240) [`0606115`](https://github.com/tech4humans-brasil/framework/commit/0606115e2e0baa994e9f0ed3559ee54ecac88e44) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - The skills do not repeat a rule that a lint rule, `tsc` or a runtime error already enforces. Each such rule is now one line that names the gate. The examples that broke a gate (`process.env`, `as any`, an inline secret, an `EnvDesign` in a workflow file, `ref.output` before `wait()`) are correct now.
|
|
21
|
+
|
|
22
|
+
- [#226](https://github.com/tech4humans-brasil/framework/pull/226) [`e11c2ee`](https://github.com/tech4humans-brasil/framework/commit/e11c2ee0d959dff4ea1c8861ec036f9f299b743c) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - `RefCollection.filter` waits for an async predicate. Before, it kept every ref, because a pending promise is truthy. A missing relation, plan row or loaded row now throws a clear error. The `mappedBy` callback of `OneToMany` returns `Ref<unknown>` in place of `Ref<any>`.
|
|
23
|
+
|
|
24
|
+
## 0.11.3
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- [#217](https://github.com/tech4humans-brasil/framework/pull/217) [`8e104b5`](https://github.com/tech4humans-brasil/framework/commit/8e104b58051ee2b8638dae2da5a88e25433f29be) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - `ORMLoadActivity` and `ORMLoadRelationActivity` resolve entities from the `ORM`
|
|
29
|
+
in their input, not from the global entity registry. A process that did not
|
|
30
|
+
import the project no longer fails with `Could not find an entity for table`,
|
|
31
|
+
and two projects with the same table name no longer overwrite each other.
|
|
32
|
+
|
|
3
33
|
## 0.11.2
|
|
4
34
|
|
|
5
35
|
## 0.11.1
|
package/README.md
CHANGED
|
@@ -132,11 +132,24 @@ The `ORM` class provides a high-level API for database operations. It wraps the
|
|
|
132
132
|
|
|
133
133
|
### Creating records
|
|
134
134
|
|
|
135
|
+
The connection string is a `Secret`, so `tsc` rejects a string. Declare it with `type: Secret` in the `EnvDesign` in `src/constants/environments.ts`:
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
// src/constants/environments.ts
|
|
139
|
+
import { EnvDesign, Secret } from '@t4h.framework/core'
|
|
140
|
+
|
|
141
|
+
export const environments = EnvDesign({
|
|
142
|
+
DATABASE_URL: { type: Secret },
|
|
143
|
+
})
|
|
144
|
+
```
|
|
145
|
+
|
|
135
146
|
```typescript
|
|
136
147
|
import { ORM } from '@t4h.framework/orm'
|
|
137
148
|
|
|
149
|
+
import { environments } from './constants/environments.js'
|
|
150
|
+
|
|
138
151
|
const orm = new ORM({
|
|
139
|
-
connectionString:
|
|
152
|
+
connectionString: environments.DATABASE_URL,
|
|
140
153
|
entities: [User],
|
|
141
154
|
})
|
|
142
155
|
|
|
@@ -8,6 +8,8 @@ export declare class ORMFindOneActivity extends SyncActivity<[
|
|
|
8
8
|
toInput(input: SerializableFindInput): SerializableFindInput;
|
|
9
9
|
run(input: SerializableFindInput): Promise<string | number | boolean | import("@t4h.framework/core").Binary | import("@t4h.framework/core").SerializableClass | readonly import("@t4h.framework/core").Serializable[] | {
|
|
10
10
|
[x: string]: import("@t4h.framework/core").Serializable;
|
|
11
|
+
[x: number]: import("@t4h.framework/core").Serializable;
|
|
12
|
+
[x: symbol]: import("@t4h.framework/core").Serializable;
|
|
11
13
|
} | null>;
|
|
12
14
|
toOutput(output: SerializableRowRef | null): SerializableRowRef | null;
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ORMFindOneActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMFindOneActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;AAGzD,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAE1B,QAAA,MAAM,UAAU,eAAqC,CAAA;AAErD,qBAAa,kBAAmB,SAAQ,YAAY,CAClD;IAAC,KAAK,EAAE,qBAAqB;CAAC,EAC9B,qBAAqB,EACrB,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,IAAI,CAC1B;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAE3B;IAEK,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,qBAAqB;IAItD,GAAG,CAAC,KAAK,EAAE,qBAAqB
|
|
1
|
+
{"version":3,"file":"ORMFindOneActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMFindOneActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;AAGzD,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAE1B,QAAA,MAAM,UAAU,eAAqC,CAAA;AAErD,qBAAa,kBAAmB,SAAQ,YAAY,CAClD;IAAC,KAAK,EAAE,qBAAqB;CAAC,EAC9B,qBAAqB,EACrB,kBAAkB,GAAG,IAAI,EACzB,kBAAkB,GAAG,IAAI,CAC1B;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAE3B;IAEK,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,qBAAqB;IAItD,GAAG,CAAC,KAAK,EAAE,qBAAqB;;;;;IActC,QAAQ,CACb,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAChC,kBAAkB,GAAG,IAAI;CAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ORMLoadActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMLoadActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ORMLoadActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMLoadActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;AAWzD,OAAO,KAAK,EAEV,qBAAqB,EACrB,qBAAqB,EAEtB,MAAM,mBAAmB,CAAA;AAE1B,QAAA,MAAM,UAAU,eAAqC,CAAA;AAErD,qBAAa,eAAgB,SAAQ,YAAY,CAC/C;IAAC,KAAK,EAAE,qBAAqB;CAAC,EAC9B,qBAAqB,EACrB,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAChC,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,CACjC;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAE3B;IAEK,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,qBAAqB;IAItD,GAAG,CAAC,KAAK,EAAE,qBAAqB;IAyBtC,QAAQ,CACb,MAAM,EAAE,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,GACvC,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE;YAIrB,IAAI;YA0BJ,KAAK;YAUL,QAAQ;CA0DvB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SyncActivity, Claim } from '@t4h.framework/core';
|
|
2
2
|
import { ORMClaim } from '../claims/ORMClaim.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getEntityRelations, getEntityTableName, getInverseRelation, } from '../decorators/metadata.js';
|
|
4
4
|
import { Populate } from '../helpers/Populate.js';
|
|
5
5
|
import { toRefKey } from '../helpers/toRefKey.js';
|
|
6
6
|
const CLAIMS_KEY = Symbol('orm-load-activity-claims');
|
|
@@ -56,7 +56,7 @@ export class ORMLoadActivity extends SyncActivity {
|
|
|
56
56
|
async populate(orm, table, rows, tree) {
|
|
57
57
|
if (!rows.length)
|
|
58
58
|
return;
|
|
59
|
-
const entity =
|
|
59
|
+
const entity = orm.getEntity(table);
|
|
60
60
|
for (const relation of getEntityRelations(entity).values()) {
|
|
61
61
|
const nested = tree.get(relation.name);
|
|
62
62
|
if (!nested)
|
|
@@ -72,15 +72,16 @@ export class ORMLoadActivity extends SyncActivity {
|
|
|
72
72
|
});
|
|
73
73
|
await this.populate(orm, target, children, nested);
|
|
74
74
|
const groups = Map.groupBy(children, child => toRefKey(child.data[mappedBy]));
|
|
75
|
-
|
|
75
|
+
rows.forEach(row => {
|
|
76
76
|
row.relations[relation.name] = groups.get(toRefKey(row.ref)) ?? [];
|
|
77
|
+
});
|
|
77
78
|
continue;
|
|
78
79
|
}
|
|
79
80
|
const refs = rows.map(row => row.data[relation.name] ?? null);
|
|
80
81
|
const related = await this.read(orm, target, refs.filter(ref => ref !== null));
|
|
81
82
|
await this.populate(orm, target, [...related.values()], nested);
|
|
82
|
-
rows.forEach(
|
|
83
|
-
const ref =
|
|
83
|
+
rows.forEach(row => {
|
|
84
|
+
const ref = row.data[relation.name] ?? null;
|
|
84
85
|
if (ref !== null)
|
|
85
86
|
row.relations[relation.name] = related.get(toRefKey(ref)) ?? null;
|
|
86
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ORMLoadActivity.js","sourceRoot":"","sources":["../../src/activities/ORMLoadActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"ORMLoadActivity.js","sourceRoot":"","sources":["../../src/activities/ORMLoadActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AASjD,MAAM,UAAU,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAErD,MAAM,OAAO,eAAgB,SAAQ,YAKpC;IACkB,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC;QACxC,GAAG,EAAE,QAAQ;KACd,CAAC,CAAA;IAEK,OAAO,CAAC,KAA4B;QACzC,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAA4B;QAC3C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE5C,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;gBAC5B,GAAG;gBACH,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAE3C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAEpD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QAEzD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;IAC/D,CAAC;IAEM,QAAQ,CACb,MAAwC;QAExC,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,GAAQ,EACR,KAAa,EACb,IAA0B;QAE1B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAE3E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiC,CAAA;QAErD,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAE/B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;YACxD,GAAG;YACH,KAAK;YACL,IAAI,EAAE,MAAM;SACb,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YAE7B,IAAI,IAAI;gBAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAC,KAAK,CACjB,KAA4B;QAE5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAE1D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,GAAQ,EACR,KAAa,EACb,IAA6B,EAC7B,IAAmB;QAEnB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QAExB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAEnC,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAEtC,IAAI,CAAC,MAAM;gBAAE,SAAQ;YAErB,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;YAEpD,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACpC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAA;gBAE1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;oBAChC,GAAG;oBACH,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;oBACxD,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC1B,CAAC,CAAA;gBAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAElD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAC3C,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAC/B,CAAA;gBAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACjB,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;gBACpE,CAAC,CAAC,CAAA;gBAEF,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;YAE7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAC7B,GAAG,EACH,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CACjC,CAAA;YAED,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;YAE/D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;gBAE3C,IAAI,GAAG,KAAK,IAAI;oBACd,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAA;YACrE,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ORMLoadRelationActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMLoadRelationActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ORMLoadRelationActivity.d.ts","sourceRoot":"","sources":["../../src/activities/ORMLoadRelationActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,qBAAqB,CAAA;AAIzD,OAAO,KAAK,EACV,6BAA6B,EAC7B,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAE1B,QAAA,MAAM,UAAU,eAA8C,CAAA;AAE9D,qBAAa,uBAAwB,SAAQ,YAAY,CACvD;IAAC,KAAK,EAAE,6BAA6B;CAAC,EACtC,6BAA6B,EAC7B,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,EAC7B,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAC9B;IACC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAE3B;IAEK,OAAO,CACZ,KAAK,EAAE,6BAA6B,GACnC,6BAA6B;IAInB,GAAG,CAAC,EACf,GAAG,EACH,KAAK,EACL,IAAI,EACJ,QAAQ,EAAE,IAAI,GACf,EAAE,6BAA6B,GAAG,OAAO,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC;IAWlE,QAAQ,CACb,MAAM,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,GACpC,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE;CAGjC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SyncActivity, Claim } from '@t4h.framework/core';
|
|
2
2
|
import { ORMClaim } from '../claims/ORMClaim.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getEntityRelations } from '../decorators/metadata.js';
|
|
4
4
|
const CLAIMS_KEY = Symbol('orm-load-relation-activity-claims');
|
|
5
5
|
export class ORMLoadRelationActivity extends SyncActivity {
|
|
6
6
|
[CLAIMS_KEY] = new Claim({
|
|
@@ -10,7 +10,7 @@ export class ORMLoadRelationActivity extends SyncActivity {
|
|
|
10
10
|
return input;
|
|
11
11
|
}
|
|
12
12
|
async run({ orm, table, refs, relation: name, }) {
|
|
13
|
-
const relation = getEntityRelations(
|
|
13
|
+
const relation = getEntityRelations(orm.getEntity(table)).get(name);
|
|
14
14
|
if (relation?.kind !== 'many-to-one')
|
|
15
15
|
throw new Error(`Table "${table}" has no @ManyToOne "${name}"`);
|
|
16
16
|
const rows = await this[CLAIMS_KEY].orm.getSnapshots({ orm, table, refs });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ORMLoadRelationActivity.js","sourceRoot":"","sources":["../../src/activities/ORMLoadRelationActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"ORMLoadRelationActivity.js","sourceRoot":"","sources":["../../src/activities/ORMLoadRelationActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAM9D,MAAM,UAAU,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAA;AAE9D,MAAM,OAAO,uBAAwB,SAAQ,YAK5C;IACkB,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC;QACxC,GAAG,EAAE,QAAQ;KACd,CAAC,CAAA;IAEK,OAAO,CACZ,KAAoC;QAEpC,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,EACf,GAAG,EACH,KAAK,EACL,IAAI,EACJ,QAAQ,EAAE,IAAI,GACgB;QAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEnE,IAAI,QAAQ,EAAE,IAAI,KAAK,aAAa;YAClC,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,wBAAwB,IAAI,GAAG,CAAC,CAAA;QAEjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1E,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;IAC7C,CAAC;IAEM,QAAQ,CACb,MAAqC;QAErC,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ORMClaim.js","sourceRoot":"","sources":["../../src/claims/ORMClaim.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,MAAM,OAAgB,QAAQ;IAqBrB,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,
|
|
1
|
+
{"version":3,"file":"ORMClaim.js","sourceRoot":"","sources":["../../src/claims/ORMClaim.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,MAAM,OAAgB,QAAQ;IAqBrB,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,CAAC,CAAC,CAAC,CAC1C,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"}
|
|
@@ -2,6 +2,6 @@ import { type EntityConstructor, type SerializedRow } from '../orm.js';
|
|
|
2
2
|
interface AssertConstraintsOptions {
|
|
3
3
|
keys?: string[];
|
|
4
4
|
}
|
|
5
|
-
export declare function assertConstraints<T>(entity: EntityConstructor<T>, rows: SerializedRow[], options?: AssertConstraintsOptions):
|
|
5
|
+
export declare function assertConstraints<T>(entity: EntityConstructor<T>, rows: SerializedRow[], options?: AssertConstraintsOptions): void;
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=assert-constraints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-constraints.d.ts","sourceRoot":"","sources":["../../src/constraints/assert-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAIlB,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,
|
|
1
|
+
{"version":3,"file":"assert-constraints.d.ts","sourceRoot":"","sources":["../../src/constraints/assert-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAIlB,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC5B,IAAI,EAAE,aAAa,EAAE,EACrB,OAAO,CAAC,EAAE,wBAAwB,QAWnC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getEntityMetadata, } from '../orm.js';
|
|
2
2
|
import { assertNonNullablePropertyConstraint } from './assert-non-nullable-property-constraint.js';
|
|
3
3
|
import { assertPropertyTypeConstraint } from './assert-property-type-constraint.js';
|
|
4
|
-
export
|
|
4
|
+
export function assertConstraints(entity, rows, options) {
|
|
5
5
|
const entityMetadata = getEntityMetadata(entity);
|
|
6
6
|
assertPropertyTypeConstraint(rows, entityMetadata, {
|
|
7
7
|
keys: options?.keys,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-constraints.js","sourceRoot":"","sources":["../../src/constraints/assert-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAClG,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AAMnF,MAAM,
|
|
1
|
+
{"version":3,"file":"assert-constraints.js","sourceRoot":"","sources":["../../src/constraints/assert-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAClG,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AAMnF,MAAM,UAAU,iBAAiB,CAC/B,MAA4B,EAC5B,IAAqB,EACrB,OAAkC;IAElC,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAEhD,4BAA4B,CAAC,IAAI,EAAE,cAAc,EAAE;QACjD,IAAI,EAAE,OAAO,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,mCAAmC,CAAC,IAAI,EAAE,cAAc,EAAE;QACxD,IAAI,EAAE,OAAO,EAAE,IAAI;KACpB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert-property-type-constraint.js","sourceRoot":"","sources":["../../src/constraints/assert-property-type-constraint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9D,MAAM,UAAU,GACd,+EAA+E,CAAA;AAEjF,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"assert-property-type-constraint.js","sourceRoot":"","sources":["../../src/constraints/assert-property-type-constraint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9D,MAAM,UAAU,GACd,+EAA+E,CAAA;AAEjF,MAAM,aAAa,GAAyD;IAC1E,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ;IACrD,IAAI,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7E,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7E,OAAO,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS;IACvD,KAAK,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/C,IAAI,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,YAAY,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;IAC5E,MAAM,EAAE,CAAC,KAAc,EAAE,EAAE,CACzB,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;CACvE,CAAA;AAMD,MAAM,UAAU,4BAA4B,CAC1C,IAAqB,EACrB,MAAsB,EACtB,OAA6C;IAE7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACjB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAQ;YAE3D,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;YAEvB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,SAAQ;YAExB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAQ;YAEnD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAE1C,IAAI,CAAC,SAAS;gBACZ,MAAM,IAAI,eAAe,CACvB,aAAa,IAAI,2BAA2B,IAAI,CAAC,IAAI,GAAG,CACzD,CAAA;YAEH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACnB,MAAM,IAAI,eAAe,CACvB,aAAa,IAAI,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAClD,CAAA;QACL,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAQ7D"}
|
|
@@ -2,7 +2,7 @@ import { getEntityMetadata, registerEntity } from './metadata.js';
|
|
|
2
2
|
export function Entity(options) {
|
|
3
3
|
return target => {
|
|
4
4
|
const metadata = getEntityMetadata(target);
|
|
5
|
-
metadata.tableName = options
|
|
5
|
+
metadata.tableName = options.tableName;
|
|
6
6
|
registerEntity(target);
|
|
7
7
|
};
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/decorators/Entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAOjE,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,MAAM,CAAC,EAAE;QACd,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAsC,CAAC,CAAA;QAE1E,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAEtC,cAAc,CAAC,MAAsC,CAAC,CAAA;IACxD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../../src/decorators/Index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Index.d.ts","sourceRoot":"","sources":["../../src/decorators/Index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAS5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/decorators/Index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../src/decorators/Index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAQjD,MAAM,UAAU,KAAK,CAAC,OAAsB;IAC1C,OAAO,MAAM,CAAC,EAAE;QACd,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAErD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAsC,CAAC,CAAA;QAE1E,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManyToOne.js","sourceRoot":"","sources":["../../src/decorators/ManyToOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAOjD,MAAM,UAAU,SAAS,CACvB,MAA+B,EAC/B,OAA0B;IAE1B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"ManyToOne.js","sourceRoot":"","sources":["../../src/decorators/ManyToOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAOjD,MAAM,UAAU,SAAS,CACvB,MAA+B,EAC/B,OAA0B;IAE1B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAgC,CAAC,CAAA;QAE3E,MAAM,IAAI,GAAG,WAAqB,CAAA;QAElC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE7C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE;YAC3B,IAAI;YACJ,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -5,5 +5,5 @@ export interface OneToManyOptions<T> {
|
|
|
5
5
|
[K in keyof EntityData<T>]?: 'asc' | 'desc';
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
|
-
export declare function OneToMany<T>(entity: () => EntityConstructor<T>, mappedBy: (entity: T) => Ref<
|
|
8
|
+
export declare function OneToMany<T>(entity: () => EntityConstructor<T>, mappedBy: (entity: T) => Ref<unknown> | null | undefined, options?: OneToManyOptions<T>): PropertyDecorator;
|
|
9
9
|
//# sourceMappingURL=OneToMany.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToMany.d.ts","sourceRoot":"","sources":["../../src/decorators/OneToMany.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEtE,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM;KAAE,CAAA;CAC1D;AAID,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,EAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"OneToMany.d.ts","sourceRoot":"","sources":["../../src/decorators/OneToMany.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEtE,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM;KAAE,CAAA;CAC1D;AAID,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,iBAAiB,CAAC,CAAC,CAAC,EAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACxD,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5B,iBAAiB,CAsBnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OneToMany.js","sourceRoot":"","sources":["../../src/decorators/OneToMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAQjD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;AAEvE,MAAM,UAAU,SAAS,CACvB,MAAkC,EAClC,
|
|
1
|
+
{"version":3,"file":"OneToMany.js","sourceRoot":"","sources":["../../src/decorators/OneToMany.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAQjD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;AAEvE,MAAM,UAAU,SAAS,CACvB,MAAkC,EAClC,QAAwD,EACxD,OAA6B;IAE7B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,WAAqB,CAAA;QAElC,MAAM,QAAQ,GAAY,QAAQ,CAAC,aAAkB,CAAC,CAAA;QAEtD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAC9B,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,mFAAmF,CACvG,CAAA;QAEH,iBAAiB,CAAC,MAAM,CAAC,WAAgC,CAAC,CAAC,SAAS,CAAC,GAAG,CACtE,IAAI,EACJ;YACE,IAAI;YACJ,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,OAAO,EAAE,OAAqD;SACxE,CACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../src/decorators/Property.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Property.d.ts","sourceRoot":"","sources":["../../src/decorators/Property.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAGxE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;AAW5D,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAwBrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Property.js","sourceRoot":"","sources":["../../src/decorators/Property.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAyB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Property.js","sourceRoot":"","sources":["../../src/decorators/Property.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAyB,MAAM,eAAe,CAAA;AAKxE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAkB;IAC3C,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,KAAK,EAAE,OAAO,CAAC;IAChB,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,MAAM,EAAE,QAAQ,CAAC;CACnB,CAAC,CAAA;AAEF,MAAM,UAAU,QAAQ,CAAC,OAAyB;IAChD,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAgC,CAAC,CAAA;QAE3E,MAAM,QAAQ,GAAoB,EAAE,GAAG,OAAO,EAAE,CAAA;QAEhD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,UAAU,GAAY,OAAO,CAAC,WAAW,CAC7C,aAAa,EACb,MAAM,EACN,WAAW,CACZ,CAAA;YAED,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK;YAChB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,WAAqB,CAAC,EAAE,CAAC,CAAA;QAEhE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,WAAqB,EAAE;YAC7C,IAAI,EAAE,WAAqB;YAC3B,GAAG,QAAQ;SACZ,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Serializable } from '@t4h.framework/core';
|
|
2
2
|
import type { IndexMetadata } from './Index.js';
|
|
3
|
+
type EntityClass = new (...args: any[]) => any;
|
|
3
4
|
export interface EntityMetadata {
|
|
4
5
|
tableName?: string;
|
|
5
6
|
properties: Map<string, PropertyMetadata>;
|
|
@@ -9,13 +10,13 @@ export interface EntityMetadata {
|
|
|
9
10
|
export interface ManyToOneMetadata {
|
|
10
11
|
name: string;
|
|
11
12
|
kind: 'many-to-one';
|
|
12
|
-
entity: () =>
|
|
13
|
+
entity: () => EntityClass;
|
|
13
14
|
nullable?: boolean;
|
|
14
15
|
}
|
|
15
16
|
export interface OneToManyMetadata {
|
|
16
17
|
name: string;
|
|
17
18
|
kind: 'one-to-many';
|
|
18
|
-
entity: () =>
|
|
19
|
+
entity: () => EntityClass;
|
|
19
20
|
mappedBy: string;
|
|
20
21
|
orderBy?: Record<string, 'asc' | 'desc'>;
|
|
21
22
|
}
|
|
@@ -27,11 +28,12 @@ export interface PropertyMetadata {
|
|
|
27
28
|
default?: Serializable;
|
|
28
29
|
index?: boolean;
|
|
29
30
|
}
|
|
30
|
-
export declare function getEntityMetadata(target:
|
|
31
|
-
export declare function getEntityTableName(target:
|
|
32
|
-
export declare function getEntityProperties(target:
|
|
33
|
-
export declare function registerEntity(target:
|
|
34
|
-
export declare function getEntityByTableName(tableName: string):
|
|
35
|
-
export declare function getEntityRelations(target:
|
|
36
|
-
export declare function getInverseRelation(owner:
|
|
31
|
+
export declare function getEntityMetadata(target: EntityClass): EntityMetadata;
|
|
32
|
+
export declare function getEntityTableName(target: EntityClass): string;
|
|
33
|
+
export declare function getEntityProperties(target: EntityClass): Map<string, PropertyMetadata>;
|
|
34
|
+
export declare function registerEntity(target: EntityClass): void;
|
|
35
|
+
export declare function getEntityByTableName(tableName: string): EntityClass;
|
|
36
|
+
export declare function getEntityRelations(target: EntityClass): Map<string, RelationMetadata>;
|
|
37
|
+
export declare function getInverseRelation(owner: EntityClass, relation: OneToManyMetadata): ManyToOneMetadata;
|
|
38
|
+
export {};
|
|
37
39
|
//# 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;
|
|
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;AAG/C,KAAK,WAAW,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AAE9C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,MAAM,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,MAAM,WAAW,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,CAAA;CACzC;AAED,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;AAEpE,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,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,CASrE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAI9D;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,GAClB,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE/B;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAExD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CASnE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,GAClB,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAE/B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,iBAAiB,GAC1B,iBAAiB,CAWnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/decorators/metadata.ts"],"names":[],"mappings":"AAuCA,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAA;AAE/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAA;AAErD,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,IAAI,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAA;IAEhE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACvE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAmB,EAAE,QAAQ,CAAC,CAAA;IAC7D,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAmB;IACpD,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,MAAmB;IAEnB,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAmB;IAChD,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,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;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAmB;IAEnB,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAkB,EAClB,QAA2B;IAE3B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;IAEhC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEjE,IAAI,OAAO,EAAE,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,KAAK,KAAK;QAC/D,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,mBAAmB,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,oCAAoC,KAAK,CAAC,IAAI,EAAE,CAC5I,CAAA;IAEH,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/dist/helpers/Insert.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EntityConstructor } from '../typings/ORM.js';
|
|
2
2
|
export declare namespace Insert {
|
|
3
|
-
type Row = Record<string, unknown>;
|
|
3
|
+
export type Row = Record<string, unknown>;
|
|
4
4
|
interface Parents {
|
|
5
5
|
relation: string;
|
|
6
6
|
plan: Plan;
|
|
@@ -11,12 +11,13 @@ export declare namespace Insert {
|
|
|
11
11
|
plan: Plan;
|
|
12
12
|
parents: number[];
|
|
13
13
|
}
|
|
14
|
-
interface Plan {
|
|
14
|
+
export interface Plan {
|
|
15
15
|
entity: EntityConstructor;
|
|
16
16
|
rows: Row[];
|
|
17
17
|
parents: Parents[];
|
|
18
18
|
children: Children[];
|
|
19
19
|
}
|
|
20
|
-
function plan(entity: EntityConstructor, data: Row[], filled?: string): Promise<Plan>;
|
|
20
|
+
export function plan(entity: EntityConstructor, data: Row[], filled?: string): Promise<Plan>;
|
|
21
|
+
export {};
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=Insert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Insert.d.ts","sourceRoot":"","sources":["../../src/helpers/Insert.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,mBAAmB,CAAA;AAEzE,yBAAiB,MAAM,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"Insert.d.ts","sourceRoot":"","sources":["../../src/helpers/Insert.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,mBAAmB,CAAA;AAEzE,yBAAiB,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEzC,UAAU,OAAO;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,IAAI,CAAA;QACV,IAAI,EAAE,MAAM,EAAE,CAAA;KACf;IAED,UAAU,QAAQ;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB;IAED,MAAM,WAAW,IAAI;QACnB,MAAM,EAAE,iBAAiB,CAAA;QACzB,IAAI,EAAE,GAAG,EAAE,CAAA;QACX,OAAO,EAAE,OAAO,EAAE,CAAA;QAClB,QAAQ,EAAE,QAAQ,EAAE,CAAA;KACrB;IAcD,gBAAsB,IAAI,CACxB,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAmGf;;CACF"}
|
package/dist/helpers/Insert.js
CHANGED
|
@@ -7,9 +7,12 @@ import { ConstraintError } from '../errors/ConstraintError.js';
|
|
|
7
7
|
export var Insert;
|
|
8
8
|
(function (Insert) {
|
|
9
9
|
const group = (groups, key, create) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const existing = groups.get(key);
|
|
11
|
+
if (existing !== undefined)
|
|
12
|
+
return existing;
|
|
13
|
+
const created = create();
|
|
14
|
+
groups.set(key, created);
|
|
15
|
+
return created;
|
|
13
16
|
};
|
|
14
17
|
async function plan(entity, data, filled) {
|
|
15
18
|
const relations = getEntityRelations(entity);
|
|
@@ -23,17 +26,16 @@ export var Insert;
|
|
|
23
26
|
for (const relation of relations.values()) {
|
|
24
27
|
const { name } = relation;
|
|
25
28
|
const value = row[name];
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
continue;
|
|
29
|
+
const isOwningSide = relation.kind === 'many-to-one';
|
|
30
|
+
if (isOwningSide && isPlainObject(value)) {
|
|
29
31
|
const parent = group(parents, name, () => ({ data: [], rows: [] }));
|
|
30
32
|
parent.data.push(value);
|
|
31
33
|
parent.rows.push(index);
|
|
32
34
|
later.push(name);
|
|
33
|
-
|
|
35
|
+
Reflect.deleteProperty(row, name);
|
|
34
36
|
continue;
|
|
35
37
|
}
|
|
36
|
-
if (value === undefined)
|
|
38
|
+
if (isOwningSide || value === undefined)
|
|
37
39
|
continue;
|
|
38
40
|
if (!Array.isArray(value) || !value.every(isPlainObject))
|
|
39
41
|
throw new ConstraintError(`Property "${name}" takes the data of new ${relation.entity().name} rows`);
|
|
@@ -42,21 +44,26 @@ export var Insert;
|
|
|
42
44
|
child.data.push(item);
|
|
43
45
|
child.parents.push(index);
|
|
44
46
|
}
|
|
45
|
-
|
|
47
|
+
Reflect.deleteProperty(row, name);
|
|
46
48
|
}
|
|
47
49
|
Serialize.assertRelations(entity, [row], { except: later });
|
|
48
50
|
return row;
|
|
49
51
|
});
|
|
50
52
|
const defaulted = applyDefaultProperties(rows, getEntityMetadata(entity));
|
|
51
|
-
|
|
53
|
+
assertConstraints(entity, defaulted);
|
|
52
54
|
return {
|
|
53
55
|
entity,
|
|
54
56
|
rows: defaulted,
|
|
55
|
-
parents: await Promise.all([...parents].map(async ([
|
|
56
|
-
relation
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
parents: await Promise.all([...parents].map(async ([name, parent]) => {
|
|
58
|
+
const relation = relations.get(name);
|
|
59
|
+
if (!relation)
|
|
60
|
+
throw new Error(`"${entity.name}" has no relation "${name}" to insert`);
|
|
61
|
+
return {
|
|
62
|
+
relation: name,
|
|
63
|
+
plan: await plan(relation.entity(), parent.data),
|
|
64
|
+
rows: parent.rows,
|
|
65
|
+
};
|
|
66
|
+
})),
|
|
60
67
|
children: await Promise.all([...children].map(async ([name, child]) => {
|
|
61
68
|
const relation = relations.get(name);
|
|
62
69
|
const inverse = getInverseRelation(entity, relation).name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Insert.js","sourceRoot":"","sources":["../../src/helpers/Insert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9D,MAAM,KAAW,MAAM,
|
|
1
|
+
{"version":3,"file":"Insert.js","sourceRoot":"","sources":["../../src/helpers/Insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Populate.d.ts","sourceRoot":"","sources":["../../src/helpers/Populate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEnE,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhC,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/D,KAAK,GACL;KACG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;CACvE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Populate.d.ts","sourceRoot":"","sources":["../../src/helpers/Populate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEnE,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEhC,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/D,KAAK,GACL;KACG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;CACvE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;AAcrB,yBAAiB,QAAQ,CAAC;IACxB,KAAY,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAEpC,SAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAUrD;IAED,SAAgB,MAAM,CACpB,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,IAAI,CAiBN;CACF"}
|