@quatrain/core 1.0.0-beta3 → 1.0.0-beta7
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/lib/Backend.d.ts +4 -1
- package/lib/backends/AbstractAdapter.d.ts +2 -1
- package/lib/backends/AbstractAdapter.js +7 -2
- package/lib/backends/Filters.d.ts +2 -1
- package/lib/backends/Query.d.ts +8 -4
- package/lib/backends/Query.js +12 -3
- package/lib/backends/index.d.ts +2 -1
- package/lib/backends/index.js +26 -1
- package/lib/backends/types/BackendInterface.d.ts +1 -1
- package/lib/backends/types/CollectionHierarchy.d.ts +3 -0
- package/lib/backends/types/CollectionHierarchy.js +6 -0
- package/lib/components/AbstractObject.d.ts +1 -0
- package/lib/components/BaseObjectCore.d.ts +10 -1
- package/lib/components/BaseObjectCore.js +15 -3
- package/lib/components/BaseRepository.d.ts +1 -0
- package/lib/components/BaseRepository.js +21 -3
- package/lib/components/DataObject.d.ts +3 -0
- package/lib/components/DataObject.js +5 -2
- package/lib/components/Entity.d.ts +2 -5
- package/lib/components/Entity.js +27 -27
- package/lib/components/types/DataObjectClass.d.ts +1 -0
- package/lib/index.d.ts +2 -2
- package/lib/properties/CollectionProperty.js +2 -1
- package/lib/utils/DataGenerator.d.ts +2 -3
- package/lib/utils/DataGenerator.js +2 -1
- package/package.json +1 -1
package/lib/Backend.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import Middleware from
|
|
1
|
+
import Middleware from './backends/middlewares/Middleware';
|
|
2
2
|
export declare enum BackendAction {
|
|
3
3
|
CREATE = "create",
|
|
4
4
|
READ = "read",
|
|
@@ -23,6 +23,9 @@ export type BackendParametersKeys = 'host' | 'alias' | 'mapping' | 'middlewares'
|
|
|
23
23
|
export interface BackendParameters {
|
|
24
24
|
host?: string;
|
|
25
25
|
alias?: string;
|
|
26
|
+
hierarchy?: {
|
|
27
|
+
[collection: string]: any;
|
|
28
|
+
};
|
|
26
29
|
mapping?: {
|
|
27
30
|
[x: string]: any;
|
|
28
31
|
};
|
|
@@ -7,6 +7,7 @@ import { Query, QueryResultType } from './Query';
|
|
|
7
7
|
import { SortAndLimit } from './SortAndLimit';
|
|
8
8
|
import Middleware from './middlewares/Middleware';
|
|
9
9
|
export declare abstract class AbstractAdapter implements BackendInterface {
|
|
10
|
+
static PKEY_IDENTIFIER: any;
|
|
10
11
|
protected _alias: string;
|
|
11
12
|
protected _params: BackendParameters;
|
|
12
13
|
protected _middlewares: Middleware[];
|
|
@@ -34,7 +35,7 @@ export declare abstract class AbstractAdapter implements BackendInterface {
|
|
|
34
35
|
* @returns Array
|
|
35
36
|
*/
|
|
36
37
|
query(query: Query<any>): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
37
|
-
abstract find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<QueryResultType<any>>;
|
|
38
|
+
abstract find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined, parent: any): Promise<QueryResultType<any>>;
|
|
38
39
|
log(message: string): void;
|
|
39
40
|
executeMiddlewares(dataObject: DataObjectClass<any>, action: BackendAction): Promise<DataObjectClass<any>>;
|
|
40
41
|
}
|
|
@@ -18,6 +18,7 @@ class AbstractAdapter {
|
|
|
18
18
|
this._middlewares = [];
|
|
19
19
|
this._alias = params.alias || '';
|
|
20
20
|
this._middlewares = params.middlewares || [];
|
|
21
|
+
this._params = params;
|
|
21
22
|
}
|
|
22
23
|
setParam(key, value) {
|
|
23
24
|
this._params[key] = value;
|
|
@@ -52,7 +53,7 @@ class AbstractAdapter {
|
|
|
52
53
|
return this._alias;
|
|
53
54
|
}
|
|
54
55
|
getCollection(dao) {
|
|
55
|
-
return dao.uri.collection;
|
|
56
|
+
return dao.uri.collection;
|
|
56
57
|
}
|
|
57
58
|
/**
|
|
58
59
|
* Process Query instance and return result
|
|
@@ -61,7 +62,10 @@ class AbstractAdapter {
|
|
|
61
62
|
*/
|
|
62
63
|
query(query) {
|
|
63
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
|
|
65
|
+
const dao = yield query.obj.daoFactory();
|
|
66
|
+
if (query.parent) {
|
|
67
|
+
}
|
|
68
|
+
return yield this.find(dao, query.filters, query.sortAndLimit, query.parent);
|
|
65
69
|
});
|
|
66
70
|
}
|
|
67
71
|
log(message) {
|
|
@@ -79,3 +83,4 @@ class AbstractAdapter {
|
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
85
|
exports.AbstractAdapter = AbstractAdapter;
|
|
86
|
+
AbstractAdapter.PKEY_IDENTIFIER = 'id';
|
|
@@ -2,9 +2,10 @@ import { Filter } from './Filter';
|
|
|
2
2
|
export interface FiltersType {
|
|
3
3
|
or?: Filter[];
|
|
4
4
|
and?: Filter[];
|
|
5
|
+
base?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare class Filters implements FiltersType {
|
|
7
8
|
or?: Filter[];
|
|
8
9
|
and?: Filter[];
|
|
9
|
-
constructor(or
|
|
10
|
+
constructor(or?: Filter[], and?: Filter[]);
|
|
10
11
|
}
|
package/lib/backends/Query.d.ts
CHANGED
|
@@ -28,15 +28,19 @@ export declare enum returnAs {
|
|
|
28
28
|
}
|
|
29
29
|
export declare class Query<T extends typeof BaseObjectCore> {
|
|
30
30
|
protected _obj: T;
|
|
31
|
-
protected
|
|
31
|
+
protected _parent: T | undefined;
|
|
32
32
|
filters: Filter[];
|
|
33
33
|
sortings: Sorting[];
|
|
34
34
|
limits: Limits;
|
|
35
35
|
meta: any;
|
|
36
|
-
constructor(obj: T,
|
|
37
|
-
[x: string]: any;
|
|
38
|
-
});
|
|
36
|
+
constructor(obj: T, parent?: T | undefined);
|
|
39
37
|
get obj(): T;
|
|
38
|
+
get parent(): T | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Declare query parent record
|
|
41
|
+
* This may be need in some NoSQL backend to query subcollections
|
|
42
|
+
*/
|
|
43
|
+
set parent(parent: T);
|
|
40
44
|
where(param: Filter | string, value?: any, operator?: any): this;
|
|
41
45
|
sortBy(param: Sorting | string, order?: any): this;
|
|
42
46
|
setLimits(limits: Limits): this;
|
package/lib/backends/Query.js
CHANGED
|
@@ -26,9 +26,9 @@ var returnAs;
|
|
|
26
26
|
returnAs["AS_IS"] = "asIs";
|
|
27
27
|
})(returnAs || (exports.returnAs = returnAs = {}));
|
|
28
28
|
class Query {
|
|
29
|
-
constructor(obj,
|
|
29
|
+
constructor(obj, parent = undefined) {
|
|
30
30
|
this._obj = obj;
|
|
31
|
-
this.
|
|
31
|
+
this._parent = parent;
|
|
32
32
|
this.filters = [];
|
|
33
33
|
this.sortings = [];
|
|
34
34
|
this.limits = new Limits_1.Limits();
|
|
@@ -37,8 +37,17 @@ class Query {
|
|
|
37
37
|
get obj() {
|
|
38
38
|
return this._obj;
|
|
39
39
|
}
|
|
40
|
+
get parent() {
|
|
41
|
+
return this._parent;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Declare query parent record
|
|
45
|
+
* This may be need in some NoSQL backend to query subcollections
|
|
46
|
+
*/
|
|
47
|
+
set parent(parent) {
|
|
48
|
+
this._parent = parent;
|
|
49
|
+
}
|
|
40
50
|
where(param, value = null, operator = 'equals') {
|
|
41
|
-
console.log(`received value`, value);
|
|
42
51
|
if (typeof param == 'object') {
|
|
43
52
|
this.filters.push(param);
|
|
44
53
|
}
|
package/lib/backends/index.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ import { AbstractAdapter } from './AbstractAdapter';
|
|
|
2
2
|
import { MockAdapter } from './MockAdapter';
|
|
3
3
|
import { BackendError } from './BackendError';
|
|
4
4
|
import { BackendInterface } from './types/BackendInterface';
|
|
5
|
+
import * as CollectionHierarchy from './types/CollectionHierarchy';
|
|
5
6
|
import { Query, QueryResultType, QueryMetaType } from './Query';
|
|
6
7
|
import { Filter } from './Filter';
|
|
7
8
|
import { Filters } from './Filters';
|
|
8
9
|
import { Sorting } from './Sorting';
|
|
9
10
|
import { Limits } from './Limits';
|
|
10
11
|
import { SortAndLimit } from './SortAndLimit';
|
|
11
|
-
export { BackendInterface, AbstractAdapter, BackendError, MockAdapter, Query, QueryResultType, QueryMetaType, Filter, Filters, Sorting, Limits, SortAndLimit, };
|
|
12
|
+
export { BackendInterface, AbstractAdapter, BackendError, MockAdapter, Query, QueryResultType, QueryMetaType, Filter, Filters, Sorting, Limits, SortAndLimit, CollectionHierarchy, };
|
package/lib/backends/index.js
CHANGED
|
@@ -1,12 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SortAndLimit = exports.Limits = exports.Sorting = exports.Filters = exports.Filter = exports.Query = exports.MockAdapter = exports.BackendError = exports.AbstractAdapter = void 0;
|
|
26
|
+
exports.CollectionHierarchy = exports.SortAndLimit = exports.Limits = exports.Sorting = exports.Filters = exports.Filter = exports.Query = exports.MockAdapter = exports.BackendError = exports.AbstractAdapter = void 0;
|
|
4
27
|
const AbstractAdapter_1 = require("./AbstractAdapter");
|
|
5
28
|
Object.defineProperty(exports, "AbstractAdapter", { enumerable: true, get: function () { return AbstractAdapter_1.AbstractAdapter; } });
|
|
6
29
|
const MockAdapter_1 = require("./MockAdapter");
|
|
7
30
|
Object.defineProperty(exports, "MockAdapter", { enumerable: true, get: function () { return MockAdapter_1.MockAdapter; } });
|
|
8
31
|
const BackendError_1 = require("./BackendError");
|
|
9
32
|
Object.defineProperty(exports, "BackendError", { enumerable: true, get: function () { return BackendError_1.BackendError; } });
|
|
33
|
+
const CollectionHierarchy = __importStar(require("./types/CollectionHierarchy"));
|
|
34
|
+
exports.CollectionHierarchy = CollectionHierarchy;
|
|
10
35
|
const Query_1 = require("./Query");
|
|
11
36
|
Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return Query_1.Query; } });
|
|
12
37
|
const Filter_1 = require("./Filter");
|
|
@@ -9,5 +9,5 @@ export interface BackendInterface {
|
|
|
9
9
|
update(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
|
|
10
10
|
delete(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
|
|
11
11
|
query(query: Query<any>): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
12
|
-
find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
12
|
+
find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined, parent: any): Promise<QueryResultType<DataObjectClass<any>>>;
|
|
13
13
|
}
|
|
@@ -3,6 +3,7 @@ import { DataObjectProperties } from '../properties';
|
|
|
3
3
|
export declare abstract class AbstractObject {
|
|
4
4
|
static PROPS_DEFINITION: DataObjectProperties;
|
|
5
5
|
static COLLECTION: string | undefined;
|
|
6
|
+
static PARENT_PROP: string | undefined;
|
|
6
7
|
static LABEL_KEY: string;
|
|
7
8
|
protected _dataObject: DataObjectClass<any>;
|
|
8
9
|
constructor(dao: DataObjectClass<any>);
|
|
@@ -59,6 +59,15 @@ export declare class BaseObjectCore extends AbstractObject implements BaseObject
|
|
|
59
59
|
*/
|
|
60
60
|
protected toProxy<T extends BaseObject>(): Proxy<Proxy<T>>;
|
|
61
61
|
asReference(): any;
|
|
62
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Create a query based on given class where parent is current instance
|
|
64
|
+
* @param obj
|
|
65
|
+
* @returns Query
|
|
66
|
+
*/
|
|
67
|
+
query(obj: any): Query<any>;
|
|
68
|
+
/**
|
|
69
|
+
* Create a query based on current class
|
|
70
|
+
* @returns Query
|
|
71
|
+
*/
|
|
63
72
|
static query(): Query<typeof BaseObjectCore>;
|
|
64
73
|
}
|
|
@@ -33,7 +33,10 @@ class BaseObjectCore extends AbstractObject_1.AbstractObject {
|
|
|
33
33
|
base.push(property);
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
-
const dao = DataObject_1.DataObject.factory({
|
|
36
|
+
const dao = DataObject_1.DataObject.factory({
|
|
37
|
+
properties: base,
|
|
38
|
+
parentProp: this.PARENT_PROP,
|
|
39
|
+
});
|
|
37
40
|
dao.uri.class = child;
|
|
38
41
|
return dao;
|
|
39
42
|
}
|
|
@@ -146,9 +149,18 @@ class BaseObjectCore extends AbstractObject_1.AbstractObject {
|
|
|
146
149
|
asReference() {
|
|
147
150
|
return this._dataObject.toReference();
|
|
148
151
|
}
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Create a query based on given class where parent is current instance
|
|
154
|
+
* @param obj
|
|
155
|
+
* @returns Query
|
|
156
|
+
*/
|
|
157
|
+
query(obj) {
|
|
158
|
+
return new Query_1.Query(obj, this);
|
|
151
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Create a query based on current class
|
|
162
|
+
* @returns Query
|
|
163
|
+
*/
|
|
152
164
|
static query() {
|
|
153
165
|
return new Query_1.Query(this);
|
|
154
166
|
}
|
|
@@ -12,6 +12,7 @@ export default class BaseRepository<T extends BaseObject> {
|
|
|
12
12
|
backendAdapter: BackendInterface;
|
|
13
13
|
constructor(model: typeof BaseObjectCore, backendAdapter?: BackendInterface);
|
|
14
14
|
protected getDataObjectFromUid(uid: string): Promise<DataObjectClass<any>>;
|
|
15
|
+
protected getDataObjectFromPath(path: string): Promise<DataObjectClass<any>>;
|
|
15
16
|
create<B extends BaseObjectCore>(obj: B, uid?: string): Promise<any>;
|
|
16
17
|
read(key: string): Promise<any>;
|
|
17
18
|
update(obj: BaseObjectCore): Promise<any>;
|
|
@@ -58,17 +58,35 @@ class BaseRepository {
|
|
|
58
58
|
return dataObject;
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
+
getDataObjectFromPath(path) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const dataObject = DataObject_1.DataObject.factory({
|
|
64
|
+
properties: this._model.PROPS_DEFINITION,
|
|
65
|
+
uri: path,
|
|
66
|
+
});
|
|
67
|
+
dataObject.uid = path.substring(path.lastIndexOf('/') + 1);
|
|
68
|
+
return dataObject;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
61
71
|
create(obj, uid) {
|
|
62
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
73
|
const savedObj = yield this.backendAdapter.create(obj.dataObject, uid);
|
|
64
|
-
return this._model.fromDataObject(savedObj);
|
|
74
|
+
return this._model.fromDataObject(savedObj);
|
|
65
75
|
});
|
|
66
76
|
}
|
|
67
77
|
read(key) {
|
|
68
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
const uid = key.indexOf('/') !== -1 ? key.substring(key.lastIndexOf('/') + 1) : key;
|
|
70
79
|
try {
|
|
71
|
-
|
|
80
|
+
let dataObject;
|
|
81
|
+
if (key.split('/').length <= 2) {
|
|
82
|
+
const uid = key.indexOf('/') !== -1
|
|
83
|
+
? key.substring(key.lastIndexOf('/') + 1)
|
|
84
|
+
: key;
|
|
85
|
+
dataObject = yield this.getDataObjectFromUid(uid);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
dataObject = yield this.getDataObjectFromPath(key);
|
|
89
|
+
}
|
|
72
90
|
const response = yield this.backendAdapter.read(dataObject);
|
|
73
91
|
const obj = this._model.fromDataObject(response);
|
|
74
92
|
// TODO should be moved to the backend middleware
|
|
@@ -14,6 +14,7 @@ export interface DataObjectFactoryType {
|
|
|
14
14
|
export interface DataObjectParams {
|
|
15
15
|
uri?: string | ObjectUri;
|
|
16
16
|
properties: DataObjectProperties;
|
|
17
|
+
parentProp?: string;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
19
20
|
* Data objects constitute the agnostic glue between objects and backends.
|
|
@@ -26,6 +27,7 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
26
27
|
protected _properties: Properties;
|
|
27
28
|
protected _persisted: boolean;
|
|
28
29
|
protected _populated: boolean;
|
|
30
|
+
protected _parentProp: string | undefined;
|
|
29
31
|
protected _proxied: any;
|
|
30
32
|
/**
|
|
31
33
|
* Has data been modified since last backend operation?
|
|
@@ -75,6 +77,7 @@ export declare class DataObject implements DataObjectClass<any> {
|
|
|
75
77
|
set uri(uri: ObjectUri);
|
|
76
78
|
get uri(): ObjectUri;
|
|
77
79
|
get class(): any;
|
|
80
|
+
get parentProp(): string | undefined;
|
|
78
81
|
has(key: string): boolean;
|
|
79
82
|
/**
|
|
80
83
|
* Returns property matching key or throw
|
|
@@ -40,6 +40,7 @@ class DataObject {
|
|
|
40
40
|
else {
|
|
41
41
|
this._objectUri = params.uri;
|
|
42
42
|
}
|
|
43
|
+
this._parentProp = params.parentProp;
|
|
43
44
|
}
|
|
44
45
|
else {
|
|
45
46
|
this._objectUri = new ObjectUri_1.ObjectUri();
|
|
@@ -190,6 +191,9 @@ class DataObject {
|
|
|
190
191
|
// TODO get class type
|
|
191
192
|
return this.uri.class;
|
|
192
193
|
}
|
|
194
|
+
get parentProp() {
|
|
195
|
+
return this._parentProp;
|
|
196
|
+
}
|
|
193
197
|
has(key) {
|
|
194
198
|
return Reflect.has(this._properties, key);
|
|
195
199
|
}
|
|
@@ -200,7 +204,7 @@ class DataObject {
|
|
|
200
204
|
*/
|
|
201
205
|
get(key) {
|
|
202
206
|
if (!Reflect.has(this._properties, key)) {
|
|
203
|
-
throw new ResourcesErrors_1.NotFoundError(`No property matching key ${key}`);
|
|
207
|
+
throw new ResourcesErrors_1.NotFoundError(`No property matching key '${key}'`);
|
|
204
208
|
}
|
|
205
209
|
return Reflect.get(this._properties, key);
|
|
206
210
|
}
|
|
@@ -242,7 +246,6 @@ class DataObject {
|
|
|
242
246
|
break;
|
|
243
247
|
case 'ObjectProperty':
|
|
244
248
|
const value = prop.val();
|
|
245
|
-
console.log(value, typeof value);
|
|
246
249
|
Reflect.set(data, key, value
|
|
247
250
|
? objectsAsReferences && !(value instanceof ObjectUri_1.ObjectUri)
|
|
248
251
|
? value.asReference()
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { BaseObjectCore } from './BaseObjectCore';
|
|
2
2
|
import { BaseObject } from './BaseObject';
|
|
3
|
-
import { User } from './User';
|
|
4
|
-
import { EntityClass } from './types/EntityClass';
|
|
5
|
-
export declare const EntityProperties: any;
|
|
6
3
|
export interface EntityType extends BaseObject {
|
|
7
|
-
users?: User[];
|
|
8
4
|
}
|
|
9
|
-
export declare class Entity extends BaseObjectCore
|
|
5
|
+
export declare class Entity extends BaseObjectCore {
|
|
10
6
|
static COLLECTION: string;
|
|
11
7
|
static PROPS_DEFINITION: any[];
|
|
8
|
+
static factory(src?: any): Promise<Entity>;
|
|
12
9
|
}
|
package/lib/components/Entity.js
CHANGED
|
@@ -22,32 +22,32 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
25
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Entity =
|
|
35
|
+
exports.Entity = void 0;
|
|
27
36
|
const BaseObjectCore_1 = require("./BaseObjectCore");
|
|
28
37
|
const BaseObject_1 = require("./BaseObject");
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
//import { User } from './User'
|
|
39
|
+
//import { CollectionProperty } from '../properties/CollectionProperty'
|
|
31
40
|
const StringProperty_1 = require("../properties/StringProperty");
|
|
32
41
|
const htmlType = __importStar(require("../properties/types/PropertyHTMLType"));
|
|
33
|
-
exports.EntityProperties = [
|
|
34
|
-
{
|
|
35
|
-
// surcharge property minLength and htmlType
|
|
36
|
-
name: 'name',
|
|
37
|
-
type: StringProperty_1.StringProperty.TYPE,
|
|
38
|
-
mandatory: true,
|
|
39
|
-
minLength: 1,
|
|
40
|
-
htmlType: htmlType.ORG,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
name: 'users',
|
|
44
|
-
mandatory: true,
|
|
45
|
-
type: CollectionProperty_1.CollectionProperty.TYPE,
|
|
46
|
-
instanceOf: 'User',
|
|
47
|
-
parentKey: 'entity',
|
|
48
|
-
},
|
|
49
|
-
];
|
|
50
42
|
class Entity extends BaseObjectCore_1.BaseObjectCore {
|
|
43
|
+
static factory(src = undefined) {
|
|
44
|
+
const _super = Object.create(null, {
|
|
45
|
+
factory: { get: () => super.factory }
|
|
46
|
+
});
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
return _super.factory.call(this, src, Entity);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
51
|
}
|
|
52
52
|
exports.Entity = Entity;
|
|
53
53
|
Entity.COLLECTION = 'entities';
|
|
@@ -61,11 +61,11 @@ Entity.PROPS_DEFINITION = [
|
|
|
61
61
|
minLength: 1,
|
|
62
62
|
htmlType: htmlType.ORG,
|
|
63
63
|
},
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
64
|
+
// {
|
|
65
|
+
// name: 'users',
|
|
66
|
+
// mandatory: true,
|
|
67
|
+
// type: CollectionProperty.TYPE,
|
|
68
|
+
// instanceOf: User,
|
|
69
|
+
// parentKey: 'entity',
|
|
70
|
+
// },
|
|
71
71
|
];
|
|
@@ -7,6 +7,7 @@ export interface DataObjectClass<T extends DataObjectClass<any>> {
|
|
|
7
7
|
path: any;
|
|
8
8
|
class: any;
|
|
9
9
|
properties: any;
|
|
10
|
+
parentProp: string | undefined;
|
|
10
11
|
setProperties(properties: any): void;
|
|
11
12
|
addProperty(property: PropertyClassType): void;
|
|
12
13
|
populate(data?: any): Promise<T>;
|
package/lib/index.d.ts
CHANGED
|
@@ -24,10 +24,10 @@ import { BackendAction, BackendParameters, BackendParametersKeys, BackendRecordT
|
|
|
24
24
|
import Middleware from './backends/middlewares/Middleware';
|
|
25
25
|
import { UserType, User } from './components/User';
|
|
26
26
|
import UserRepository from './components/UserRepository';
|
|
27
|
-
import { Entity } from './components/Entity';
|
|
27
|
+
import { EntityType, Entity } from './components/Entity';
|
|
28
28
|
import EntityRepository from './components/EntityRepository';
|
|
29
29
|
import { AuthAction, AuthParameters, AuthParametersKeys } from './Auth';
|
|
30
30
|
import { AuthInterface, AbstractAuthAdapter, AuthenticationError } from './authentication';
|
|
31
31
|
import { AbstractAdapter, MockAdapter, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
|
|
32
32
|
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
|
|
33
|
-
export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, AuthAction, AuthParameters, AuthParametersKeys, AuthInterface, AbstractAuthAdapter, AuthenticationError, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, UserType, Proxy, UserRepository, Entity, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
|
33
|
+
export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, AuthAction, AuthParameters, AuthParametersKeys, AuthInterface, AbstractAuthAdapter, AuthenticationError, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, UserType, Proxy, UserRepository, Entity, EntityType, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
|
@@ -19,8 +19,9 @@ class CollectionProperty extends BaseProperty_1.BaseProperty {
|
|
|
19
19
|
super(config);
|
|
20
20
|
this._value = undefined;
|
|
21
21
|
this._filters = undefined;
|
|
22
|
+
console.log(config);
|
|
22
23
|
if (!config.instanceOf) {
|
|
23
|
-
throw new Error(
|
|
24
|
+
throw new Error(`Parameter 'instanceOf' is mandatory`);
|
|
24
25
|
}
|
|
25
26
|
this._instanceOf =
|
|
26
27
|
typeof config.instanceOf === 'string'
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Proxy } from '../components/types/ProxyConstructor';
|
|
1
|
+
import { AbstractObject } from '../components';
|
|
3
2
|
/**
|
|
4
3
|
* Generate data from model of object and save it in default backend
|
|
5
4
|
* @param model
|
|
@@ -7,4 +6,4 @@ import { Proxy } from '../components/types/ProxyConstructor';
|
|
|
7
6
|
* @param forcedValues
|
|
8
7
|
* @returns
|
|
9
8
|
*/
|
|
10
|
-
export declare const DataGenerator: <T extends
|
|
9
|
+
export declare const DataGenerator: <T extends AbstractObject>(model: T, qty?: number, forcedValues?: any) => Promise<any>;
|
|
@@ -47,8 +47,9 @@ const DataGenerator = (model, qty = 5, forcedValues = {}) => __awaiter(void 0, v
|
|
|
47
47
|
const promises = [];
|
|
48
48
|
Core_1.Core.log(`Starting to create ${qty} ${model.constructor.name} records`);
|
|
49
49
|
for (let i = 0; i < qty; i++) {
|
|
50
|
-
const dao = yield model.
|
|
50
|
+
const dao = yield model.dataObject.clone();
|
|
51
51
|
Object.keys(dao.properties).forEach((key) => {
|
|
52
|
+
console.log(`Getting property for '${key}'`);
|
|
52
53
|
const property = dao.get(key);
|
|
53
54
|
if (forcedValues[key]) {
|
|
54
55
|
property.set(forcedValues[key]);
|