@sqb/connect 4.1.0 → 4.1.1
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/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/orm/backward.d.ts +8 -0
- package/dist/orm/backward.js +19 -0
- package/dist/orm/decorators/entity.decorator.d.ts +15 -15
- package/dist/orm/decorators/entity.decorator.js +20 -15
- package/dist/orm/model/entity-metadata.d.ts +2 -1
- package/dist/orm/model/entity-metadata.js +20 -8
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -30,3 +30,4 @@ export * from './orm/decorators/link.decorator';
|
|
|
30
30
|
export * from './orm/decorators/primarykey.decorator';
|
|
31
31
|
export * from './orm/decorators/transform.decorator';
|
|
32
32
|
export { isColumnElement, isEmbeddedElement, isAssociationElement, isEntityClass } from './orm/util/orm.helper';
|
|
33
|
+
export * from './orm/backward';
|
package/dist/index.js
CHANGED
|
@@ -39,3 +39,4 @@ Object.defineProperty(exports, "isColumnElement", { enumerable: true, get: funct
|
|
|
39
39
|
Object.defineProperty(exports, "isEmbeddedElement", { enumerable: true, get: function () { return orm_helper_1.isEmbeddedElement; } });
|
|
40
40
|
Object.defineProperty(exports, "isAssociationElement", { enumerable: true, get: function () { return orm_helper_1.isAssociationElement; } });
|
|
41
41
|
Object.defineProperty(exports, "isEntityClass", { enumerable: true, get: function () { return orm_helper_1.isEntityClass; } });
|
|
42
|
+
tslib_1.__exportStar(require("./orm/backward"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PickWritable, Type } from 'ts-gems';
|
|
2
|
+
import { Entity } from './decorators/entity.decorator';
|
|
3
|
+
export declare function getInsertColumnNames<T, K extends keyof PickWritable<T>>(ctor: Type<T>): K[];
|
|
4
|
+
export declare function getUpdateColumnNames<T, K extends keyof PickWritable<T>>(ctor: Type<T>): K[];
|
|
5
|
+
export declare function getNonAssociationElementNames<T, K extends keyof PickWritable<T>>(ctor: Type<T>): K[];
|
|
6
|
+
export declare const OmitEntity: typeof Entity.Omit;
|
|
7
|
+
export declare const PickEntity: typeof Entity.Pick;
|
|
8
|
+
export declare const UnionEntity: typeof Entity.Union;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnionEntity = exports.PickEntity = exports.OmitEntity = exports.getNonAssociationElementNames = exports.getUpdateColumnNames = exports.getInsertColumnNames = void 0;
|
|
4
|
+
const entity_decorator_1 = require("./decorators/entity.decorator");
|
|
5
|
+
function getInsertColumnNames(ctor) {
|
|
6
|
+
return entity_decorator_1.Entity.getInsertColumnNames(ctor);
|
|
7
|
+
}
|
|
8
|
+
exports.getInsertColumnNames = getInsertColumnNames;
|
|
9
|
+
function getUpdateColumnNames(ctor) {
|
|
10
|
+
return entity_decorator_1.Entity.getUpdateColumnNames(ctor);
|
|
11
|
+
}
|
|
12
|
+
exports.getUpdateColumnNames = getUpdateColumnNames;
|
|
13
|
+
function getNonAssociationElementNames(ctor) {
|
|
14
|
+
return entity_decorator_1.Entity.getNonAssociationElementNames(ctor);
|
|
15
|
+
}
|
|
16
|
+
exports.getNonAssociationElementNames = getNonAssociationElementNames;
|
|
17
|
+
exports.OmitEntity = entity_decorator_1.Entity.Omit;
|
|
18
|
+
exports.PickEntity = entity_decorator_1.Entity.Pick;
|
|
19
|
+
exports.UnionEntity = entity_decorator_1.Entity.Union;
|
|
@@ -4,25 +4,25 @@ import { ColumnElementMetadata } from '../model/column-element-metadata';
|
|
|
4
4
|
import { EmbeddedElementMetadata } from '../model/embedded-element-metadata';
|
|
5
5
|
import { AnyElementMetadata, EntityMetadata, EntityOptions } from '../model/entity-metadata';
|
|
6
6
|
import { IndexMetadata } from '../model/index-metadata';
|
|
7
|
-
import { Ctor } from '../orm.type';
|
|
8
7
|
export declare function Entity(options?: EntityOptions | string): ClassDecorator;
|
|
9
8
|
export declare namespace Entity {
|
|
10
9
|
const getMetadata: typeof EntityMetadata.get;
|
|
11
10
|
const getOwnMetadata: typeof EntityMetadata.getOwn;
|
|
12
|
-
function getElement(ctor:
|
|
13
|
-
function getColumnElement(ctor:
|
|
14
|
-
function getEmbeddedElement(ctor:
|
|
15
|
-
function getAssociationElement(ctor:
|
|
16
|
-
function getColumnElementByFieldName(ctor:
|
|
17
|
-
function
|
|
18
|
-
function
|
|
19
|
-
function
|
|
20
|
-
function
|
|
21
|
-
function
|
|
22
|
-
function
|
|
23
|
-
function
|
|
24
|
-
function
|
|
25
|
-
function
|
|
11
|
+
function getElement<T>(ctor: Type<T>, key: keyof T | string): Maybe<AnyElementMetadata>;
|
|
12
|
+
function getColumnElement<T>(ctor: Type<T>, key: keyof T | string): Maybe<ColumnElementMetadata>;
|
|
13
|
+
function getEmbeddedElement<T>(ctor: Type<T>, key: keyof T | string): Maybe<EmbeddedElementMetadata>;
|
|
14
|
+
function getAssociationElement<T>(ctor: Type<T>, key: keyof T | string): Maybe<AssociationElementMetadata>;
|
|
15
|
+
function getColumnElementByFieldName(ctor: Type, fieldName: string): Maybe<ColumnElementMetadata>;
|
|
16
|
+
function find(ctor: Type, predicate: (el: AnyElementMetadata) => boolean): Maybe<AnyElementMetadata>;
|
|
17
|
+
function getElementNames(ctor: Type, filter?: (el: AnyElementMetadata) => boolean): string[];
|
|
18
|
+
function getColumnNames(ctor: Type): string[];
|
|
19
|
+
function getEmbeddedElementNames(ctor: Type): string[];
|
|
20
|
+
function getAssociationElementNames(ctor: Type): string[];
|
|
21
|
+
function getNonAssociationElementNames(ctor: Type): string[];
|
|
22
|
+
function getInsertColumnNames(ctor: Type): string[];
|
|
23
|
+
function getUpdateColumnNames(ctor: Type): string[];
|
|
24
|
+
function getPrimaryIndex(ctor: Type): Maybe<IndexMetadata>;
|
|
25
|
+
function getPrimaryIndexColumns(ctor: Type): ColumnElementMetadata[];
|
|
26
26
|
function Pick<T, K extends keyof T>(classRef: Type<T>, keys: readonly K[]): Type<Pick<T, typeof keys[number]>>;
|
|
27
27
|
function Omit<T, K extends keyof T>(classRef: Type<T>, keys: readonly K[]): Type<Omit<T, typeof keys[number]>>;
|
|
28
28
|
function Union<A, B>(baseA: Type<A>, baseB: Type<B>): Type<A & B>;
|
|
@@ -19,24 +19,24 @@ exports.Entity = Entity;
|
|
|
19
19
|
(function (Entity) {
|
|
20
20
|
Entity.getMetadata = entity_metadata_1.EntityMetadata.get;
|
|
21
21
|
Entity.getOwnMetadata = entity_metadata_1.EntityMetadata.getOwn;
|
|
22
|
-
function getElement(ctor,
|
|
22
|
+
function getElement(ctor, key) {
|
|
23
23
|
const model = entity_metadata_1.EntityMetadata.get(ctor);
|
|
24
|
-
return model && entity_metadata_1.EntityMetadata.getElement(model,
|
|
24
|
+
return model && entity_metadata_1.EntityMetadata.getElement(model, key);
|
|
25
25
|
}
|
|
26
26
|
Entity.getElement = getElement;
|
|
27
|
-
function getColumnElement(ctor,
|
|
27
|
+
function getColumnElement(ctor, key) {
|
|
28
28
|
const model = entity_metadata_1.EntityMetadata.get(ctor);
|
|
29
|
-
return model && entity_metadata_1.EntityMetadata.getColumnElement(model,
|
|
29
|
+
return model && entity_metadata_1.EntityMetadata.getColumnElement(model, key);
|
|
30
30
|
}
|
|
31
31
|
Entity.getColumnElement = getColumnElement;
|
|
32
|
-
function getEmbeddedElement(ctor,
|
|
32
|
+
function getEmbeddedElement(ctor, key) {
|
|
33
33
|
const model = entity_metadata_1.EntityMetadata.get(ctor);
|
|
34
|
-
return model && entity_metadata_1.EntityMetadata.getEmbeddedElement(model,
|
|
34
|
+
return model && entity_metadata_1.EntityMetadata.getEmbeddedElement(model, key);
|
|
35
35
|
}
|
|
36
36
|
Entity.getEmbeddedElement = getEmbeddedElement;
|
|
37
|
-
function getAssociationElement(ctor,
|
|
37
|
+
function getAssociationElement(ctor, key) {
|
|
38
38
|
const model = entity_metadata_1.EntityMetadata.get(ctor);
|
|
39
|
-
return model && entity_metadata_1.EntityMetadata.getAssociationElement(model,
|
|
39
|
+
return model && entity_metadata_1.EntityMetadata.getAssociationElement(model, key);
|
|
40
40
|
}
|
|
41
41
|
Entity.getAssociationElement = getAssociationElement;
|
|
42
42
|
function getColumnElementByFieldName(ctor, fieldName) {
|
|
@@ -44,6 +44,11 @@ exports.Entity = Entity;
|
|
|
44
44
|
return model && entity_metadata_1.EntityMetadata.getColumnElementByFieldName(model, fieldName);
|
|
45
45
|
}
|
|
46
46
|
Entity.getColumnElementByFieldName = getColumnElementByFieldName;
|
|
47
|
+
function find(ctor, predicate) {
|
|
48
|
+
const model = entity_metadata_1.EntityMetadata.get(ctor);
|
|
49
|
+
return model && entity_metadata_1.EntityMetadata.findElement(model, predicate);
|
|
50
|
+
}
|
|
51
|
+
Entity.find = find;
|
|
47
52
|
function getElementNames(ctor, filter) {
|
|
48
53
|
const model = entity_metadata_1.EntityMetadata.get(ctor);
|
|
49
54
|
return (model && entity_metadata_1.EntityMetadata.getElementNames(model, filter)) || [];
|
|
@@ -95,12 +100,13 @@ exports.Entity = Entity;
|
|
|
95
100
|
applyConstructorProperties(this, classRef, args);
|
|
96
101
|
}
|
|
97
102
|
};
|
|
98
|
-
const pickKeys = keys;
|
|
99
|
-
|
|
103
|
+
const pickKeys = keys.map(x => x.toLowerCase());
|
|
104
|
+
const filter = (k) => pickKeys.includes(k.toLowerCase());
|
|
105
|
+
(0, apply_mixins_1.applyMixins)(PickEntityClass, classRef, filter);
|
|
100
106
|
const srcMeta = entity_metadata_1.EntityMetadata.get(classRef);
|
|
101
107
|
if (srcMeta) {
|
|
102
108
|
const trgMeta = entity_metadata_1.EntityMetadata.inject(PickEntityClass);
|
|
103
|
-
entity_metadata_1.EntityMetadata.mixin(trgMeta, srcMeta,
|
|
109
|
+
entity_metadata_1.EntityMetadata.mixin(trgMeta, srcMeta, filter);
|
|
104
110
|
}
|
|
105
111
|
return PickEntityClass;
|
|
106
112
|
}
|
|
@@ -112,13 +118,12 @@ exports.Entity = Entity;
|
|
|
112
118
|
}
|
|
113
119
|
};
|
|
114
120
|
const omitKeys = keys.map(x => x.toLowerCase());
|
|
115
|
-
|
|
121
|
+
const filter = (k) => !omitKeys.includes(k.toLowerCase());
|
|
122
|
+
(0, apply_mixins_1.applyMixins)(OmitEntityClass, classRef, filter);
|
|
116
123
|
const srcMeta = entity_metadata_1.EntityMetadata.get(classRef);
|
|
117
124
|
if (srcMeta) {
|
|
118
|
-
const elementKeys = Object.keys(srcMeta.elements)
|
|
119
|
-
.filter(x => !omitKeys.includes(x));
|
|
120
125
|
const trgMeta = entity_metadata_1.EntityMetadata.inject(OmitEntityClass);
|
|
121
|
-
entity_metadata_1.EntityMetadata.mixin(trgMeta, srcMeta,
|
|
126
|
+
entity_metadata_1.EntityMetadata.mixin(trgMeta, srcMeta, filter);
|
|
122
127
|
}
|
|
123
128
|
return OmitEntityClass;
|
|
124
129
|
}
|
|
@@ -27,6 +27,7 @@ export declare namespace EntityMetadata {
|
|
|
27
27
|
function getColumnElement(entity: EntityMetadata, elementName: string): Maybe<ColumnElementMetadata>;
|
|
28
28
|
function getEmbeddedElement(entity: EntityMetadata, elementName: string): Maybe<EmbeddedElementMetadata>;
|
|
29
29
|
function getAssociationElement(entity: EntityMetadata, elementName: string): Maybe<AssociationElementMetadata>;
|
|
30
|
+
function findElement(entity: EntityMetadata, predicate: (el: AnyElementMetadata) => boolean): Maybe<AnyElementMetadata>;
|
|
30
31
|
function getColumnElementByFieldName(entity: EntityMetadata, fieldName: string): Maybe<ColumnElementMetadata>;
|
|
31
32
|
function getElementNames(entity: EntityMetadata, filter?: (el: AnyElementMetadata) => boolean): string[];
|
|
32
33
|
function getColumnNames(entity: EntityMetadata): string[];
|
|
@@ -45,5 +46,5 @@ export declare namespace EntityMetadata {
|
|
|
45
46
|
function defineEmbeddedElement(entity: EntityMetadata, name: string, type: TypeThunk, options?: EmbeddedElementOptions): EmbeddedElementMetadata;
|
|
46
47
|
function defineAssociationElement(entity: EntityMetadata, propertyKey: string, association: AssociationNode): AssociationElementMetadata;
|
|
47
48
|
function setPrimaryKeys(entity: EntityMetadata, column: string | string[], options?: Omit<IndexMetadata, 'columns' | 'unique' | 'primary'>): void;
|
|
48
|
-
function mixin(derived: EntityMetadata, base: EntityMetadata,
|
|
49
|
+
function mixin(derived: EntityMetadata, base: EntityMetadata, filter?: (n: string) => boolean): void;
|
|
49
50
|
}
|
|
@@ -63,19 +63,29 @@ var EntityMetadata;
|
|
|
63
63
|
EntityMetadata.getElement = getElement;
|
|
64
64
|
function getColumnElement(entity, elementName) {
|
|
65
65
|
const el = getElement(entity, elementName);
|
|
66
|
-
|
|
66
|
+
if (el && !(0, orm_helper_1.isColumnElement)(el))
|
|
67
|
+
throw new Error(`"${el.name}" requested as "column" but it is "${el.kind}"`);
|
|
68
|
+
return el;
|
|
67
69
|
}
|
|
68
70
|
EntityMetadata.getColumnElement = getColumnElement;
|
|
69
71
|
function getEmbeddedElement(entity, elementName) {
|
|
70
72
|
const el = getElement(entity, elementName);
|
|
71
|
-
|
|
73
|
+
if (el && !(0, orm_helper_1.isEmbeddedElement)(el))
|
|
74
|
+
throw new Error(`"${el.name}" requested as "embedded" but it is "${el.kind}"`);
|
|
75
|
+
return el;
|
|
72
76
|
}
|
|
73
77
|
EntityMetadata.getEmbeddedElement = getEmbeddedElement;
|
|
74
78
|
function getAssociationElement(entity, elementName) {
|
|
75
79
|
const el = getElement(entity, elementName);
|
|
76
|
-
|
|
80
|
+
if (el && !(0, orm_helper_1.isAssociationElement)(el))
|
|
81
|
+
throw new Error(`"${el.name}" requested as "association" but it is "${el.kind}"`);
|
|
82
|
+
return el;
|
|
77
83
|
}
|
|
78
84
|
EntityMetadata.getAssociationElement = getAssociationElement;
|
|
85
|
+
function findElement(entity, predicate) {
|
|
86
|
+
return Object.values(entity.elements).find(predicate);
|
|
87
|
+
}
|
|
88
|
+
EntityMetadata.findElement = findElement;
|
|
79
89
|
function getColumnElementByFieldName(entity, fieldName) {
|
|
80
90
|
if (!fieldName)
|
|
81
91
|
return;
|
|
@@ -131,7 +141,7 @@ var EntityMetadata;
|
|
|
131
141
|
}
|
|
132
142
|
EntityMetadata.getUpdateColumnNames = getUpdateColumnNames;
|
|
133
143
|
function getPrimaryIndex(entity) {
|
|
134
|
-
return entity.indexes.find(idx => idx.primary);
|
|
144
|
+
return entity.indexes && entity.indexes.find(idx => idx.primary);
|
|
135
145
|
}
|
|
136
146
|
EntityMetadata.getPrimaryIndex = getPrimaryIndex;
|
|
137
147
|
function getPrimaryIndexColumns(entity) {
|
|
@@ -149,6 +159,8 @@ var EntityMetadata;
|
|
|
149
159
|
}
|
|
150
160
|
EntityMetadata.getPrimaryIndexColumns = getPrimaryIndexColumns;
|
|
151
161
|
async function getForeignKeyFor(src, trg) {
|
|
162
|
+
if (!src.foreignKeys)
|
|
163
|
+
return;
|
|
152
164
|
for (const f of src.foreignKeys) {
|
|
153
165
|
if (await f.resolveTarget() === trg)
|
|
154
166
|
return f;
|
|
@@ -277,10 +289,9 @@ var EntityMetadata;
|
|
|
277
289
|
});
|
|
278
290
|
}
|
|
279
291
|
EntityMetadata.setPrimaryKeys = setPrimaryKeys;
|
|
280
|
-
function mixin(derived, base,
|
|
281
|
-
const elementKeys = elements && elements.map(x => x.toLowerCase());
|
|
282
|
-
const hasElement = (k) => !
|
|
283
|
-
// applyMixins(derived, baseCtor, hasElement);
|
|
292
|
+
function mixin(derived, base, filter) {
|
|
293
|
+
// const elementKeys = elements && elements.map(x => x.toLowerCase());
|
|
294
|
+
const hasElement = (k) => !filter || filter(k);
|
|
284
295
|
delete derived._elementNames;
|
|
285
296
|
if (!derived.tableName) {
|
|
286
297
|
derived.tableName = base.tableName;
|
|
@@ -316,6 +327,7 @@ var EntityMetadata;
|
|
|
316
327
|
}
|
|
317
328
|
}
|
|
318
329
|
// Copy elements
|
|
330
|
+
derived.elements = derived.elements || {};
|
|
319
331
|
for (const [n, p] of Object.entries(base.elements)) {
|
|
320
332
|
if (!hasElement(n))
|
|
321
333
|
continue;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqb/connect",
|
|
3
3
|
"description": "Multi-dialect database connection framework written with TypeScript",
|
|
4
|
-
"version": "4.1.
|
|
4
|
+
"version": "4.1.1",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"contributors": [
|
|
7
7
|
"Eray Hanoglu <e.hanoglu@panates.com>"
|
|
@@ -72,4 +72,4 @@
|
|
|
72
72
|
"lint": "eslint src/** --no-error-on-unmatched-pattern",
|
|
73
73
|
"test": "TS_NODE_PROJECT='./test/tsconfig.json' mocha -r ts-node/register -r tsconfig-paths/register --reporter spec test/**/*.spec.ts"
|
|
74
74
|
}
|
|
75
|
-
}
|
|
75
|
+
}
|