@asapjs/sequelize 0.0.1 → 0.0.5

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 CHANGED
@@ -1,3 +1,4 @@
1
1
  export { SequelizeDto, Dto, DtoType, DtoQuery } from './dto';
2
- export { dbInit, loadPath, addModelsToSequelize, modelsSync, getSequelize } from './sequelize';
2
+ export { initSequelizeModule, getSequelize } from './sequelize';
3
+ export { default as Repository } from './repository';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSequelize = exports.modelsSync = exports.addModelsToSequelize = exports.loadPath = exports.dbInit = exports.DtoQuery = exports.DtoType = exports.Dto = exports.SequelizeDto = void 0;
6
+ exports.Repository = exports.getSequelize = exports.initSequelizeModule = exports.DtoQuery = exports.DtoType = exports.Dto = exports.SequelizeDto = void 0;
4
7
  var dto_1 = require("./dto");
5
8
  Object.defineProperty(exports, "SequelizeDto", { enumerable: true, get: function () { return dto_1.SequelizeDto; } });
6
9
  Object.defineProperty(exports, "Dto", { enumerable: true, get: function () { return dto_1.Dto; } });
7
10
  Object.defineProperty(exports, "DtoType", { enumerable: true, get: function () { return dto_1.DtoType; } });
8
11
  Object.defineProperty(exports, "DtoQuery", { enumerable: true, get: function () { return dto_1.DtoQuery; } });
9
12
  var sequelize_1 = require("./sequelize");
10
- Object.defineProperty(exports, "dbInit", { enumerable: true, get: function () { return sequelize_1.dbInit; } });
11
- Object.defineProperty(exports, "loadPath", { enumerable: true, get: function () { return sequelize_1.loadPath; } });
12
- Object.defineProperty(exports, "addModelsToSequelize", { enumerable: true, get: function () { return sequelize_1.addModelsToSequelize; } });
13
- Object.defineProperty(exports, "modelsSync", { enumerable: true, get: function () { return sequelize_1.modelsSync; } });
13
+ Object.defineProperty(exports, "initSequelizeModule", { enumerable: true, get: function () { return sequelize_1.initSequelizeModule; } });
14
14
  Object.defineProperty(exports, "getSequelize", { enumerable: true, get: function () { return sequelize_1.getSequelize; } });
15
+ var repository_1 = require("./repository");
16
+ Object.defineProperty(exports, "Repository", { enumerable: true, get: function () { return __importDefault(repository_1).default; } });
15
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6BAA6D;AAApD,mGAAA,YAAY,OAAA;AAAE,0FAAA,GAAG,OAAA;AAAE,8FAAA,OAAO,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAC7C,yCAA+F;AAAtF,mGAAA,MAAM,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,yGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,6BAA6D;AAApD,mGAAA,YAAY,OAAA;AAAE,0FAAA,GAAG,OAAA;AAAE,8FAAA,OAAO,OAAA;AAAE,+FAAA,QAAQ,OAAA;AAC7C,yCAAgE;AAAvD,gHAAA,mBAAmB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAC1C,2CAAqD;AAA5C,yHAAA,OAAO,OAAc"}
@@ -0,0 +1,23 @@
1
+ import { Model, ModelCtor } from 'sequelize-typescript';
2
+ import { FindOptions } from 'sequelize';
3
+ import { SequelizeDto } from '../dto';
4
+ interface IArgs<T extends Model> extends FindOptions<T> {
5
+ exportTo: typeof SequelizeDto;
6
+ user?: any;
7
+ withDto?: boolean;
8
+ }
9
+ declare type FindAllResponseWithDto<T> = [T[], SequelizeDto];
10
+ declare type FindAllResponse<T, WithDto = {}> = WithDto extends true ? FindAllResponseWithDto<T> : T[];
11
+ declare type FindOneResponseWithDto<T> = [T | null, SequelizeDto];
12
+ declare type FindOneResponse<T, WithDto = {}> = WithDto extends true ? FindOneResponseWithDto<T> : T | null;
13
+ export default class Repository {
14
+ private getOptionsWithArgs;
15
+ private findAll;
16
+ private findOne;
17
+ repository: {
18
+ findAll: <T extends Model<any, any>, WithDto = {}>(model: ModelCtor<T>, args: IArgs<T>) => Promise<FindAllResponse<T, WithDto>>;
19
+ findOne: <T_1 extends Model<any, any>, WithDto_1 = {}>(model: ModelCtor<T_1>, args: IArgs<T_1>) => Promise<FindOneResponse<T_1, WithDto_1>>;
20
+ };
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,UAAU,KAAK,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACrD,QAAQ,EAAE,OAAO,YAAY,CAAC;IAC9B,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,aAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACrD,aAAK,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,EAAE,IAAI,OAAO,SAAS,IAAI,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAE/F,aAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC;AAC1D,aAAK,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,EAAE,IAAI,OAAO,SAAS,IAAI,GAAG,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpG,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,OAAO,CAAC,kBAAkB,CAKxB;IAEF,OAAO,CAAC,OAAO,CAQb;IAEF,OAAO,CAAC,OAAO,CAQb;IAEK,UAAU;;;MAGf;CACH"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ class Repository {
24
+ constructor() {
25
+ this.getOptionsWithArgs = (args) => {
26
+ const { exportTo: Dto, user } = args, options = __rest(args, ["exportTo", "user"]);
27
+ const exportDto = new Dto();
28
+ const _a = exportDto.middleware(undefined, user), { model: _ } = _a, queryOptions = __rest(_a, ["model"]);
29
+ return { query: Object.assign(Object.assign({}, queryOptions), options), exportDto };
30
+ };
31
+ this.findAll = (model, args) => __awaiter(this, void 0, void 0, function* () {
32
+ const { query, exportDto } = this.getOptionsWithArgs(args);
33
+ const raws = yield model.findAll(query);
34
+ if (args.withDto)
35
+ return [raws, exportDto];
36
+ return raws;
37
+ });
38
+ this.findOne = (model, args) => __awaiter(this, void 0, void 0, function* () {
39
+ const { query, exportDto } = this.getOptionsWithArgs(args);
40
+ const raw = yield model.findOne(query);
41
+ if (args.withDto)
42
+ return [raw, exportDto];
43
+ return raw;
44
+ });
45
+ this.repository = {
46
+ findAll: this.findAll,
47
+ findOne: this.findOne,
48
+ };
49
+ }
50
+ }
51
+ exports.default = Repository;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAqB,UAAU;IAA/B;QACU,uBAAkB,GAAG,CAAkB,IAAc,EAAE,EAAE;YAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,KAAiB,IAAI,EAAhB,OAAO,UAAK,IAAI,EAA1C,oBAAmC,CAAO,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;YAC5B,MAAM,KAAgC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,EAArE,EAAE,KAAK,EAAE,CAAC,OAA2D,EAAtD,YAAY,cAA3B,SAA6B,CAAwC,CAAC;YAC5E,OAAO,EAAE,KAAK,kCAAO,YAAY,GAAK,OAAO,CAAE,EAAE,SAAS,EAAE,CAAC;QAC/D,CAAC,CAAC;QAEM,YAAO,GAAG,CAChB,KAAmB,EACnB,IAAc,EACwB,EAAE;YACxC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAI,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAQ,CAAC;YAClD,OAAO,IAAW,CAAC;QACrB,CAAC,CAAA,CAAC;QAEM,YAAO,GAAG,CAChB,KAAmB,EACnB,IAAc,EACwB,EAAE;YACxC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAI,IAAI,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAQ,CAAC;YACjD,OAAO,GAAU,CAAC;QACpB,CAAC,CAAA,CAAC;QAEK,eAAU,GAAG;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CAAA;AAhCD,6BAgCC"}
@@ -5,4 +5,5 @@ export declare const loadPath: (path: string, subPath: string) => Promise<void>;
5
5
  export declare const addModelsToSequelize: () => Promise<void>;
6
6
  export declare const modelsSync: () => Promise<boolean>;
7
7
  export declare const getSequelize: () => Sequelize;
8
+ export declare const initSequelizeModule: (dirname: string) => Promise<Sequelize>;
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKrF,OAAO,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,MAAM,WAAkB,gBAAgB,uBAepD,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAgB,MAAM,WAAW,MAAM,kBAY3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,qBAGhC,CAAC;AAEF,eAAO,MAAM,UAAU,wBAItB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKrF,OAAO,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,MAAM,WAAkB,gBAAgB,uBAepD,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAgB,MAAM,WAAW,MAAM,kBAY3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,qBAGhC,CAAC;AAEF,eAAO,MAAM,UAAU,wBAItB,CAAC;AAEF,eAAO,MAAM,YAAY,iBAAmB,CAAC;AAE7C,eAAO,MAAM,mBAAmB,YAAmB,MAAM,KAAG,QAAQ,SAAS,CAK5E,CAAC"}
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getSequelize = exports.modelsSync = exports.addModelsToSequelize = exports.loadPath = exports.dbInit = void 0;
15
+ exports.initSequelizeModule = exports.getSequelize = exports.modelsSync = exports.addModelsToSequelize = exports.loadPath = exports.dbInit = void 0;
16
16
  const sequelize_typescript_1 = require("sequelize-typescript");
17
17
  const fs_1 = __importDefault(require("fs"));
18
18
  const core_1 = require("@asapjs/core");
@@ -64,4 +64,12 @@ const modelsSync = () => __awaiter(void 0, void 0, void 0, function* () {
64
64
  exports.modelsSync = modelsSync;
65
65
  const getSequelize = () => container;
66
66
  exports.getSequelize = getSequelize;
67
+ const initSequelizeModule = (dirname) => __awaiter(void 0, void 0, void 0, function* () {
68
+ var _a;
69
+ const dbContainer = yield (0, exports.dbInit)((_a = (0, core_1.getConfig)()) === null || _a === void 0 ? void 0 : _a.DB);
70
+ yield (0, exports.loadPath)(dirname, '');
71
+ yield (0, exports.addModelsToSequelize)();
72
+ return dbContainer;
73
+ });
74
+ exports.initSequelizeModule = initSequelizeModule;
67
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+DAAqF;AACrF,4CAAoB;AAEpB,uCAAsC;AAEtC,4BAA0B;AAE1B,IAAI,SAAS,GAAqB,IAAI,CAAC;AAEvC,MAAM,MAAM,GAAiC,EAAE,CAAC;AAEhD,MAAM,IAAI,GAAU,EAAE,CAAC;AAEhB,MAAM,MAAM,GAAG,CAAO,MAAwB,EAAE,EAAE;IACvD,MAAM,SAAS,GAAG,IAAI,gCAAS,CAAC,MAAM,CAAC,CAAC;IACxC,SAAS,GAAG,SAAS,CAAC;IACtB,SAAS;SACN,YAAY,EAAE;SACd,IAAI,CAAC,GAAG,EAAE;QACT,aAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,aAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,GAAG,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEL,aAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAEjD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAA,CAAC;AAfW,QAAA,MAAM,UAejB;AAEK,MAAM,QAAQ,GAAG,CAAO,IAAY,EAAE,OAAe,EAAE,EAAE;IAC9D,MAAM,KAAK,GAAG,MAAM,YAAE,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,IAAA,gBAAQ,EAAC,IAAI,EAAE,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACjD;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;YAC1F,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;SACjE;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;YACxF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;SAC/D;KACF;AACH,CAAC,CAAA,CAAC;AAZW,QAAA,QAAQ,YAYnB;AAEK,MAAM,oBAAoB,GAAG,GAAS,EAAE;IAC7C,SAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7B,aAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;AACjE,CAAC,CAAA,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,UAAU,GAAG,GAAS,EAAE;IACnC,MAAM,SAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAClD,aAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC;AAJW,QAAA,UAAU,cAIrB;AAEK,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,SAAU,CAAC;AAAhC,QAAA,YAAY,gBAAoB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequelize/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asapjs/sequelize",
3
- "version": "0.0.1",
3
+ "version": "0.0.5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -10,6 +10,7 @@
10
10
  "author": "",
11
11
  "license": "ISC",
12
12
  "dependencies": {
13
+ "@asapjs/core": "^0.0.5",
13
14
  "body-parser": "^1.19.2",
14
15
  "cors": "^2.8.5",
15
16
  "express": "^4.17.3",
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export { SequelizeDto, Dto, DtoType, DtoQuery } from './dto';
2
- export { dbInit, loadPath, addModelsToSequelize, modelsSync, getSequelize } from './sequelize';
2
+ export { initSequelizeModule, getSequelize } from './sequelize';
3
+ export { default as Repository } from './repository';
@@ -0,0 +1,49 @@
1
+ import { Model, ModelCtor } from 'sequelize-typescript';
2
+ import { FindOptions } from 'sequelize';
3
+
4
+ import { SequelizeDto } from '../dto';
5
+
6
+ interface IArgs<T extends Model> extends FindOptions<T> {
7
+ exportTo: typeof SequelizeDto;
8
+ user?: any;
9
+ withDto?: boolean;
10
+ }
11
+
12
+ type FindAllResponseWithDto<T> = [T[], SequelizeDto];
13
+ type FindAllResponse<T, WithDto = {}> = WithDto extends true ? FindAllResponseWithDto<T> : T[];
14
+
15
+ type FindOneResponseWithDto<T> = [T | null, SequelizeDto];
16
+ type FindOneResponse<T, WithDto = {}> = WithDto extends true ? FindOneResponseWithDto<T> : T | null;
17
+ export default class Repository {
18
+ private getOptionsWithArgs = <T extends Model>(args: IArgs<T>) => {
19
+ const { exportTo: Dto, user, ...options } = args;
20
+ const exportDto = new Dto();
21
+ const { model: _, ...queryOptions } = exportDto.middleware(undefined, user);
22
+ return { query: { ...queryOptions, ...options }, exportDto };
23
+ };
24
+
25
+ private findAll = async <T extends Model, WithDto = {}>(
26
+ model: ModelCtor<T>,
27
+ args: IArgs<T>,
28
+ ): Promise<FindAllResponse<T, WithDto>> => {
29
+ const { query, exportDto } = this.getOptionsWithArgs<T>(args);
30
+ const raws = await model.findAll(query);
31
+ if (args.withDto) return [raws, exportDto] as any;
32
+ return raws as any;
33
+ };
34
+
35
+ private findOne = async <T extends Model, WithDto = {}>(
36
+ model: ModelCtor<T>,
37
+ args: IArgs<T>,
38
+ ): Promise<FindOneResponse<T, WithDto>> => {
39
+ const { query, exportDto } = this.getOptionsWithArgs<T>(args);
40
+ const raw = await model.findOne(query);
41
+ if (args.withDto) return [raw, exportDto] as any;
42
+ return raw as any;
43
+ };
44
+
45
+ public repository = {
46
+ findAll: this.findAll,
47
+ findOne: this.findOne,
48
+ };
49
+ }
@@ -1,7 +1,7 @@
1
1
  import { Model, ModelCtor, Sequelize, SequelizeOptions } from 'sequelize-typescript';
2
2
  import fs from 'fs';
3
3
 
4
- import { logger } from '@asapjs/core';
4
+ import { logger, getConfig } from '@asapjs/core';
5
5
 
6
6
  import 'reflect-metadata';
7
7
 
@@ -54,3 +54,10 @@ export const modelsSync = async () => {
54
54
  };
55
55
 
56
56
  export const getSequelize = () => container!;
57
+
58
+ export const initSequelizeModule = async (dirname: string): Promise<Sequelize> => {
59
+ const dbContainer = await dbInit((getConfig() as any)?.DB);
60
+ await loadPath(dirname, '');
61
+ await addModelsToSequelize();
62
+ return dbContainer;
63
+ };