@quatrain/core 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/lib/Backend.d.ts +6 -5
  2. package/lib/Backend.js +17 -5
  3. package/lib/Core.d.ts +3 -3
  4. package/lib/backends/AbstractAdapter.d.ts +11 -6
  5. package/lib/backends/AbstractAdapter.js +13 -3
  6. package/lib/backends/Filter.d.ts +2 -2
  7. package/lib/backends/FilterOperators.d.ts +1 -1
  8. package/lib/backends/FilterOperators.js +1 -1
  9. package/lib/backends/MockAdapter.js +13 -5
  10. package/lib/backends/Query.d.ts +9 -3
  11. package/lib/backends/Query.js +26 -6
  12. package/lib/backends/middlewares/InjectMetaMiddleware.d.ts +7 -6
  13. package/lib/backends/middlewares/InjectMetaMiddleware.js +8 -28
  14. package/lib/backends/middlewares/Middleware.d.ts +5 -0
  15. package/lib/common/ResourcesErrors.d.ts +13 -0
  16. package/lib/common/ResourcesErrors.js +25 -0
  17. package/lib/components/AbstractObject.d.ts +0 -2
  18. package/lib/components/AbstractObject.js +0 -4
  19. package/lib/components/BaseObject.d.ts +11 -13
  20. package/lib/components/BaseObject.js +84 -78
  21. package/lib/components/BaseObjectCore.d.ts +60 -0
  22. package/lib/components/BaseObjectCore.js +153 -0
  23. package/lib/components/BaseRepository.d.ts +24 -0
  24. package/lib/components/BaseRepository.js +116 -0
  25. package/lib/components/DataObject.d.ts +19 -4
  26. package/lib/components/DataObject.js +51 -18
  27. package/lib/components/Entity.d.ts +22 -3
  28. package/lib/components/Entity.js +23 -22
  29. package/lib/components/EntityRepository.d.ts +6 -0
  30. package/lib/components/EntityRepository.js +14 -0
  31. package/lib/components/ObjectUri.js +3 -3
  32. package/lib/components/User.d.ts +14 -3
  33. package/lib/components/User.js +10 -8
  34. package/lib/components/UserRepository.d.ts +7 -0
  35. package/lib/components/UserRepository.js +36 -0
  36. package/lib/components/index.d.ts +4 -5
  37. package/lib/components/index.js +6 -9
  38. package/lib/components/types/AbstractObjectClass.d.ts +1 -1
  39. package/lib/components/types/BaseObjectClass.d.ts +3 -2
  40. package/lib/components/types/DataObjectClass.d.ts +3 -0
  41. package/lib/components/types/Payload.d.ts +10 -0
  42. package/lib/components/types/Payload.js +2 -0
  43. package/lib/components/types/Persisted.d.ts +6 -0
  44. package/lib/components/types/Persisted.js +2 -0
  45. package/lib/components/types/Properties.d.ts +3 -0
  46. package/lib/components/types/Properties.js +1 -0
  47. package/lib/components/types/ProxyConstructor.d.ts +10 -0
  48. package/lib/components/types/ProxyConstructor.js +4 -0
  49. package/lib/components/types/RepositoryClass.d.ts +40 -0
  50. package/lib/components/types/RepositoryClass.js +2 -0
  51. package/lib/index.d.ts +11 -3
  52. package/lib/index.js +21 -8
  53. package/lib/properties/BaseProperty.d.ts +2 -1
  54. package/lib/properties/BaseProperty.js +5 -1
  55. package/lib/properties/CollectionProperty.d.ts +4 -3
  56. package/lib/properties/HashProperty.d.ts +1 -1
  57. package/lib/properties/NumberProperty.d.ts +2 -2
  58. package/lib/properties/ObjectProperty.d.ts +5 -3
  59. package/lib/properties/ObjectProperty.js +5 -2
  60. package/lib/properties/Property.js +6 -0
  61. package/lib/properties/index.d.ts +2 -2
  62. package/lib/properties/types/PropertyClassType.d.ts +2 -1
  63. package/lib/properties/types/PropertyHTMLType.d.ts +1 -1
  64. package/lib/properties/types/PropertyTypes.d.ts +2 -2
  65. package/lib/utils/DataGenerator.d.ts +3 -2
  66. package/lib/utils/DataGenerator.js +1 -1
  67. package/package.json +31 -29
  68. package/lib/components/BaseObjectProperties.d.ts +0 -13
  69. package/lib/components/BaseObjectProperties.js +0 -87
  70. package/lib/components/UserProperties.d.ts +0 -1
  71. package/lib/components/UserProperties.js +0 -103
  72. package/lib/components/types/UserClass.d.ts +0 -3
  73. /package/lib/{components/types/UserClass.js → backends/middlewares/Middleware.js} +0 -0
package/lib/Backend.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export declare const CREATE = "create";
2
- export declare const READ = "read";
3
- export declare const UPDATE = "update";
4
- export declare const DELETE = "delete";
5
- export declare type BackendActions = typeof CREATE | typeof READ | typeof UPDATE | typeof DELETE;
1
+ export declare enum BackendAction {
2
+ CREATE = "create",
3
+ READ = "read",
4
+ UPDATE = "update",
5
+ DELETE = "delete"
6
+ }
package/lib/Backend.js CHANGED
@@ -1,7 +1,19 @@
1
1
  "use strict";
2
+ // export const CREATE = 'create'
3
+ // export const READ = 'read'
4
+ // export const UPDATE = 'update'
5
+ // export const DELETE = 'delete'
2
6
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DELETE = exports.UPDATE = exports.READ = exports.CREATE = void 0;
4
- exports.CREATE = 'create';
5
- exports.READ = 'read';
6
- exports.UPDATE = 'update';
7
- exports.DELETE = 'delete';
7
+ exports.BackendAction = void 0;
8
+ // export type BackendActions =
9
+ // | typeof CREATE
10
+ // | typeof READ
11
+ // | typeof UPDATE
12
+ // | typeof DELETE
13
+ var BackendAction;
14
+ (function (BackendAction) {
15
+ BackendAction["CREATE"] = "create";
16
+ BackendAction["READ"] = "read";
17
+ BackendAction["UPDATE"] = "update";
18
+ BackendAction["DELETE"] = "delete";
19
+ })(BackendAction || (exports.BackendAction = BackendAction = {}));
package/lib/Core.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { AbstractAdapter } from './backends/AbstractAdapter';
2
+ import { User } from './components/User';
2
3
  import { DataObjectClass } from './components/types/DataObjectClass';
3
- import { UserClass } from './components/types/UserClass';
4
- export declare type BackendRegistry<T extends AbstractAdapter> = {
4
+ export type BackendRegistry<T extends AbstractAdapter> = {
5
5
  [x: string]: T;
6
6
  };
7
7
  export declare class Core {
8
8
  static defaultBackend: string;
9
- static currentUser: UserClass;
9
+ static currentUser: User;
10
10
  static classRegistry: {
11
11
  [key: string]: any;
12
12
  };
@@ -1,8 +1,10 @@
1
+ import { BackendAction } from '../Backend';
1
2
  import { DataObjectClass } from '../components/types/DataObjectClass';
2
3
  import { Filter } from './Filter';
3
4
  import { Filters } from './Filters';
4
5
  import { Query } from './Query';
5
6
  import { SortAndLimit } from './SortAndLimit';
7
+ import Middleware from './middlewares/Middleware';
6
8
  /**
7
9
  * Default interface for a backend record
8
10
  */
@@ -14,7 +16,7 @@ export interface BackendRecordType {
14
16
  /**
15
17
  * Backend Parameters acceptable keys
16
18
  */
17
- export declare type BackendParametersKeys = 'host' | 'alias' | 'mapping' | 'middlewares' | 'config' | 'fixtures' | 'softDelete' | 'debug';
19
+ export type BackendParametersKeys = 'host' | 'alias' | 'mapping' | 'middlewares' | 'config' | 'fixtures' | 'softDelete' | 'debug';
18
20
  /**
19
21
  * Backend parameters interface
20
22
  */
@@ -24,7 +26,7 @@ export interface BackendParameters {
24
26
  mapping?: {
25
27
  [x: string]: any;
26
28
  };
27
- middlewares?: any[];
29
+ middlewares?: Middleware[];
28
30
  config?: any;
29
31
  fixtures?: any;
30
32
  softDelete?: boolean;
@@ -37,17 +39,19 @@ export interface BackendInterface {
37
39
  delete(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
38
40
  query(query: Query<any>): Promise<DataObjectClass<any>[]>;
39
41
  find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<DataObjectClass<any>[]>;
42
+ count(query: Query<any>): Promise<number>;
40
43
  }
41
- export declare abstract class AbstractAdapter {
44
+ export declare abstract class AbstractAdapter implements BackendInterface {
42
45
  protected _alias: string;
43
46
  protected _params: BackendParameters;
44
- protected _middlewares: any[];
47
+ protected _middlewares: Middleware[];
45
48
  constructor(params?: BackendParameters);
46
49
  setParam(key: BackendParametersKeys, value: any): void;
47
50
  getParam(key: BackendParametersKeys): any;
51
+ addMiddleware(middleware: Middleware): void;
48
52
  set alias(alias: string);
49
53
  get alias(): string;
50
- getCollection(dao: DataObjectClass<any>): any;
54
+ getCollection(dao: DataObjectClass<any>): string | undefined;
51
55
  abstract create(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
52
56
  abstract read(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
53
57
  abstract update(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
@@ -59,7 +63,8 @@ export declare abstract class AbstractAdapter {
59
63
  * @returns Array
60
64
  */
61
65
  query(query: Query<any>): Promise<DataObjectClass<any>[]>;
66
+ count(query: Query<any>): Promise<number>;
62
67
  abstract find(dataObject: DataObjectClass<any>, filters: Filters | Filter[] | undefined, pagination: SortAndLimit | undefined): Promise<DataObjectClass<any>[]>;
63
68
  log(message: string): void;
64
- executeMiddlewares(dataObject: DataObjectClass<any>): Promise<DataObjectClass<any>>;
69
+ executeMiddlewares(dataObject: DataObjectClass<any>, action: BackendAction): Promise<DataObjectClass<any>>;
65
70
  }
@@ -24,6 +24,9 @@ class AbstractAdapter {
24
24
  getParam(key) {
25
25
  return this._params[key];
26
26
  }
27
+ addMiddleware(middleware) {
28
+ this._middlewares.push(middleware);
29
+ }
27
30
  set alias(alias) {
28
31
  this._alias = alias;
29
32
  }
@@ -31,7 +34,7 @@ class AbstractAdapter {
31
34
  return this._alias;
32
35
  }
33
36
  getCollection(dao) {
34
- return dao.uri.class.COLLECTION || dao.uri.class.name.toLowerCase();
37
+ return dao.uri.collection; //|| dao.uri.class.name.toLowerCase() //class.COLLECTION
35
38
  }
36
39
  /**
37
40
  * Process Query instance and return result
@@ -43,14 +46,21 @@ class AbstractAdapter {
43
46
  return yield this.find(yield query.obj.daoFactory(), query.filters, query.sortAndLimit);
44
47
  });
45
48
  }
49
+ count(query) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ return (yield this.find(yield query.obj.daoFactory(), query.filters, undefined)).length;
52
+ });
53
+ }
46
54
  log(message) {
47
55
  if (this._params['debug'] === true) {
48
56
  console.log(message);
49
57
  }
50
58
  }
51
- executeMiddlewares(dataObject) {
59
+ executeMiddlewares(dataObject, action) {
52
60
  return __awaiter(this, void 0, void 0, function* () {
53
- this._middlewares.forEach((middleware) => __awaiter(this, void 0, void 0, function* () { return yield middleware.execute(dataObject); }));
61
+ for (const middleware of this._middlewares) {
62
+ yield middleware.execute(dataObject, action);
63
+ }
54
64
  return dataObject;
55
65
  });
56
66
  }
@@ -1,6 +1,6 @@
1
- import { BaseObject } from '../components';
1
+ import { BaseObjectCore } from '../components';
2
2
  import { FilterOperatorType } from './FilterOperators';
3
- export declare type FilterValueType<T extends BaseObject> = T | number | string | string[] | null;
3
+ export type FilterValueType<T extends BaseObjectCore> = T | number | string | string[] | null;
4
4
  export interface FilterType {
5
5
  prop: string;
6
6
  operator: FilterOperatorType | undefined;
@@ -10,4 +10,4 @@ export declare enum FilterOperator {
10
10
  containsAll = 8,
11
11
  containsAny = 9
12
12
  }
13
- export declare type FilterOperatorType = 'equals' | 'notEquals' | 'greater' | 'greaterOrEquals' | 'lower' | 'lowerOrEquals' | 'contains' | 'notContains' | 'containsAll' | 'containsAny';
13
+ export type FilterOperatorType = 'equals' | 'notEquals' | 'greater' | 'greaterOrEquals' | 'lower' | 'lowerOrEquals' | 'contains' | 'notContains' | 'containsAll' | 'containsAny';
@@ -13,4 +13,4 @@ var FilterOperator;
13
13
  FilterOperator[FilterOperator["notContains"] = 7] = "notContains";
14
14
  FilterOperator[FilterOperator["containsAll"] = 8] = "containsAll";
15
15
  FilterOperator[FilterOperator["containsAny"] = 9] = "containsAny";
16
- })(FilterOperator = exports.FilterOperator || (exports.FilterOperator = {}));
16
+ })(FilterOperator || (exports.FilterOperator = FilterOperator = {}));
@@ -14,7 +14,7 @@ const AbstractAdapter_1 = require("./AbstractAdapter");
14
14
  const ObjectUri_1 = require("../components/ObjectUri");
15
15
  const faker_1 = require("@faker-js/faker");
16
16
  const BackendError_1 = require("./BackendError");
17
- const NotFoundError_1 = require("./NotFoundError");
17
+ const ResourcesErrors_1 = require("../common/ResourcesErrors");
18
18
  class MockAdapter extends AbstractAdapter_1.AbstractAdapter {
19
19
  /**
20
20
  * Inject fixtures data to backend adapter
@@ -67,7 +67,8 @@ class MockAdapter extends AbstractAdapter_1.AbstractAdapter {
67
67
  const path = dataObject.path;
68
68
  const data = MockAdapter._fixtures[path];
69
69
  if (data === undefined) {
70
- reject(new NotFoundError_1.NotFoundError(`[Mock] No data for ${path}`));
70
+ reject(new ResourcesErrors_1.NotFoundError(`[Mock] No data for ${path}`));
71
+ return;
71
72
  }
72
73
  this.log(`[DAO] Populating ${dataObject.path}`);
73
74
  resolve(yield dataObject.populate(data));
@@ -80,7 +81,7 @@ class MockAdapter extends AbstractAdapter_1.AbstractAdapter {
80
81
  const path = dataObject.path;
81
82
  const data = MockAdapter._fixtures[path];
82
83
  if (data === undefined) {
83
- reject(new NotFoundError_1.NotFoundError(`[Mock] No data for ${path}`));
84
+ reject(new ResourcesErrors_1.NotFoundError(`[Mock] No data for ${path}`));
84
85
  }
85
86
  this.log(`[DAO] Updating ${dataObject.path}`);
86
87
  MockAdapter._fixtures[path] = Object.assign(Object.assign({}, data), dataObject.toJSON());
@@ -94,7 +95,7 @@ class MockAdapter extends AbstractAdapter_1.AbstractAdapter {
94
95
  const path = dataObject.path;
95
96
  const data = MockAdapter._fixtures[path];
96
97
  if (data === undefined) {
97
- reject(new NotFoundError_1.NotFoundError(`[Mock] No data for ${path}`));
98
+ reject(new ResourcesErrors_1.NotFoundError(`[Mock] No data for ${path}`));
98
99
  }
99
100
  delete MockAdapter._fixtures[dataObject.path];
100
101
  dataObject.uri = new ObjectUri_1.ObjectUri();
@@ -126,8 +127,11 @@ class MockAdapter extends AbstractAdapter_1.AbstractAdapter {
126
127
  if (Array.isArray(filters)) {
127
128
  filters.forEach((filter) => {
128
129
  const prop = dao.get(filter.prop);
130
+ if (typeof prop === 'undefined') {
131
+ keep = false;
132
+ return;
133
+ }
129
134
  const val = prop.val();
130
- //console.log(filter.prop, prop)
131
135
  if (typeof prop === 'object') {
132
136
  if (prop.constructor.name === 'ObjectProperty') {
133
137
  if (filter.value instanceof ObjectUri_1.ObjectUri &&
@@ -144,6 +148,10 @@ class MockAdapter extends AbstractAdapter_1.AbstractAdapter {
144
148
  return;
145
149
  }
146
150
  }
151
+ else if (val !== filter.value) {
152
+ keep = false;
153
+ return;
154
+ }
147
155
  }
148
156
  else {
149
157
  if (prop.val() !== filter.value) {
@@ -3,7 +3,10 @@ import { Limits } from './Limits';
3
3
  import { Sorting } from './Sorting';
4
4
  import { SortAndLimit } from './SortAndLimit';
5
5
  import { BackendInterface } from './AbstractAdapter';
6
- import { AbstractObject } from '../components';
6
+ import { DataObjectClass, ObjectUri } from '../components';
7
+ import { Persisted } from '../components/types/Persisted';
8
+ import { BaseObject } from '../components/BaseObject';
9
+ import { BaseObjectCore } from '../components/BaseObjectCore';
7
10
  export declare const AS_OBJECTURIS = "objectUris";
8
11
  export declare const AS_DATAOBJECTS = "dataObjects";
9
12
  export declare const AS_INSTANCES = "classInstances";
@@ -12,7 +15,7 @@ export declare enum returnAs {
12
15
  AS_DATAOBJECTS = "dataObjects",
13
16
  AS_INSTANCES = "classInstances"
14
17
  }
15
- export declare class Query<T extends typeof AbstractObject> {
18
+ export declare class Query<T extends typeof BaseObjectCore> {
16
19
  protected _obj: T;
17
20
  protected _params: any;
18
21
  filters: Filter[];
@@ -28,5 +31,8 @@ export declare class Query<T extends typeof AbstractObject> {
28
31
  offset(offset?: number): this;
29
32
  batch(batch?: number): this;
30
33
  get sortAndLimit(): SortAndLimit;
31
- execute(as?: returnAs, backend?: BackendInterface): Promise<any>;
34
+ fetch(backend?: BackendInterface): Promise<DataObjectClass<any>[]>;
35
+ fetchAsUri(backend?: BackendInterface): Promise<ObjectUri[]>;
36
+ fetchAsInstances(backend?: BackendInterface): Promise<Persisted<BaseObject>[]>;
37
+ execute(as?: returnAs, backend?: BackendInterface): Promise<DataObjectClass<any>[] | ObjectUri[] | Persisted<BaseObject>[]>;
32
38
  }
@@ -23,7 +23,7 @@ var returnAs;
23
23
  returnAs["AS_OBJECTURIS"] = "objectUris";
24
24
  returnAs["AS_DATAOBJECTS"] = "dataObjects";
25
25
  returnAs["AS_INSTANCES"] = "classInstances";
26
- })(returnAs = exports.returnAs || (exports.returnAs = {}));
26
+ })(returnAs || (exports.returnAs = returnAs = {}));
27
27
  class Query {
28
28
  constructor(obj, params = {}) {
29
29
  this._obj = obj;
@@ -72,18 +72,38 @@ class Query {
72
72
  get sortAndLimit() {
73
73
  return new SortAndLimit_1.SortAndLimit(this.sortings, this.limits);
74
74
  }
75
+ fetch(backend = Core_1.Core.getBackend()) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ return backend.query(this);
78
+ });
79
+ }
80
+ fetchAsUri(backend = Core_1.Core.getBackend()) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ const result = yield this.fetch(backend);
83
+ return yield Promise.all(result.map((dao) => dao.uri));
84
+ });
85
+ }
86
+ fetchAsInstances(backend = Core_1.Core.getBackend()) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ const result = yield this.fetch(backend);
89
+ const instances = [];
90
+ for (const item of result) {
91
+ instances.push(this._obj.fromDataObject(item));
92
+ }
93
+ return instances;
94
+ });
95
+ }
75
96
  execute(as = returnAs.AS_DATAOBJECTS, backend = Core_1.Core.getBackend()) {
76
97
  return __awaiter(this, void 0, void 0, function* () {
98
+ //</any><Array<T2> | Array<DataObject> | Array<ObjectUri>> {
77
99
  try {
78
- const result = yield backend.query(this);
79
100
  switch (as) {
80
101
  case exports.AS_DATAOBJECTS:
81
- return result;
102
+ return yield this.fetch(backend);
82
103
  case exports.AS_OBJECTURIS:
83
- return yield Promise.all(result.map((dao) => dao.uri));
104
+ return yield this.fetchAsUri(backend);
84
105
  case exports.AS_INSTANCES:
85
- //console.log(this._obj)
86
- return yield Promise.all(result.map((dao) => Reflect.construct(this._obj, [dao])));
106
+ return yield this.fetchAsInstances(backend);
87
107
  default:
88
108
  throw new Error(`Unknown output mode`);
89
109
  }
@@ -1,11 +1,12 @@
1
1
  import { DataObjectClass } from '../../components';
2
- import { UserClass } from '../../components/types/UserClass';
3
- import * as actions from '../../Backend';
2
+ import { BackendAction } from '../../Backend';
3
+ import { User } from '../../components/User';
4
+ import Middleware from './Middleware';
4
5
  export interface InjectMetaMiddlewareParams {
5
- user: UserClass;
6
+ user: User;
6
7
  }
7
- export declare class InjectMetaMiddleware {
8
- protected _user: UserClass;
8
+ export declare class InjectMetaMiddleware implements Middleware {
9
+ protected _user: User;
9
10
  constructor(params: InjectMetaMiddlewareParams);
10
- execute(dataObject: DataObjectClass<any>, action: actions.BackendActions): void;
11
+ execute(dataObject: DataObjectClass<any>, action: BackendAction): void;
11
12
  }
@@ -1,30 +1,7 @@
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
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.InjectMetaMiddleware = void 0;
27
- const actions = __importStar(require("../../Backend"));
4
+ const Backend_1 = require("../../Backend");
28
5
  class InjectMetaMiddleware {
29
6
  constructor(params) {
30
7
  this._user = params.user;
@@ -32,15 +9,18 @@ class InjectMetaMiddleware {
32
9
  execute(dataObject, action) {
33
10
  switch (action) {
34
11
  // add properties existence validation
35
- case actions.CREATE:
12
+ case Backend_1.BackendAction.CREATE:
36
13
  dataObject.set('createdBy', this._user);
37
14
  dataObject.set('createdAt', Date.now());
38
- case actions.UPDATE:
15
+ break;
16
+ case Backend_1.BackendAction.UPDATE:
39
17
  dataObject.set('updatedBy', this._user);
40
18
  dataObject.set('updatedAt', Date.now());
41
- case actions.DELETE:
19
+ break;
20
+ case Backend_1.BackendAction.DELETE:
42
21
  dataObject.set('deletedBy', this._user);
43
- dataObject.set('deleteddAt', Date.now());
22
+ dataObject.set('deletedAt', Date.now());
23
+ break;
44
24
  default:
45
25
  break;
46
26
  }
@@ -0,0 +1,5 @@
1
+ import { BackendAction } from '../../Backend';
2
+ import { DataObjectClass } from '../../components';
3
+ export default interface Middleware {
4
+ execute: (dataObject: DataObjectClass<any>, action: BackendAction) => void;
5
+ }
@@ -0,0 +1,13 @@
1
+ export declare class ResourceError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class BadRequestError extends ResourceError {
5
+ }
6
+ export declare class UnauthorizedError extends ResourceError {
7
+ }
8
+ export declare class ForbiddenError extends ResourceError {
9
+ }
10
+ export declare class NotFoundError extends ResourceError {
11
+ }
12
+ export declare class GoneError extends ResourceError {
13
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.ResourceError = void 0;
4
+ class ResourceError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = this.constructor.name;
8
+ }
9
+ }
10
+ exports.ResourceError = ResourceError;
11
+ class BadRequestError extends ResourceError {
12
+ }
13
+ exports.BadRequestError = BadRequestError;
14
+ class UnauthorizedError extends ResourceError {
15
+ }
16
+ exports.UnauthorizedError = UnauthorizedError;
17
+ class ForbiddenError extends ResourceError {
18
+ }
19
+ exports.ForbiddenError = ForbiddenError;
20
+ class NotFoundError extends ResourceError {
21
+ }
22
+ exports.NotFoundError = NotFoundError;
23
+ class GoneError extends ResourceError {
24
+ }
25
+ exports.GoneError = GoneError;
@@ -1,6 +1,5 @@
1
1
  import { DataObjectClass } from './types/DataObjectClass';
2
2
  import { DataObjectProperties } from '../properties/';
3
- import { Query } from '../backends/Query';
4
3
  export declare abstract class AbstractObject {
5
4
  static PROPS_DEFINITION: DataObjectProperties;
6
5
  static COLLECTION: string | undefined;
@@ -22,5 +21,4 @@ export declare abstract class AbstractObject {
22
21
  };
23
22
  save(): Promise<this>;
24
23
  delete(): Promise<DataObjectClass<any>>;
25
- static query(): Query<typeof AbstractObject>;
26
24
  }
@@ -10,7 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AbstractObject = void 0;
13
- const Query_1 = require("../backends/Query");
14
13
  class AbstractObject {
15
14
  constructor(dao) {
16
15
  this._dataObject = dao;
@@ -60,9 +59,6 @@ class AbstractObject {
60
59
  return yield this._dataObject.delete();
61
60
  });
62
61
  }
63
- static query() {
64
- return new Query_1.Query(this);
65
- }
66
62
  }
67
63
  exports.AbstractObject = AbstractObject;
68
64
  AbstractObject.PROPS_DEFINITION = [];
@@ -1,15 +1,13 @@
1
1
  import { ObjectUri } from './ObjectUri';
2
- import { DataObjectClass } from './types/DataObjectClass';
3
- import { BaseObjectClass } from './types/BaseObjectClass';
4
- import { AbstractObject } from './AbstractObject';
5
- import { Query } from '../backends/Query';
6
- export declare class BaseObject extends AbstractObject implements BaseObjectClass {
7
- static PROPS_DEFINITION: any;
8
- static getProperty(key: string): any;
9
- get status(): string;
10
- set status(status: string);
11
- static daoFactory(src?: string | ObjectUri | DataObjectClass<any> | undefined, child?: any): Promise<DataObjectClass<any>>;
12
- static factory<T extends BaseObject>(src?: string | ObjectUri | DataObjectClass<any> | undefined, child?: any): Promise<T | BaseObject>;
13
- asReference(): any;
14
- query(): Query<any>;
2
+ import { User } from './User';
3
+ export interface BaseObject {
4
+ name: string;
5
+ status: string;
6
+ createdBy?: User | ObjectUri;
7
+ createdAt?: number;
8
+ updatedBy?: User | ObjectUri;
9
+ updatedAt?: number;
10
+ deletedBy?: User | ObjectUri;
11
+ deletedAt?: number;
15
12
  }
13
+ export declare const BaseObjectProperties: any;