joist-orm 1.0.684 → 1.0.688
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/build/src/EntityManager.d.ts +12 -55
- package/build/src/EntityManager.js +13 -14
- package/build/src/EntityManager.js.map +1 -1
- package/build/src/QueryBuilder.js +23 -25
- package/build/src/QueryBuilder.js.map +1 -1
- package/build/src/config.d.ts +2 -1
- package/build/src/config.js.map +1 -1
- package/build/src/createOrUpdatePartial.js +4 -4
- package/build/src/createOrUpdatePartial.js.map +1 -1
- package/build/src/drivers/InMemoryDriver.d.ts +1 -2
- package/build/src/drivers/InMemoryDriver.js +18 -10
- package/build/src/drivers/InMemoryDriver.js.map +1 -1
- package/build/src/drivers/PostgresDriver.d.ts +2 -2
- package/build/src/drivers/PostgresDriver.js +18 -19
- package/build/src/drivers/PostgresDriver.js.map +1 -1
- package/build/src/index.d.ts +1 -0
- package/build/src/index.js +9 -7
- package/build/src/index.js.map +1 -1
- package/build/src/loaded.d.ts +49 -0
- package/build/src/loaded.js +9 -0
- package/build/src/loaded.js.map +1 -0
- package/build/src/newTestInstance.d.ts +2 -1
- package/build/src/newTestInstance.js +3 -3
- package/build/src/newTestInstance.js.map +1 -1
- package/build/src/relations/PolymorphicReference.js +1 -1
- package/build/src/relations/PolymorphicReference.js.map +1 -1
- package/build/src/relations/hasAsyncProperty.d.ts +3 -2
- package/build/src/relations/hasAsyncProperty.js +3 -1
- package/build/src/relations/hasAsyncProperty.js.map +1 -1
- package/build/src/relations/hasManyDerived.d.ts +2 -1
- package/build/src/relations/hasManyDerived.js.map +1 -1
- package/build/src/relations/hasOneDerived.d.ts +3 -2
- package/build/src/relations/hasOneDerived.js.map +1 -1
- package/build/src/reverseHint.d.ts +2 -1
- package/build/src/reverseHint.js +2 -2
- package/build/src/reverseHint.js.map +1 -1
- package/build/src/serde.d.ts +75 -39
- package/build/src/serde.js +70 -55
- package/build/src/serde.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolymorphicReference.js","sourceRoot":"","sources":["../../../src/relations/PolymorphicReference.ts"],"names":[],"mappings":";;;;AAAA,oDAO0B;AAC1B,oCAYkB;AAClB,iEAA8D;AAC9D,+DAA4D;AAC5D,2CAAyC;AACzC,yCAAkD;AAElD,SAAgB,iBAAiB,CAC/B,SAAkB;IAElB,MAAM,MAAM,GAAG,4CAAiC,CAAC;IACjD,OAAO,IAAI,wBAAwB,CAAU,MAAM,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC;AALD,8CAKC;AAED,uFAAuF;AACvF,SAAgB,sBAAsB,CAAC,cAAmB;IACxD,OAAO,cAAc,YAAY,wBAAwB,CAAC;AAC5D,CAAC;AAFD,wDAEC;AAkBD;;;;;;;;;;GAUG;AACH,MAAa,wBACX,SAAQ,2CAAuB;IAQ/B,YAAoB,MAAS,EAAU,SAAkB;QACvD,KAAK,EAAE,CAAC;QADU,WAAM,GAAN,MAAM,CAAG;QAAU,cAAS,GAAT,SAAS,CAAS;QAJzD,qGAAqG;QAC7F,cAAS,GAAG,KAAK,CAAC;QA0M1B,QAAW,GAAM,IAAK,CAAC;QACvB,QAAW,GAAM,IAAK,CAAC;QACvB,QAAY,GAAM,IAAK,CAAC;QAvMtB,IAAI,CAAC,KAAK,GAAG,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"PolymorphicReference.js","sourceRoot":"","sources":["../../../src/relations/PolymorphicReference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Entity
|
|
1
|
+
import { Entity } from "../EntityManager";
|
|
2
|
+
import { Loaded, LoadHint } from "../loaded";
|
|
2
3
|
declare const I: unique symbol;
|
|
3
4
|
export interface AsyncProperty<T extends Entity, V> {
|
|
4
5
|
isLoaded: boolean;
|
|
@@ -16,7 +17,7 @@ export interface LoadedProperty<T extends Entity, V> {
|
|
|
16
17
|
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
17
18
|
* with `someProperty.get`.
|
|
18
19
|
*/
|
|
19
|
-
export declare function hasAsyncProperty<T extends Entity, H extends LoadHint<T>, V>(
|
|
20
|
+
export declare function hasAsyncProperty<T extends Entity, H extends LoadHint<T>, V>(loadHint: H, fn: (entity: Loaded<T, H>) => V): AsyncProperty<T, V>;
|
|
20
21
|
export declare class AsyncPropertyImpl<T extends Entity, H extends LoadHint<T>, V> implements AsyncProperty<T, V> {
|
|
21
22
|
private entity;
|
|
22
23
|
private loadHint;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isLoadedAsyncProperty = exports.isAsyncProperty = exports.AsyncPropertyImpl = exports.hasAsyncProperty = void 0;
|
|
4
|
+
const EntityManager_1 = require("../EntityManager");
|
|
4
5
|
const index_1 = require("../index");
|
|
5
6
|
const I = Symbol();
|
|
6
7
|
/**
|
|
@@ -11,7 +12,8 @@ const I = Symbol();
|
|
|
11
12
|
* But if `someProperty` is used as a populate hint, then it can be accessed synchronously,
|
|
12
13
|
* with `someProperty.get`.
|
|
13
14
|
*/
|
|
14
|
-
function hasAsyncProperty(
|
|
15
|
+
function hasAsyncProperty(loadHint, fn) {
|
|
16
|
+
const entity = EntityManager_1.currentlyInstantiatingEntity;
|
|
15
17
|
return new AsyncPropertyImpl(entity, loadHint, fn);
|
|
16
18
|
}
|
|
17
19
|
exports.hasAsyncProperty = hasAsyncProperty;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasAsyncProperty.js","sourceRoot":"","sources":["../../../src/relations/hasAsyncProperty.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hasAsyncProperty.js","sourceRoot":"","sources":["../../../src/relations/hasAsyncProperty.ts"],"names":[],"mappings":";;;AAAA,oDAAwE;AACxE,oCAAiC;AAGjC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;AAYnB;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,QAAW,EACX,EAA+B;IAE/B,MAAM,MAAM,GAAG,4CAAiC,CAAC;IACjD,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAND,4CAMC;AAED,MAAa,iBAAiB;IAG5B,YAAoB,MAAS,EAAU,QAAW,EAAU,EAA+B;QAAvE,WAAM,GAAN,MAAM,CAAG;QAAU,aAAQ,GAAR,QAAQ,CAAG;QAAU,OAAE,GAAF,EAAE,CAA6B;QAFnF,WAAM,GAAG,KAAK,CAAC;IAEuE,CAAC;IAE/F,IAAI;QACF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,OAAO,CAAC,IAAI,CAAC,WAAW,KAAhB,IAAI,CAAC,WAAW,GAAK,IAAA,aAAK,EAAC,MAAM,CAAC;iBACvC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;iBAC1B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,EAAC,CAAC;SACP;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,GAAG;QACL,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5B,OAAO,EAAE,CAAC,MAAsB,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AA1BD,8CA0BC;AAED,iFAAiF;AACjF,SAAgB,eAAe,CAAC,kBAAuB;IACrD,OAAO,kBAAkB,YAAY,iBAAiB,CAAC;AACzD,CAAC;AAFD,0CAEC;AAED,uFAAuF;AACvF,SAAgB,qBAAqB,CACnC,kBAAuB;IAEvB,OAAO,eAAe,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAJD,sDAIC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Collection } from "../";
|
|
2
|
-
import { Entity
|
|
2
|
+
import { Entity } from "../EntityManager";
|
|
3
|
+
import { Loaded, LoadHint } from "../loaded";
|
|
3
4
|
declare type HasManyDerivedOpts<T extends Entity, U extends Entity, H extends LoadHint<T>> = {
|
|
4
5
|
load?: (entity: T) => Promise<any>;
|
|
5
6
|
get: (entity: Loaded<T, H>) => readonly U[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasManyDerived.js","sourceRoot":"","sources":["../../../src/relations/hasManyDerived.ts"],"names":[],"mappings":";;;AAAA,2BAAsE;
|
|
1
|
+
{"version":3,"file":"hasManyDerived.js","sourceRoot":"","sources":["../../../src/relations/hasManyDerived.ts"],"names":[],"mappings":";;;AAAA,2BAAsE;AAGtE,yDAAsD;AAUtD;;;;;;GAMG;AACH,SAAgB,cAAc,CAC5B,QAAW,EACX,IAAiC;IAEjC,MAAM,MAAM,GAAM,gCAAiC,CAAC;IACpD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/B,OAAO,IAAI,mCAAgB,CAAO,MAAM,EAAE;QACxC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,SAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,GAAI,IAAY;KACjB,CAAC,CAAC;AACL,CAAC;AAVD,wCAUC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Entity } from "../EntityManager";
|
|
2
|
+
import { Loaded, LoadHint } from "../loaded";
|
|
3
|
+
import { Reference } from "./Reference";
|
|
3
4
|
/**
|
|
4
5
|
* Creates a CustomReference that can conditionally walk across references in the object graph.
|
|
5
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasOneDerived.js","sourceRoot":"","sources":["../../../src/relations/hasOneDerived.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"hasOneDerived.js","sourceRoot":"","sources":["../../../src/relations/hasOneDerived.ts"],"names":[],"mappings":";;;AAAA,2BAA0D;AAG1D,uDAAoD;AAGpD;;;;;;GAMG;AACH,SAAgB,aAAa,CAM3B,QAAW,EAAE,GAAgC;IAC7C,MAAM,MAAM,GAAM,gCAAiC,CAAC;IACpD,OAAO,IAAI,iCAAe,CAAU,MAAM,EAAE;QAC1C,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACrB,MAAM,IAAA,SAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAsB,CAAC;KACvC,CAAC,CAAC;AACL,CAAC;AAdD,sCAcC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Entity, EntityConstructor
|
|
1
|
+
import { Entity, EntityConstructor } from "./EntityManager";
|
|
2
|
+
import { LoadHint } from "./loaded";
|
|
2
3
|
/**
|
|
3
4
|
* Given a load hint of "given an entity, load these N things", return an array
|
|
4
5
|
* of what those N things are, and reversed load hints to "come back" to the
|
package/build/src/reverseHint.js
CHANGED
|
@@ -13,7 +13,7 @@ function reverseHint(entityType, hint) {
|
|
|
13
13
|
// For a simple string hint, i.e. Book "author", find the Book.author field,
|
|
14
14
|
// and use the metdata to find the otherFieldName, i.e. Author "books"
|
|
15
15
|
const meta = (0, EntityManager_1.getMetadata)(entityType);
|
|
16
|
-
const field = meta.fields
|
|
16
|
+
const field = meta.fields[hint] || (0, utils_1.fail)(`Invalid hint ${entityType.name} ${JSON.stringify(hint)}`);
|
|
17
17
|
if (field.kind !== "m2m" && field.kind !== "m2o" && field.kind !== "o2m" && field.kind !== "o2o") {
|
|
18
18
|
throw new Error("Invalid hint");
|
|
19
19
|
}
|
|
@@ -31,7 +31,7 @@ function reverseHint(entityType, hint) {
|
|
|
31
31
|
// key in the hash, and then combine
|
|
32
32
|
return Object.entries(hint).flatMap(([key, hint]) => {
|
|
33
33
|
const meta = (0, EntityManager_1.getMetadata)(entityType);
|
|
34
|
-
const field = meta.fields
|
|
34
|
+
const field = meta.fields[key] || (0, utils_1.fail)(`Invalid hint ${entityType.name} ${JSON.stringify(hint)}`);
|
|
35
35
|
if (field.kind !== "m2m" && field.kind !== "m2o" && field.kind !== "o2m" && field.kind !== "o2o") {
|
|
36
36
|
throw new Error("Invalid hint");
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverseHint.js","sourceRoot":"","sources":["../../src/reverseHint.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"reverseHint.js","sourceRoot":"","sources":["../../src/reverseHint.ts"],"names":[],"mappings":";;;AAAA,mDAAyE;AAEzE,mCAA+B;AAE/B;;;;GAIG;AACH,SAAgB,WAAW,CACzB,UAAgC,EAChC,IAAiB;IAEjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,4EAA4E;QAC5E,sEAAsE;QACtE,MAAM,IAAI,GAAG,IAAA,2BAAW,EAAC,UAAU,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAA,YAAI,EAAC,gBAAgB,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnG,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAChG,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACjC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACnD;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,uEAAuE;QACvE,uEAAuE;QACvE,wBAAwB;QACxB,OAAQ,IAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,IAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACtF;SAAM;QACL,wEAAwE;QACxE,oCAAoC;QACpC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,IAAA,2BAAW,EAAC,UAAU,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAA,YAAI,EAAC,gBAAgB,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClG,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;gBAChG,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAuC,CAAC;YAC1F,OAAO;gBACL,EAAE;gBACF,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;oBACrD,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAuC,CAAC;gBACpF,CAAC,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAtCD,kCAsCC"}
|
package/build/src/serde.d.ts
CHANGED
|
@@ -1,17 +1,40 @@
|
|
|
1
|
+
import { Field, SerdeField } from "./EntityManager";
|
|
1
2
|
import { EntityMetadata } from "./index";
|
|
2
|
-
export
|
|
3
|
+
export declare function hasSerde(field: Field): field is SerdeField;
|
|
4
|
+
/**
|
|
5
|
+
* The database/column serialization / deserialization details of a given field.
|
|
6
|
+
*
|
|
7
|
+
* Most implementations will have just a single column in `columns`, but some logical
|
|
8
|
+
* domain fields can be mapped to multiple physical database columns, i.e. polymorphic
|
|
9
|
+
* references.
|
|
10
|
+
*/
|
|
11
|
+
export interface FieldSerde {
|
|
12
|
+
/** A single field might persist to multiple columns, i.e. polymorphic references. */
|
|
13
|
+
columns: Column[];
|
|
14
|
+
/**
|
|
15
|
+
* Accepts a database `row` and sets the field's value(s) into the `__orm.data`.
|
|
16
|
+
*
|
|
17
|
+
* Used in EntityManager.hydrate to set row value on the entity
|
|
18
|
+
*/
|
|
3
19
|
setOnEntity(data: any, row: any): void;
|
|
4
|
-
|
|
5
|
-
|
|
20
|
+
}
|
|
21
|
+
/** A specific physical column of a logical field. */
|
|
22
|
+
export interface Column {
|
|
23
|
+
columnName: string;
|
|
24
|
+
dbType: string;
|
|
25
|
+
dbValue(data: any): any;
|
|
6
26
|
mapToDb(value: any): any;
|
|
27
|
+
isArray: boolean;
|
|
7
28
|
}
|
|
8
|
-
export declare class
|
|
29
|
+
export declare class PrimitiveSerde implements FieldSerde {
|
|
9
30
|
private fieldName;
|
|
10
|
-
|
|
11
|
-
|
|
31
|
+
columnName: string;
|
|
32
|
+
dbType: string;
|
|
33
|
+
isArray: boolean;
|
|
34
|
+
columns: this[];
|
|
35
|
+
constructor(fieldName: string, columnName: string, dbType: string);
|
|
12
36
|
setOnEntity(data: any, row: any): void;
|
|
13
|
-
|
|
14
|
-
getFromEntity(data: any): any;
|
|
37
|
+
dbValue(data: any): any;
|
|
15
38
|
mapToDb(value: any): any;
|
|
16
39
|
}
|
|
17
40
|
/**
|
|
@@ -23,75 +46,88 @@ export declare class SimpleSerde implements ColumnSerde {
|
|
|
23
46
|
* Also note that knex/pg accept `number`s as input, so we only need
|
|
24
47
|
* to handle from-database -> to JS translation.
|
|
25
48
|
*/
|
|
26
|
-
export declare class DecimalToNumberSerde implements
|
|
49
|
+
export declare class DecimalToNumberSerde implements FieldSerde {
|
|
27
50
|
private fieldName;
|
|
28
|
-
|
|
51
|
+
columnName: string;
|
|
52
|
+
dbType: string;
|
|
53
|
+
isArray: boolean;
|
|
54
|
+
columns: this[];
|
|
29
55
|
constructor(fieldName: string, columnName: string);
|
|
30
56
|
setOnEntity(data: any, row: any): void;
|
|
31
|
-
|
|
32
|
-
getFromEntity(data: any): any;
|
|
57
|
+
dbValue(data: any): any;
|
|
33
58
|
mapToDb(value: any): any;
|
|
34
59
|
}
|
|
35
60
|
/** Maps integer primary keys ot strings "because GraphQL". */
|
|
36
|
-
export declare class PrimaryKeySerde implements
|
|
61
|
+
export declare class PrimaryKeySerde implements FieldSerde {
|
|
37
62
|
private meta;
|
|
38
63
|
private fieldName;
|
|
39
|
-
|
|
64
|
+
columnName: string;
|
|
65
|
+
dbType: string;
|
|
66
|
+
isArray: boolean;
|
|
67
|
+
columns: this[];
|
|
40
68
|
constructor(meta: () => EntityMetadata<any>, fieldName: string, columnName: string);
|
|
41
69
|
setOnEntity(data: any, row: any): void;
|
|
42
|
-
|
|
43
|
-
getFromEntity(data: any): number;
|
|
70
|
+
dbValue(data: any): number;
|
|
44
71
|
mapToDb(value: any): number | undefined;
|
|
45
72
|
}
|
|
46
|
-
export declare class ForeignKeySerde implements
|
|
73
|
+
export declare class ForeignKeySerde implements FieldSerde {
|
|
47
74
|
private fieldName;
|
|
48
|
-
|
|
75
|
+
columnName: string;
|
|
49
76
|
otherMeta: () => EntityMetadata<any>;
|
|
77
|
+
dbType: string;
|
|
78
|
+
isArray: boolean;
|
|
79
|
+
columns: this[];
|
|
50
80
|
constructor(fieldName: string, columnName: string, otherMeta: () => EntityMetadata<any>);
|
|
51
81
|
setOnEntity(data: any, row: any): void;
|
|
52
|
-
|
|
53
|
-
getFromEntity(data: any): number | undefined;
|
|
82
|
+
dbValue(data: any): number | undefined;
|
|
54
83
|
mapToDb(value: any): any;
|
|
55
84
|
}
|
|
56
|
-
export declare class PolymorphicKeySerde implements
|
|
85
|
+
export declare class PolymorphicKeySerde implements FieldSerde {
|
|
86
|
+
private meta;
|
|
57
87
|
private fieldName;
|
|
58
|
-
|
|
59
|
-
otherMeta: () => EntityMetadata<any>;
|
|
60
|
-
constructor(fieldName: string, columnName: string, otherMeta: () => EntityMetadata<any>);
|
|
88
|
+
constructor(meta: () => EntityMetadata<any>, fieldName: string);
|
|
61
89
|
setOnEntity(data: any, row: any): void;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
90
|
+
get columns(): Array<Column & {
|
|
91
|
+
otherMetadata: () => EntityMetadata<any>;
|
|
92
|
+
}>;
|
|
93
|
+
get columnName(): string;
|
|
94
|
+
private get field();
|
|
65
95
|
}
|
|
66
|
-
export declare class EnumFieldSerde implements
|
|
96
|
+
export declare class EnumFieldSerde implements FieldSerde {
|
|
67
97
|
private fieldName;
|
|
68
|
-
|
|
98
|
+
columnName: string;
|
|
69
99
|
private enumObject;
|
|
100
|
+
dbType: string;
|
|
101
|
+
isArray: boolean;
|
|
102
|
+
columns: this[];
|
|
70
103
|
constructor(fieldName: string, columnName: string, enumObject: any);
|
|
71
104
|
setOnEntity(data: any, row: any): void;
|
|
72
|
-
|
|
73
|
-
getFromEntity(data: any): any;
|
|
105
|
+
dbValue(data: any): any;
|
|
74
106
|
mapToDb(value: any): any;
|
|
75
107
|
}
|
|
76
|
-
export declare class EnumArrayFieldSerde implements
|
|
108
|
+
export declare class EnumArrayFieldSerde implements FieldSerde {
|
|
77
109
|
private fieldName;
|
|
78
|
-
|
|
110
|
+
columnName: string;
|
|
79
111
|
private enumObject;
|
|
112
|
+
dbType: string;
|
|
113
|
+
isArray: boolean;
|
|
114
|
+
columns: this[];
|
|
80
115
|
constructor(fieldName: string, columnName: string, enumObject: any);
|
|
81
116
|
setOnEntity(data: any, row: any): void;
|
|
82
|
-
|
|
83
|
-
getFromEntity(data: any): any;
|
|
117
|
+
dbValue(data: any): any;
|
|
84
118
|
mapToDb(value: any): any;
|
|
85
119
|
}
|
|
86
120
|
/** Similar to SimpleSerde, but applies the superstruct `assert` function when reading values from the db. */
|
|
87
|
-
export declare class SuperstructSerde implements
|
|
121
|
+
export declare class SuperstructSerde implements FieldSerde {
|
|
88
122
|
private fieldName;
|
|
89
|
-
|
|
123
|
+
columnName: string;
|
|
90
124
|
private superstruct;
|
|
125
|
+
dbType: string;
|
|
126
|
+
isArray: boolean;
|
|
127
|
+
columns: this[];
|
|
91
128
|
private assert;
|
|
92
129
|
constructor(fieldName: string, columnName: string, superstruct: any);
|
|
93
130
|
setOnEntity(data: any, row: any): void;
|
|
94
|
-
|
|
95
|
-
getFromEntity(data: any): any;
|
|
131
|
+
dbValue(data: any): any;
|
|
96
132
|
mapToDb(value: any): any;
|
|
97
133
|
}
|
package/build/src/serde.js
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SuperstructSerde = exports.EnumArrayFieldSerde = exports.EnumFieldSerde = exports.PolymorphicKeySerde = exports.ForeignKeySerde = exports.PrimaryKeySerde = exports.DecimalToNumberSerde = exports.
|
|
3
|
+
exports.SuperstructSerde = exports.EnumArrayFieldSerde = exports.EnumFieldSerde = exports.PolymorphicKeySerde = exports.ForeignKeySerde = exports.PrimaryKeySerde = exports.DecimalToNumberSerde = exports.PrimitiveSerde = exports.hasSerde = void 0;
|
|
4
4
|
const index_1 = require("./index");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function hasSerde(field) {
|
|
6
|
+
return !!field.serde;
|
|
7
|
+
}
|
|
8
|
+
exports.hasSerde = hasSerde;
|
|
9
|
+
class PrimitiveSerde {
|
|
10
|
+
constructor(fieldName, columnName, dbType) {
|
|
7
11
|
this.fieldName = fieldName;
|
|
8
12
|
this.columnName = columnName;
|
|
13
|
+
this.dbType = dbType;
|
|
14
|
+
this.isArray = false;
|
|
15
|
+
this.columns = [this];
|
|
9
16
|
}
|
|
10
17
|
setOnEntity(data, row) {
|
|
11
18
|
data[this.fieldName] = maybeNullToUndefined(row[this.columnName]);
|
|
12
19
|
}
|
|
13
|
-
|
|
14
|
-
row[this.columnName] = data[this.fieldName];
|
|
15
|
-
}
|
|
16
|
-
getFromEntity(data) {
|
|
20
|
+
dbValue(data) {
|
|
17
21
|
return data[this.fieldName];
|
|
18
22
|
}
|
|
19
23
|
mapToDb(value) {
|
|
20
24
|
return value;
|
|
21
25
|
}
|
|
22
26
|
}
|
|
23
|
-
exports.
|
|
27
|
+
exports.PrimitiveSerde = PrimitiveSerde;
|
|
24
28
|
/**
|
|
25
29
|
* Maps `decimal(...)` database types to the JS `number`.
|
|
26
30
|
*
|
|
@@ -34,15 +38,15 @@ class DecimalToNumberSerde {
|
|
|
34
38
|
constructor(fieldName, columnName) {
|
|
35
39
|
this.fieldName = fieldName;
|
|
36
40
|
this.columnName = columnName;
|
|
41
|
+
this.dbType = "decimal";
|
|
42
|
+
this.isArray = false;
|
|
43
|
+
this.columns = [this];
|
|
37
44
|
}
|
|
38
45
|
setOnEntity(data, row) {
|
|
39
46
|
const value = maybeNullToUndefined(row[this.columnName]);
|
|
40
47
|
data[this.fieldName] = value !== undefined ? Number(value) : value;
|
|
41
48
|
}
|
|
42
|
-
|
|
43
|
-
row[this.columnName] = data[this.fieldName];
|
|
44
|
-
}
|
|
45
|
-
getFromEntity(data) {
|
|
49
|
+
dbValue(data) {
|
|
46
50
|
return data[this.fieldName];
|
|
47
51
|
}
|
|
48
52
|
mapToDb(value) {
|
|
@@ -56,14 +60,14 @@ class PrimaryKeySerde {
|
|
|
56
60
|
this.meta = meta;
|
|
57
61
|
this.fieldName = fieldName;
|
|
58
62
|
this.columnName = columnName;
|
|
63
|
+
this.dbType = "int";
|
|
64
|
+
this.isArray = false;
|
|
65
|
+
this.columns = [this];
|
|
59
66
|
}
|
|
60
67
|
setOnEntity(data, row) {
|
|
61
68
|
data[this.fieldName] = (0, index_1.keyToString)(this.meta(), row[this.columnName]);
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
row[this.columnName] = (0, index_1.keyToNumber)(this.meta(), data[this.fieldName]);
|
|
65
|
-
}
|
|
66
|
-
getFromEntity(data) {
|
|
70
|
+
dbValue(data) {
|
|
67
71
|
return (0, index_1.keyToNumber)(this.meta(), data[this.fieldName]);
|
|
68
72
|
}
|
|
69
73
|
mapToDb(value) {
|
|
@@ -77,14 +81,14 @@ class ForeignKeySerde {
|
|
|
77
81
|
this.fieldName = fieldName;
|
|
78
82
|
this.columnName = columnName;
|
|
79
83
|
this.otherMeta = otherMeta;
|
|
84
|
+
this.dbType = "int";
|
|
85
|
+
this.isArray = false;
|
|
86
|
+
this.columns = [this];
|
|
80
87
|
}
|
|
81
88
|
setOnEntity(data, row) {
|
|
82
89
|
data[this.fieldName] = (0, index_1.keyToString)(this.otherMeta(), row[this.columnName]);
|
|
83
90
|
}
|
|
84
|
-
|
|
85
|
-
row[this.columnName] = (0, index_1.keyToNumber)(this.otherMeta(), (0, index_1.maybeResolveReferenceToId)(data[this.fieldName]));
|
|
86
|
-
}
|
|
87
|
-
getFromEntity(data) {
|
|
91
|
+
dbValue(data) {
|
|
88
92
|
return (0, index_1.keyToNumber)(this.otherMeta(), (0, index_1.maybeResolveReferenceToId)(data[this.fieldName]));
|
|
89
93
|
}
|
|
90
94
|
mapToDb(value) {
|
|
@@ -93,30 +97,42 @@ class ForeignKeySerde {
|
|
|
93
97
|
}
|
|
94
98
|
exports.ForeignKeySerde = ForeignKeySerde;
|
|
95
99
|
class PolymorphicKeySerde {
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
constructor(meta, fieldName) {
|
|
101
|
+
this.meta = meta;
|
|
98
102
|
this.fieldName = fieldName;
|
|
99
|
-
this.columnName = columnName;
|
|
100
|
-
this.otherMeta = otherMeta;
|
|
101
103
|
}
|
|
102
104
|
setOnEntity(data, row) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
105
|
+
this.columns
|
|
106
|
+
.filter((column) => !!row[column.columnName])
|
|
107
|
+
.forEach((column) => {
|
|
108
|
+
var _a;
|
|
109
|
+
data[_a = this.fieldName] ?? (data[_a] = (0, index_1.keyToString)(column.otherMetadata(), row[column.columnName]));
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// Lazy b/c we use PolymorphicField which we can't access in our cstr
|
|
113
|
+
get columns() {
|
|
114
|
+
const { fieldName } = this;
|
|
115
|
+
return this.field.components.map((comp) => ({
|
|
116
|
+
columnName: comp.columnName,
|
|
117
|
+
dbType: "int",
|
|
118
|
+
isArray: false,
|
|
119
|
+
otherMetadata: comp.otherMetadata,
|
|
120
|
+
dbValue(data) {
|
|
121
|
+
const id = (0, index_1.maybeResolveReferenceToId)(data[fieldName]);
|
|
122
|
+
const cstr = id ? (0, index_1.getConstructorFromTaggedId)(id) : undefined;
|
|
123
|
+
return cstr === comp.otherMetadata().cstr ? (0, index_1.keyToNumber)(comp.otherMetadata(), id) : undefined;
|
|
124
|
+
},
|
|
125
|
+
mapToDb(value) {
|
|
126
|
+
return (0, index_1.keyToNumber)(comp.otherMetadata(), (0, index_1.maybeResolveReferenceToId)(value));
|
|
127
|
+
},
|
|
128
|
+
}));
|
|
129
|
+
}
|
|
130
|
+
get columnName() {
|
|
131
|
+
throw new Error("Unsupported");
|
|
132
|
+
}
|
|
133
|
+
// Lazy b/c we use PolymorphicField which we can't access in our cstr
|
|
134
|
+
get field() {
|
|
135
|
+
return this.meta().fields[this.fieldName];
|
|
120
136
|
}
|
|
121
137
|
}
|
|
122
138
|
exports.PolymorphicKeySerde = PolymorphicKeySerde;
|
|
@@ -125,14 +141,14 @@ class EnumFieldSerde {
|
|
|
125
141
|
this.fieldName = fieldName;
|
|
126
142
|
this.columnName = columnName;
|
|
127
143
|
this.enumObject = enumObject;
|
|
144
|
+
this.dbType = "int";
|
|
145
|
+
this.isArray = false;
|
|
146
|
+
this.columns = [this];
|
|
128
147
|
}
|
|
129
148
|
setOnEntity(data, row) {
|
|
130
149
|
data[this.fieldName] = this.enumObject.findById(row[this.columnName])?.code;
|
|
131
150
|
}
|
|
132
|
-
|
|
133
|
-
row[this.columnName] = this.enumObject.findByCode(data[this.fieldName])?.id;
|
|
134
|
-
}
|
|
135
|
-
getFromEntity(data) {
|
|
151
|
+
dbValue(data) {
|
|
136
152
|
return this.enumObject.findByCode(data[this.fieldName])?.id;
|
|
137
153
|
}
|
|
138
154
|
mapToDb(value) {
|
|
@@ -145,14 +161,14 @@ class EnumArrayFieldSerde {
|
|
|
145
161
|
this.fieldName = fieldName;
|
|
146
162
|
this.columnName = columnName;
|
|
147
163
|
this.enumObject = enumObject;
|
|
164
|
+
this.dbType = "int[]";
|
|
165
|
+
this.isArray = true;
|
|
166
|
+
this.columns = [this];
|
|
148
167
|
}
|
|
149
168
|
setOnEntity(data, row) {
|
|
150
169
|
data[this.fieldName] = row[this.columnName]?.map((id) => this.enumObject.findById(id).code) || [];
|
|
151
170
|
}
|
|
152
|
-
|
|
153
|
-
row[this.columnName] = data[this.fieldName]?.map((code) => this.enumObject.getByCode(code).id) || [];
|
|
154
|
-
}
|
|
155
|
-
getFromEntity(data) {
|
|
171
|
+
dbValue(data) {
|
|
156
172
|
return data[this.fieldName]?.map((code) => this.enumObject.getByCode(code).id) || [];
|
|
157
173
|
}
|
|
158
174
|
mapToDb(value) {
|
|
@@ -169,6 +185,9 @@ class SuperstructSerde {
|
|
|
169
185
|
this.fieldName = fieldName;
|
|
170
186
|
this.columnName = columnName;
|
|
171
187
|
this.superstruct = superstruct;
|
|
188
|
+
this.dbType = "jsonb";
|
|
189
|
+
this.isArray = false;
|
|
190
|
+
this.columns = [this];
|
|
172
191
|
// Use a dynamic require so that downstream projects don't have to depend on superstruct
|
|
173
192
|
// until they want to, i.e. we don't have superstruct in the joist-orm package.json.
|
|
174
193
|
this.assert = require("superstruct").assert;
|
|
@@ -180,12 +199,8 @@ class SuperstructSerde {
|
|
|
180
199
|
}
|
|
181
200
|
data[this.fieldName] = value;
|
|
182
201
|
}
|
|
183
|
-
|
|
184
|
-
// assume the data is already valid b/c it came from the
|
|
185
|
-
row[this.columnName] = data[this.fieldName];
|
|
186
|
-
}
|
|
187
|
-
getFromEntity(data) {
|
|
188
|
-
// assume the data is already valid b/c it came from the eneity
|
|
202
|
+
dbValue(data) {
|
|
203
|
+
// assume the data is already valid b/c it came from the entity
|
|
189
204
|
return data[this.fieldName];
|
|
190
205
|
}
|
|
191
206
|
mapToDb(value) {
|
package/build/src/serde.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serde.js","sourceRoot":"","sources":["../../src/serde.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"serde.js","sourceRoot":"","sources":["../../src/serde.ts"],"names":[],"mappings":"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"}
|