exodus-framework 2.0.840 → 2.0.843

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.
@@ -5,7 +5,7 @@ export type TEntityConnParams<M extends Model> = Partial<InitOptions<M>>;
5
5
  export type TEntityParams<M extends Model> = ModelAttributes<M, Optional<Attributes<M>, BrandedKeysOf<Attributes<M>, typeof ForeignKeyBrand>>>;
6
6
  declare class ServiceModel<M extends Model> extends Model<InferAttributes<M>, InferCreationAttributes<M>> {
7
7
  static initialize<M extends ServiceModel<Model>>(this: StaticServiceModel<M>, connection: Sequelize): StaticServiceModel<M>;
8
- static associate(_models: ModelStatic<Model>): Promise<void>;
8
+ static associate(_models: ModelStatic<Model>[]): Promise<void>;
9
9
  static getEntityParams<M extends ServiceModel<Model>>(this: ModelStatic<M>): TEntityParams<any>;
10
10
  static getConnParams<M extends ServiceModel<Model>>(this: ModelStatic<M>): TEntityConnParams<any>;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"servicemodel.d.ts","sourceRoot":"","sources":["../../../src/app/classes/servicemodel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,KAAK,EACL,eAAe,EACf,WAAW,EACX,QAAQ,EACR,SAAS,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,IAAI,eAAe,CAC1D,CAAC,EACD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,CAAC,CAAC,CAC9E,CAAC;AAEF,cAAM,YAAY,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAC7C,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC3B,UAAU,EAAE,SAAS,GACpB,kBAAkB,CAAC,CAAC,CAAC;WAOX,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC;IAIlD,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IAG/F,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAChD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,iBAAiB,CAAC,GAAG,CAAC;CAG1B;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"servicemodel.d.ts","sourceRoot":"","sources":["../../../src/app/classes/servicemodel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EACL,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,KAAK,EACL,eAAe,EACf,WAAW,EACX,QAAQ,EACR,SAAS,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,IAAI,eAAe,CAC1D,CAAC,EACD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,eAAe,CAAC,CAAC,CAC9E,CAAC;AAEF,cAAM,YAAY,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAC7C,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC3B,UAAU,EAAE,SAAS,GACpB,kBAAkB,CAAC,CAAC,CAAC;WAOX,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE;IAGpD,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IAG/F,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAChD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GACnB,iBAAiB,CAAC,GAAG,CAAC;CAG1B;AAED,eAAe,YAAY,CAAC"}
@@ -17,6 +17,7 @@ declare class SequelizeService extends Service {
17
17
  hasDB(hostUuid: string, name: string): Promise<boolean>;
18
18
  deleteDB(hostUuid: string, name: string): Promise<boolean>;
19
19
  initDB(tenantId: string): Promise<false | Sequelize>;
20
+ initModelsByConnection(tenantId: string, connection: Sequelize): Promise<void>;
20
21
  getDBName(envToken: string): string;
21
22
  reconnect(db: Sequelize, attempts?: number): void;
22
23
  createConnection(hostUuid: string, database?: string): Promise<false | Sequelize>;
@@ -1 +1 @@
1
- {"version":3,"file":"sequelize.d.ts","sourceRoot":"","sources":["../../src/services/sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAsB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAKpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUlD,cAAM,gBAAiB,SAAQ,OAAO;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAG5B,aAAa;IASb,gBAAgB;IA8BhB,KAAK,CAAC,QAAQ,EAAE,MAAM;IActB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IA6BvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAqBpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiBvC,MAAM,CAAC,QAAQ,EAAE,MAAM;IAiB7B,SAAS,CAAC,QAAQ,EAAE,MAAM;IAK1B,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,SAAI;IAe/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IA2CpD,cAAc,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB;IA4BK,WAAW,CAAC,QAAQ,EAAE,MAAM;IAe5B,QAAQ,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAC1C,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IA0BjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE;CAGxD;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"sequelize.d.ts","sourceRoot":"","sources":["../../src/services/sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAsB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAKpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUlD,cAAM,gBAAiB,SAAQ,OAAO;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAG5B,aAAa;IASb,gBAAgB;IA8BhB,KAAK,CAAC,QAAQ,EAAE,MAAM;IActB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IA6BvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAqBpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiBvC,MAAM,CAAC,QAAQ,EAAE,MAAM;IA+BvB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;IAkBpE,SAAS,CAAC,QAAQ,EAAE,MAAM;IAK1B,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,SAAI;IAe/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IA2CpD,cAAc,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB;IA4BK,WAAW,CAAC,QAAQ,EAAE,MAAM;IAe5B,QAAQ,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAC1C,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAWjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE;CAGxD;AAED,eAAe,gBAAgB,CAAC"}
@@ -141,6 +141,18 @@ class SequelizeService extends _service.default {
141
141
  return false;
142
142
  }
143
143
  async initDB(tenantId) {
144
+ /* let connection: false | Sequelize = false;
145
+ if (tenantId == Core.settings.getDatabase().service.database) {
146
+ connection = serviceDB;
147
+ } else if (tenantId == Core.settings.getDatabase().master.database) {
148
+ connection = masterDB;
149
+ } else {
150
+ connection = await this.getDB(tenantId);
151
+ }
152
+ if (!connection) {
153
+ throw new Error('Conexão não encontrada');
154
+ } */
155
+
144
156
  const relation = await this.getRelation(tenantId);
145
157
  if (!relation) return false;
146
158
  const dbName = this.getDBName(relation.envToken);
@@ -148,11 +160,25 @@ class SequelizeService extends _service.default {
148
160
  if (this.connections.has(key)) return this.connections.get(key);
149
161
  const connection = await this.createConnection(relation.hostUuid, dbName);
150
162
  if (connection) {
163
+ await this.initModelsByConnection(tenantId, connection);
151
164
  this.log(`✅ Connected ${dbName} database sucessfully`, 'success');
152
165
  this.connections.set(key, connection);
153
166
  return connection;
154
167
  }
155
168
  }
169
+ async initModelsByConnection(tenantId, connection) {
170
+ const entities = [];
171
+ await Promise.all(this.models.map(async model => {
172
+ const modelKey = `${tenantId}#${model.name}`;
173
+ const entity = model.initialize(connection);
174
+ await entity.sync();
175
+ entities.push(entity);
176
+ this.initializedModels.set(modelKey, entity);
177
+ }));
178
+ await Promise.all(entities.map(async entity => {
179
+ await entity.associate(entities);
180
+ }));
181
+ }
156
182
  getDBName(envToken) {
157
183
  return `${_app.Core.settings.getDatabase().service.database}_${envToken}`;
158
184
  }
@@ -251,23 +277,11 @@ class SequelizeService extends _service.default {
251
277
  // #Entity
252
278
  async getModel(model, tenantId) {
253
279
  try {
254
- let connection = false;
255
280
  const modelKey = `${tenantId}#${model.name}`;
256
- if (tenantId == _app.Core.settings.getDatabase().service.database) {
257
- connection = _database.serviceDB;
258
- } else if (tenantId == _app.Core.settings.getDatabase().master.database) {
259
- connection = _database.masterDB;
260
- } else {
261
- connection = await this.getDB(tenantId);
262
- }
263
- if (this.initializedModels.has(modelKey)) return this.initializedModels.get(modelKey);
264
- if (!connection) {
265
- throw new Error('Conexão não encontrada');
281
+ if (!this.initializedModels.has(modelKey)) {
282
+ await this.initDB(tenantId);
266
283
  }
267
- const m = model.initialize(connection);
268
- await m.sync();
269
- this.initializedModels.set(modelKey, m);
270
- return m;
284
+ return this.initializedModels.get(modelKey);
271
285
  } catch (error) {
272
286
  throw new _app.ErrorHandler('Erro ao obter o model', error);
273
287
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exodus-framework",
3
- "version": "2.0.840",
3
+ "version": "2.0.843",
4
4
  "description": "Exodus Framework",
5
5
  "author": "jhownpaixao",
6
6
  "license": "ISC",