@asapjs/sequelize 0.0.2 → 0.0.6

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 (42) hide show
  1. package/dist/dto/index.d.ts +8 -4
  2. package/dist/dto/index.d.ts.map +1 -1
  3. package/dist/dto/index.js +15 -43
  4. package/dist/dto/index.js.map +1 -1
  5. package/dist/index.d.ts +5 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +14 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/repository/index.d.ts +23 -0
  10. package/dist/repository/index.d.ts.map +1 -0
  11. package/dist/repository/index.js +52 -0
  12. package/dist/repository/index.js.map +1 -0
  13. package/dist/sequelize/index.d.ts.map +1 -1
  14. package/dist/sequelize/index.js +3 -4
  15. package/dist/sequelize/index.js.map +1 -1
  16. package/dist/table/index.d.ts +3 -0
  17. package/dist/table/index.d.ts.map +1 -0
  18. package/dist/table/index.js +38 -0
  19. package/dist/table/index.js.map +1 -0
  20. package/dist/type/index.d.ts +40 -0
  21. package/dist/type/index.d.ts.map +1 -0
  22. package/dist/type/index.js +246 -0
  23. package/dist/type/index.js.map +1 -0
  24. package/dist/{util → utils}/getUserIdInQuery.d.ts +0 -0
  25. package/dist/utils/getUserIdInQuery.d.ts.map +1 -0
  26. package/dist/{util → utils}/getUserIdInQuery.js +1 -1
  27. package/dist/utils/getUserIdInQuery.js.map +1 -0
  28. package/dist/utils/isClass.d.ts +3 -0
  29. package/dist/utils/isClass.d.ts.map +1 -0
  30. package/dist/utils/isClass.js +4 -0
  31. package/dist/utils/isClass.js.map +1 -0
  32. package/package.json +2 -1
  33. package/src/dto/index.ts +15 -43
  34. package/src/index.ts +5 -1
  35. package/src/repository/index.ts +49 -0
  36. package/src/sequelize/index.ts +0 -2
  37. package/src/table/index.ts +43 -0
  38. package/src/type/index.ts +263 -0
  39. package/src/{util → utils}/getUserIdInQuery.ts +1 -1
  40. package/src/utils/isClass.ts +1 -0
  41. package/dist/util/getUserIdInQuery.d.ts.map +0 -1
  42. package/dist/util/getUserIdInQuery.js.map +0 -1
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TypeArray = exports.TypeIs = exports.saveTypesData = exports.saveNewTypesData = exports.getTypesData = void 0;
7
+ const sequelize_1 = require("sequelize");
8
+ const isClass_1 = __importDefault(require("src/utils/isClass"));
9
+ const data = {};
10
+ const getTypesData = (target) => {
11
+ var _a;
12
+ const values = data[(target === null || target === void 0 ? void 0 : target.name) || ((_a = target === null || target === void 0 ? void 0 : target.constructor) === null || _a === void 0 ? void 0 : _a.name)];
13
+ if (!values)
14
+ return {};
15
+ return values;
16
+ };
17
+ exports.getTypesData = getTypesData;
18
+ const saveNewTypesData = (attributes, target) => {
19
+ data[target.constructor.name] = attributes;
20
+ };
21
+ exports.saveNewTypesData = saveNewTypesData;
22
+ const saveTypesData = (target, propertyName, value) => {
23
+ const types = (0, exports.getTypesData)(target);
24
+ types[propertyName] = value;
25
+ (0, exports.saveNewTypesData)(types, target);
26
+ };
27
+ exports.saveTypesData = saveTypesData;
28
+ const typeGenerator = (data) => (...options) => {
29
+ return (target, propertyName, propertyDescriptor) => {
30
+ if (target !== undefined) {
31
+ const type = data(...options);
32
+ (0, exports.saveTypesData)(target, propertyName, type);
33
+ if (propertyDescriptor) {
34
+ propertyDescriptor.value = type;
35
+ }
36
+ }
37
+ else {
38
+ return data(...options);
39
+ }
40
+ };
41
+ };
42
+ exports.TypeIs = {
43
+ INT: typeGenerator((options) => ({
44
+ __name: 'int',
45
+ toSwagger: () => ({
46
+ type: 'integer',
47
+ format: 'int32',
48
+ description: options === null || options === void 0 ? void 0 : options.comment,
49
+ }),
50
+ toSequelize: () => ({ type: sequelize_1.DataTypes.INTEGER(options), comment: options === null || options === void 0 ? void 0 : options.comment }),
51
+ fixValue: (o) => {
52
+ if (o === undefined || o === null)
53
+ return o;
54
+ return parseInt(String(o), 10);
55
+ },
56
+ })),
57
+ LONG: typeGenerator((options) => ({
58
+ __name: 'long',
59
+ toSwagger: () => ({
60
+ type: 'integer',
61
+ format: 'int64',
62
+ description: options === null || options === void 0 ? void 0 : options.comment,
63
+ }),
64
+ toSequelize: () => ({ type: sequelize_1.DataTypes.INTEGER(options), comment: options === null || options === void 0 ? void 0 : options.comment }),
65
+ fixValue: (o) => {
66
+ if (o === undefined || o === null)
67
+ return o;
68
+ return parseInt(String(o), 10);
69
+ },
70
+ })),
71
+ FLOAT: typeGenerator((options) => ({
72
+ __name: 'float',
73
+ toSwagger: () => ({
74
+ type: 'integer',
75
+ format: 'float',
76
+ description: options === null || options === void 0 ? void 0 : options.comment,
77
+ }),
78
+ toSequelize: () => ({ type: sequelize_1.DataTypes.FLOAT(options === null || options === void 0 ? void 0 : options.length, options === null || options === void 0 ? void 0 : options.decimals), comment: options === null || options === void 0 ? void 0 : options.comment }),
79
+ fixValue: (o) => {
80
+ if (o === undefined || o === null)
81
+ return o;
82
+ return parseFloat(String(o));
83
+ },
84
+ })),
85
+ DOUBLE: typeGenerator((options) => ({
86
+ __name: 'double',
87
+ toSwagger: () => ({
88
+ type: 'number',
89
+ format: 'double',
90
+ description: options === null || options === void 0 ? void 0 : options.comment,
91
+ }),
92
+ toSequelize: () => ({ type: sequelize_1.DataTypes.DOUBLE(options === null || options === void 0 ? void 0 : options.length, options === null || options === void 0 ? void 0 : options.decimals), comment: options === null || options === void 0 ? void 0 : options.comment }),
93
+ fixValue: (o) => {
94
+ if (o === undefined || o === null)
95
+ return o;
96
+ return parseFloat(String(o));
97
+ },
98
+ })),
99
+ STRING: typeGenerator((options) => ({
100
+ __name: 'string',
101
+ toSwagger: () => ({
102
+ type: 'string',
103
+ description: options === null || options === void 0 ? void 0 : options.comment,
104
+ }),
105
+ toSequelize: () => ({ type: sequelize_1.DataTypes.STRING(options === null || options === void 0 ? void 0 : options.length, options === null || options === void 0 ? void 0 : options.binary), comment: options === null || options === void 0 ? void 0 : options.comment }),
106
+ fixValue: (o) => {
107
+ if (o === undefined || o === null)
108
+ return o;
109
+ return String(o);
110
+ },
111
+ })),
112
+ TEXT: typeGenerator((options) => ({
113
+ __name: 'text',
114
+ toSwagger: () => ({
115
+ type: 'string',
116
+ description: options === null || options === void 0 ? void 0 : options.comment,
117
+ }),
118
+ toSequelize: () => ({ type: sequelize_1.DataTypes.TEXT({ length: options === null || options === void 0 ? void 0 : options.length }), comment: options === null || options === void 0 ? void 0 : options.comment }),
119
+ fixValue: (o) => {
120
+ if (o === undefined || o === null)
121
+ return o;
122
+ return String(o);
123
+ },
124
+ })),
125
+ PASSWORD: typeGenerator((options) => ({
126
+ __name: 'password',
127
+ toSwagger: () => ({
128
+ type: 'string',
129
+ format: 'password',
130
+ description: options === null || options === void 0 ? void 0 : options.comment,
131
+ }),
132
+ toSequelize: () => ({ type: sequelize_1.DataTypes.STRING(512), comment: options === null || options === void 0 ? void 0 : options.comment }),
133
+ })),
134
+ ENUM: typeGenerator((options) => ({
135
+ __name: 'enum',
136
+ toSwagger: () => {
137
+ var _a;
138
+ return ({
139
+ type: 'string',
140
+ enum: options === null || options === void 0 ? void 0 : options.values,
141
+ description: (_a = options === null || options === void 0 ? void 0 : options.values) === null || _a === void 0 ? void 0 : _a[0],
142
+ });
143
+ },
144
+ toSequelize: () => ({ type: sequelize_1.DataTypes.ENUM({ values: options === null || options === void 0 ? void 0 : options.values }), comment: options === null || options === void 0 ? void 0 : options.comment }),
145
+ fixValue: (o) => {
146
+ var _a, _b;
147
+ if (o === undefined || o === null)
148
+ return o;
149
+ return ((_b = (_a = options === null || options === void 0 ? void 0 : options.values) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, String(o))) ? String(o) : undefined;
150
+ },
151
+ })),
152
+ JSON: typeGenerator((options) => ({
153
+ __name: 'json',
154
+ toSwagger: () => ({
155
+ type: 'object',
156
+ description: options === null || options === void 0 ? void 0 : options.comment,
157
+ }),
158
+ toSequelize: () => ({ type: sequelize_1.DataTypes.JSON, comment: options === null || options === void 0 ? void 0 : options.comment }),
159
+ })),
160
+ BASE64: typeGenerator((options) => ({
161
+ __name: 'base64',
162
+ toSwagger: () => ({
163
+ type: 'string',
164
+ format: 'byte',
165
+ description: options === null || options === void 0 ? void 0 : options.comment,
166
+ }),
167
+ toSequelize: () => ({ type: sequelize_1.DataTypes.BLOB(options === null || options === void 0 ? void 0 : options.length), comment: options === null || options === void 0 ? void 0 : options.comment }),
168
+ })),
169
+ BINARY: typeGenerator((options) => ({
170
+ __name: 'binary',
171
+ toSwagger: () => ({
172
+ type: 'string',
173
+ format: 'binary',
174
+ description: options === null || options === void 0 ? void 0 : options.comment,
175
+ }),
176
+ toSequelize: () => ({ type: sequelize_1.DataTypes.BLOB(options === null || options === void 0 ? void 0 : options.length), comment: options === null || options === void 0 ? void 0 : options.comment }),
177
+ })),
178
+ BOOLEAN: typeGenerator((options) => ({
179
+ __name: 'boolean',
180
+ toSwagger: () => ({
181
+ type: 'boolean',
182
+ }),
183
+ toSequelize: () => ({ type: sequelize_1.DataTypes.BOOLEAN, comment: options === null || options === void 0 ? void 0 : options.comment }),
184
+ fixValue: (o) => {
185
+ if (o === undefined || o === null)
186
+ return o;
187
+ return String(o) === 'true' ? true : String(o) === 'false' ? false : !!o;
188
+ },
189
+ })),
190
+ DATEONLY: typeGenerator((options) => ({
191
+ __name: 'date',
192
+ toSwagger: () => ({
193
+ type: 'string',
194
+ format: 'date',
195
+ description: options === null || options === void 0 ? void 0 : options.comment,
196
+ }),
197
+ toSequelize: () => sequelize_1.DataTypes.DATEONLY(),
198
+ })),
199
+ DATETIME: typeGenerator((options) => ({
200
+ __name: 'datetime',
201
+ toSwagger: () => ({
202
+ type: 'string',
203
+ format: 'date-time',
204
+ description: options === null || options === void 0 ? void 0 : options.comment,
205
+ }),
206
+ toSequelize: () => sequelize_1.DataTypes.DATE,
207
+ })),
208
+ FOREIGNKEY: typeGenerator((table) => ({
209
+ __name: 'foreignkey',
210
+ toSequelize: () => table,
211
+ })),
212
+ BELONGSTO: typeGenerator((associatedClassGetter, optionsOrForeignKey) => ({
213
+ __name: 'belongsto',
214
+ toSequelize: () => ({
215
+ associatedClassGetter,
216
+ optionsOrForeignKey,
217
+ }),
218
+ })),
219
+ DTO: typeGenerator((options) => ({
220
+ __name: 'dto',
221
+ toSwagger: () => {
222
+ var _a;
223
+ const result = (_a = new (options === null || options === void 0 ? void 0 : options.dto)()) === null || _a === void 0 ? void 0 : _a.swagger();
224
+ return Object.assign(Object.assign({}, result), { comment: options === null || options === void 0 ? void 0 : options.comment });
225
+ },
226
+ })),
227
+ };
228
+ const TypeArray = (value) => {
229
+ return class {
230
+ constructor() {
231
+ this.swagger = () => {
232
+ var _a, _b, _c;
233
+ const isDto = (0, isClass_1.default)(value);
234
+ return {
235
+ type: 'array',
236
+ items: isDto
237
+ ? (_a = new value()) === null || _a === void 0 ? void 0 : _a.swagger()
238
+ : (_c = (_b = value === null || value === void 0 ? void 0 : value()) === null || _b === void 0 ? void 0 : _b.toSwagger) === null || _c === void 0 ? void 0 : _c.call(_b),
239
+ // description: options?.comment,
240
+ };
241
+ };
242
+ }
243
+ };
244
+ };
245
+ exports.TypeArray = TypeArray;
246
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/type/index.ts"],"names":[],"mappings":"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"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUserIdInQuery.d.ts","sourceRoot":"","sources":["../../src/utils/getUserIdInQuery.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAAW,GAAG,WAAuC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUserIdInQuery = void 0;
4
- const getUserIdInQuery = (user) => `"${(user === null || user === void 0 ? void 0 : user.id) || ''}"`;
4
+ const getUserIdInQuery = (user) => `"${(user === null || user === void 0 ? void 0 : user.id) || (user === null || user === void 0 ? void 0 : user._id) || ''}"`;
5
5
  exports.getUserIdInQuery = getUserIdInQuery;
6
6
  //# sourceMappingURL=getUserIdInQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUserIdInQuery.js","sourceRoot":"","sources":["../../src/utils/getUserIdInQuery.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAA,IAAI,EAAE,GAAG,CAAC;AAAtE,QAAA,gBAAgB,oBAAsD"}
@@ -0,0 +1,3 @@
1
+ declare const _default: (v: any) => boolean;
2
+ export default _default;
3
+ //# sourceMappingURL=isClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isClass.d.ts","sourceRoot":"","sources":["../../src/utils/isClass.ts"],"names":[],"mappings":"4BAAmB,GAAG;AAAtB,wBAAmE"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = (v) => { var _a; return ((_a = v === null || v === void 0 ? void 0 : v.prototype) === null || _a === void 0 ? void 0 : _a.constructor) !== undefined; };
4
+ //# sourceMappingURL=isClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isClass.js","sourceRoot":"","sources":["../../src/utils/isClass.ts"],"names":[],"mappings":";;AAAA,kBAAe,CAAC,CAAM,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,0CAAE,WAAW,MAAK,SAAS,CAAA,EAAA,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asapjs/sequelize",
3
- "version": "0.0.2",
3
+ "version": "0.0.6",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -25,6 +25,7 @@
25
25
  "@types/cors": "^2.8.12",
26
26
  "@types/express": "^4.17.13",
27
27
  "@types/node": "^17.0.21",
28
+ "@types/sequelize": "^4.28.11",
28
29
  "typescript": "^4.6.2"
29
30
  },
30
31
  "peerDependencies": {
package/src/dto/index.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import 'reflect-metadata';
2
2
 
3
- import { addOptions, DataType, Model, TableOptions } from 'sequelize-typescript';
3
+ import { DataType, Model, TableOptions } from 'sequelize-typescript';
4
4
  import { AbstractDataTypeConstructor, Includeable, literal } from 'sequelize';
5
5
 
6
+ import { getTypesData } from '../type';
7
+
6
8
  interface DtoMiddlewareReturn {
7
9
  as?: string;
8
10
  model: typeof Model;
@@ -10,29 +12,11 @@ interface DtoMiddlewareReturn {
10
12
  include?: Includeable[];
11
13
  }
12
14
 
13
- export class SequelizeDto {
15
+ export class ExtendableDto {
14
16
  public id?: number;
15
17
 
16
18
  public version?: number | any;
17
19
 
18
- private getExampleDataWithSequelizeDataType = (type: any) => {
19
- if (typeof type.values === 'object') return type.values[0];
20
- switch (type) {
21
- case DataType.INTEGER:
22
- return 0;
23
- case DataType.ARRAY:
24
- return [];
25
- case DataType.STRING:
26
- return 'string';
27
- case DataType.DATE:
28
- return '2022-01-01T00:00:00.000Z';
29
- case DataType.BOOLEAN:
30
- return true;
31
- default:
32
- return 'string';
33
- }
34
- };
35
-
36
20
  private fixValue = (type: any, value: any) => {
37
21
  switch (type) {
38
22
  case DataType.INTEGER:
@@ -150,42 +134,30 @@ export class SequelizeDto {
150
134
  };
151
135
 
152
136
  public swagger = () => {
153
- const attributesOptions = Reflect.getMetadata('sequelize:attributes', this);
154
- const connectOptions = Reflect.getMetadata('sequelize::dtoTypes', this);
155
- const queryOptions = Reflect.getMetadata('sequelize::queryTypes', this);
137
+ const types = getTypesData(this);
156
138
 
157
- const attributes: any = {};
158
- if (attributesOptions) {
159
- Object.keys(attributesOptions).forEach((key) => {
160
- attributes[key] = this.getExampleDataWithSequelizeDataType(attributesOptions[key].type);
161
- });
162
- }
139
+ const data = Object.keys(types).reduce((p: { [key: string]: any }, key) => {
140
+ const property = types[key];
163
141
 
164
- if (queryOptions) {
165
- Object.keys(queryOptions).forEach((key) => {
166
- const queryData = queryOptions[key];
167
- attributes[key] = queryData?.example || this.getExampleDataWithSequelizeDataType(queryData.data.type);
168
- });
169
- }
142
+ p[key] = property?.toSwagger?.() || null;
170
143
 
171
- if (connectOptions) {
172
- Object.keys(connectOptions).forEach((key) => {
173
- attributes[key] = connectOptions[key].example;
174
- });
175
- }
144
+ return p;
145
+ }, {});
176
146
 
177
- return attributes;
147
+ return {
148
+ type: 'object',
149
+ properties: data,
150
+ };
178
151
  };
179
152
  }
180
153
 
181
- export function Dto(info: { timestamps?: boolean; tableName: string; defineTable: typeof Model }) {
154
+ export function Dto(info: { timestamps?: boolean; name?: string; defineTable: typeof Model }) {
182
155
  return function annotate(target: any, options: TableOptions = {}): void {
183
156
  const args = {
184
157
  ...info,
185
158
  timestamps: info.timestamps === undefined,
186
159
  };
187
160
  Reflect.defineMetadata('sequelize::dtoInfo', args, target.prototype);
188
- addOptions(target.prototype, options);
189
161
  };
190
162
  }
191
163
 
package/src/index.ts CHANGED
@@ -1,2 +1,6 @@
1
- export { SequelizeDto, Dto, DtoType, DtoQuery } from './dto';
1
+ export { ExtendableDto, Dto, DtoType, DtoQuery } from './dto';
2
2
  export { initSequelizeModule, getSequelize } from './sequelize';
3
+ export { default as Repository } from './repository';
4
+ export { Table } from './table';
5
+ export { TypeIs, TypeArray, DtoOrTypeIs } from './type';
6
+ export { getUserIdInQuery } from './utils/getUserIdInQuery';
@@ -0,0 +1,49 @@
1
+ import { Model, ModelCtor } from 'sequelize-typescript';
2
+ import { FindOptions } from 'sequelize';
3
+
4
+ import { ExtendableDto } from '../dto';
5
+
6
+ interface IArgs<T extends Model> extends FindOptions<T> {
7
+ exportTo: typeof ExtendableDto;
8
+ user?: any;
9
+ withDto?: boolean;
10
+ }
11
+
12
+ type FindAllResponseWithDto<T> = [T[], ExtendableDto];
13
+ type FindAllResponse<T, WithDto = {}> = WithDto extends true ? FindAllResponseWithDto<T> : T[];
14
+
15
+ type FindOneResponseWithDto<T> = [T | null, ExtendableDto];
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
+ }
@@ -56,8 +56,6 @@ export const modelsSync = async () => {
56
56
  export const getSequelize = () => container!;
57
57
 
58
58
  export const initSequelizeModule = async (dirname: string): Promise<Sequelize> => {
59
- const { addModelsToSequelize, dbInit, loadPath, modelsSync } = require('@asapjs/sequelize');
60
-
61
59
  const dbContainer = await dbInit((getConfig() as any)?.DB);
62
60
  await loadPath(dirname, '');
63
61
  await addModelsToSequelize();
@@ -0,0 +1,43 @@
1
+ import { BelongsToOptions, BlobSize, DataTypes, TextLength, ModelOptions } from 'sequelize';
2
+ import {
3
+ addAttribute,
4
+ getPreparedAssociationOptions,
5
+ BelongsToAssociation,
6
+ addAssociation,
7
+ setModelName,
8
+ addOptions,
9
+ } from 'sequelize-typescript';
10
+ import { addForeignKey } from 'sequelize-typescript/dist/associations/foreign-key/foreign-key-service';
11
+ import { getTypesData } from '../type';
12
+
13
+ export function Table(options: ModelOptions) {
14
+ return function <T extends { new (...args: any[]): {} }>(target: T) {
15
+ const types = getTypesData(target);
16
+
17
+ Object.entries(types).forEach(([key, type]) => {
18
+ if (!['foreignkey', 'belongsto'].includes((type as any).__name)) {
19
+ addAttribute(target.prototype, key, (type as any).toSequelize());
20
+ } else if ((type as any).__name === 'foreignkey') {
21
+ addForeignKey(target.prototype, (type as any).toSequelize(), key);
22
+ } else if ((type as any).__name === 'belongsto') {
23
+ const { associatedClassGetter, optionsOrForeignKey } = (type as any).toSequelize();
24
+ const options: BelongsToOptions = getPreparedAssociationOptions(optionsOrForeignKey);
25
+ if (!options.as) options.as = key;
26
+ addAssociation(target.prototype, new BelongsToAssociation(associatedClassGetter, options));
27
+ }
28
+ });
29
+
30
+ addOptions(target.prototype, {
31
+ createdAt: 'created_at',
32
+ timestamps: true,
33
+ });
34
+
35
+ addOptions(target.prototype, {
36
+ updatedAt: 'updated_at',
37
+ timestamps: true,
38
+ });
39
+
40
+ setModelName(target.prototype, options.modelName || target.name);
41
+ addOptions(target.prototype, options);
42
+ };
43
+ }