@decaf-ts/db-decorators 0.1.1 → 0.1.3

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseRepository=void 0;const decorator_validation_1=require("@decaf-ts/decorator-validation"),utils_1=require("./utils.cjs"),constants_1=require("../operations/constants.cjs"),errors_1=require("./errors.cjs"),DataCache_1=require("./DataCache.cjs"),wrappers_1=require("./wrappers.cjs"),identity_1=require("../identity/index.cjs");class BaseRepository{get class(){if(this._class)return this._class;throw new errors_1.InternalError("No class definition found for this repository")}get cache(){return this._cache||(this._cache=new DataCache_1.DataCache),this._cache}constructor(){const s=this;[this.create,this.read,this.update,this.delete].forEach(t=>{var e=t.name;(0,wrappers_1.wrapMethod)(s,s[e+"Prefix"],t,s[e+"Suffix"])})}async create(t){throw new Error("Child classes must implement this.")}async createPrefix(t,...e){return t=new this.class(t),await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.CREATE,constants_1.OperationKeys.ON),[t,...e]}async createSuffix(t){return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.CREATE,constants_1.OperationKeys.AFTER),t}async read(t){throw new Error("Child classes must implement this")}async readSuffix(t){return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.READ,constants_1.OperationKeys.AFTER),t}async readPrefix(t,...e){var s=new this.class;return await(0,utils_1.enforceDBDecorators)(this,s,constants_1.OperationKeys.READ,constants_1.OperationKeys.ON),[t,...e]}async update(t){throw new Error("Child classes must implement this")}async updateSuffix(t){return t=new this.class(t),await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.UPDATE,constants_1.OperationKeys.AFTER),t}async updatePrefix(t,...e){var s=(0,identity_1.findModelId)(t),s=await this.read(s);return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.UPDATE,constants_1.OperationKeys.ON,s),[t,...e]}async delete(t){throw new Error("Child classes must implement this")}async deleteSuffix(t){return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.DELETE,constants_1.OperationKeys.AFTER),t}async deletePrefix(t,...e){var s=await this.read(t,...e);return await(0,utils_1.enforceDBDecorators)(this,s,constants_1.OperationKeys.DELETE,constants_1.OperationKeys.ON),[t,...e]}toString(){return(0,decorator_validation_1.sf)("[{0}] - Repository for {1}",this.constructor.name,this.class.name)}}exports.BaseRepository=BaseRepository;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseRepository=void 0;const decorator_validation_1=require("@decaf-ts/decorator-validation"),utils_1=require("./utils.cjs"),constants_1=require("../operations/constants.cjs"),errors_1=require("./errors.cjs"),DataCache_1=require("./DataCache.cjs"),wrappers_1=require("./wrappers.cjs"),identity_1=require("../identity/index.cjs");class BaseRepository{get class(){if(this._class)return this._class;throw new errors_1.InternalError("No class definition found for this repository")}get cache(){return this._cache||(this._cache=new DataCache_1.DataCache),this._cache}constructor(t){t&&(this._class=t);const s=this;[this.create,this.read,this.update,this.delete].forEach(t=>{var e=t.name;(0,wrappers_1.wrapMethod)(s,s[e+"Prefix"],t,s[e+"Suffix"])})}async create(t){throw new Error("Child classes must implement this.")}async createPrefix(t,...e){return t=new this.class(t),await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.CREATE,constants_1.OperationKeys.ON),[t,...e]}async createSuffix(t){return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.CREATE,constants_1.OperationKeys.AFTER),t}async read(t){throw new Error("Child classes must implement this")}async readSuffix(t){return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.READ,constants_1.OperationKeys.AFTER),t}async readPrefix(t,...e){var s=new this.class;return await(0,utils_1.enforceDBDecorators)(this,s,constants_1.OperationKeys.READ,constants_1.OperationKeys.ON),[t,...e]}async update(t){throw new Error("Child classes must implement this")}async updateSuffix(t){return t=new this.class(t),await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.UPDATE,constants_1.OperationKeys.AFTER),t}async updatePrefix(t,...e){var s=(0,identity_1.findModelId)(t),s=await this.read(s);return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.UPDATE,constants_1.OperationKeys.ON,s),[t,...e]}async delete(t){throw new Error("Child classes must implement this")}async deleteSuffix(t){return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.DELETE,constants_1.OperationKeys.AFTER),t}async deletePrefix(t,...e){var s=await this.read(t,...e);return await(0,utils_1.enforceDBDecorators)(this,s,constants_1.OperationKeys.DELETE,constants_1.OperationKeys.ON),[t,...e]}toString(){return(0,decorator_validation_1.sf)("[{0}] - Repository for {1}",this.constructor.name,this.class.name)}}exports.BaseRepository=BaseRepository;
@@ -7,7 +7,7 @@ export declare abstract class BaseRepository<T extends DBModel> implements IRepo
7
7
  private _cache?;
8
8
  get class(): Constructor<T>;
9
9
  get cache(): DataCache;
10
- protected constructor();
10
+ protected constructor(clazz?: Constructor<T>);
11
11
  create(model: T, ...args: any[]): Promise<T>;
12
12
  protected createPrefix(model: T, ...args: any[]): Promise<any[]>;
13
13
  protected createSuffix(model: T): Promise<T>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Repository=void 0;const decorator_validation_1=require("@decaf-ts/decorator-validation"),utils_1=require("./utils.cjs"),constants_1=require("../operations/constants.cjs"),errors_1=require("./errors.cjs"),BaseRepository_1=require("./BaseRepository.cjs"),identity_1=require("../identity/index.cjs");class Repository extends BaseRepository_1.BaseRepository{constructor(){super()}async create(r){throw new Error("Child classes must implement this.")}async createPrefix(e,...t){e=new this.class(e),await(0,utils_1.enforceDBDecorators)(this,e,constants_1.OperationKeys.CREATE,constants_1.OperationKeys.ON);var r=e.hasErrors();if(r)throw new errors_1.ValidationError(r.toString());let s;try{if(!(s=(0,identity_1.findModelId)(e,!0)))return[e,...t];s&&await this.read(s.toString())}catch(r){if(r instanceof errors_1.NotFoundError)return[e,...t];throw r}throw new errors_1.ConflictError((0,decorator_validation_1.sf)("Model with id {0} already exists",s))}async delete(r){throw new Error("Child classes must implement this.")}async deletePrefix(r,...e){var t=new this.class;return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.DELETE,constants_1.OperationKeys.ON),await this.read(r),[r,...e]}async read(r){throw new Error("Child classes must implement this.")}async update(r){throw new Error("Child classes must implement this.")}async updatePrefix(r,...e){r=new this.class(r);var t=(0,identity_1.findModelId)(r),t=await this.read(t),t=(await(0,utils_1.enforceDBDecorators)(this,r,constants_1.OperationKeys.UPDATE,constants_1.OperationKeys.ON,t),r.hasErrors(t));if(t)throw new errors_1.ValidationError(t.toString());return[r,...e]}}exports.Repository=Repository;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Repository=void 0;const decorator_validation_1=require("@decaf-ts/decorator-validation"),utils_1=require("./utils.cjs"),constants_1=require("../operations/constants.cjs"),errors_1=require("./errors.cjs"),BaseRepository_1=require("./BaseRepository.cjs"),identity_1=require("../identity/index.cjs");class Repository extends BaseRepository_1.BaseRepository{constructor(r){super(r)}async create(r){throw new Error("Child classes must implement this.")}async createPrefix(e,...t){e=new this.class(e),await(0,utils_1.enforceDBDecorators)(this,e,constants_1.OperationKeys.CREATE,constants_1.OperationKeys.ON);var r=e.hasErrors();if(r)throw new errors_1.ValidationError(r.toString());let s;try{if(!(s=(0,identity_1.findModelId)(e,!0)))return[e,...t];s&&await this.read(s.toString())}catch(r){if(r instanceof errors_1.NotFoundError)return[e,...t];throw r}throw new errors_1.ConflictError((0,decorator_validation_1.sf)("Model with id {0} already exists",s))}async delete(r){throw new Error("Child classes must implement this.")}async deletePrefix(r,...e){var t=new this.class;return await(0,utils_1.enforceDBDecorators)(this,t,constants_1.OperationKeys.DELETE,constants_1.OperationKeys.ON),await this.read(r),[r,...e]}async read(r){throw new Error("Child classes must implement this.")}async update(r){throw new Error("Child classes must implement this.")}async updatePrefix(r,...e){r=new this.class(r);var t=(0,identity_1.findModelId)(r),t=await this.read(t),t=(await(0,utils_1.enforceDBDecorators)(this,r,constants_1.OperationKeys.UPDATE,constants_1.OperationKeys.ON,t),r.hasErrors(t));if(t)throw new errors_1.ValidationError(t.toString());return[r,...e]}}exports.Repository=Repository;
@@ -1,7 +1,8 @@
1
1
  import { DBModel } from "../model/DBModel";
2
2
  import { BaseRepository } from "./BaseRepository";
3
+ import { Constructor } from "@decaf-ts/decorator-validation";
3
4
  export declare abstract class Repository<T extends DBModel> extends BaseRepository<T> {
4
- protected constructor();
5
+ protected constructor(clazz?: Constructor<T>);
5
6
  create(model: T): Promise<T>;
6
7
  protected createPrefix(model: T, ...args: any[]): Promise<[T, ...any[]]>;
7
8
  delete(key: string | number): Promise<T>;
@@ -1 +1 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./BaseRepository.cjs"),exports),__exportStar(require("./DataCache.cjs"),exports),__exportStar(require("./decorators.cjs"),exports),__exportStar(require("./errors.cjs"),exports),__exportStar(require("./Repository.cjs"),exports),__exportStar(require("./utils.cjs"),exports),__exportStar(require("./wrappers.cjs"),exports);
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,o){void 0===o&&(o=t);var i=Object.getOwnPropertyDescriptor(r,t);i&&("get"in i?r.__esModule:!i.writable&&!i.configurable)||(i={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,o,i)}:function(e,r,t,o){e[o=void 0===o?t:o]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./BaseRepository.cjs"),exports),__exportStar(require("./DataCache.cjs"),exports),__exportStar(require("./errors.cjs"),exports),__exportStar(require("./Repository.cjs"),exports),__exportStar(require("./utils.cjs"),exports),__exportStar(require("./wrappers.cjs"),exports);
@@ -1,6 +1,5 @@
1
1
  export * from "./BaseRepository";
2
2
  export * from "./DataCache";
3
- export * from "./decorators";
4
3
  export * from "./errors";
5
4
  export * from "./Repository";
6
5
  export * from "./utils";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.OrderDirection=exports.UpdateValidationKeys=exports.DEFAULT_ERROR_MESSAGES=void 0;const constants_1=require("../model/constants.cjs");var OrderDirection;exports.DEFAULT_ERROR_MESSAGES={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},exports.UpdateValidationKeys={REFLECT:"db.update.validation.",TIMESTAMP:constants_1.DBKeys.TIMESTAMP,READONLY:constants_1.DBKeys.READONLY},function(e){e.ASC="asc",e.DSC="desc"}(OrderDirection||(exports.OrderDirection=OrderDirection={}));
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UpdateValidationKeys=exports.DEFAULT_ERROR_MESSAGES=void 0;const constants_1=require("../model/constants.cjs");exports.DEFAULT_ERROR_MESSAGES={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},exports.UpdateValidationKeys={REFLECT:"db.update.validation.",TIMESTAMP:constants_1.DBKeys.TIMESTAMP,READONLY:constants_1.DBKeys.READONLY};
@@ -28,22 +28,3 @@ export declare const UpdateValidationKeys: {
28
28
  TIMESTAMP: string;
29
29
  READONLY: string;
30
30
  };
31
- /**
32
- * @summary defines order directions when sorting
33
- *
34
- * @constant OrderDirection
35
- *
36
- * @category Query
37
- */
38
- export declare enum OrderDirection {
39
- /**
40
- * @summary Defines the sort order as ascending
41
- * @prop ASC
42
- */
43
- ASC = "asc",
44
- /**
45
- * @summary Defines the sort order as descending
46
- * @property {string} DSC
47
- */
48
- DSC = "desc"
49
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/db-decorators",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Agnostic database decorators and repository",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,3 +0,0 @@
1
- import { Constructor } from "@decaf-ts/decorator-validation";
2
- import { DBModel } from "../model/DBModel";
3
- export declare function repository<T extends DBModel>(model: Constructor<T>, nameOverride?: string): (original: any, propertyKey?: string) => any;
@@ -1 +0,0 @@
1
- import{inject,injectable}from"@decaf-ts/injectable-decorators";import{metadata}from"@decaf-ts/reflection";import{getDBKey}from"../model/decorators";import{DBKeys}from"../model/constants";import{InternalError}from"./errors";function repository(o,a){return(e,r)=>{if(r){var t=Reflect.getMetadata(getDBKey(DBKeys.REPOSITORY),o);if(t)return inject(t)(e,r);throw new InternalError("Could not find repository for "+o.name)}return metadata(getDBKey(DBKeys.REPOSITORY),a||e.name)(o),injectable(a,!0,e=>{Object.defineProperty(e,DBKeys.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:o})})(e)}}export{repository};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.repository=void 0;const injectable_decorators_1=require("@decaf-ts/injectable-decorators"),reflection_1=require("@decaf-ts/reflection"),decorators_1=require("../model/decorators.cjs"),constants_1=require("../model/constants.cjs"),errors_1=require("./errors.cjs");function repository(o,s){return(e,r)=>{if(r){var t=Reflect.getMetadata((0,decorators_1.getDBKey)(constants_1.DBKeys.REPOSITORY),o);if(t)return(0,injectable_decorators_1.inject)(t)(e,r);throw new errors_1.InternalError("Could not find repository for "+o.name)}return(0,reflection_1.metadata)((0,decorators_1.getDBKey)(constants_1.DBKeys.REPOSITORY),s||e.name)(o),(0,injectable_decorators_1.injectable)(s,!0,e=>{Object.defineProperty(e,constants_1.DBKeys.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:o})})(e)}}exports.repository=repository;
@@ -1,3 +0,0 @@
1
- import { Constructor } from "@decaf-ts/decorator-validation";
2
- import { DBModel } from "../model/DBModel";
3
- export declare function repository<T extends DBModel>(model: Constructor<T>, nameOverride?: string): (original: any, propertyKey?: string) => any;