@spinajs/intl-orm 2.0.96 → 2.0.99

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.
@@ -4,10 +4,21 @@ export * from './decorators.js';
4
4
  export * from './migrations/IntlOrm_2022_06_28_01_13_00.js';
5
5
  export * from './models/IntlResource.js';
6
6
  export * from './models/IntlTranslation.js';
7
+ export * from './model.js';
7
8
  declare module '@spinajs/orm' {
8
- interface SelectQueryBuilder<T> {
9
+ interface ISelectQueryBuilder<T> {
10
+ /**
11
+ *
12
+ * Translates model to given language.
13
+ * Working only with queries thata are model related ( created by model orm functions )
14
+ * TODO: in future it should work with raw queries, by passing relation information for translation
15
+ * TODO: fallback for translation from normal sources ( like config files )
16
+ *
17
+ * @param lang translate to language
18
+ */
9
19
  translate(lang: string): SelectQueryBuilder<T>;
10
20
  translated: boolean;
21
+ AllowTranslate: boolean;
11
22
  }
12
23
  interface IColumnDescriptor {
13
24
  Translate: boolean;
@@ -31,8 +42,16 @@ export declare class IntlModelMiddleware implements IBuilderMiddleware {
31
42
  modelCreation(_: any): ModelBase;
32
43
  afterHydration(data: ModelBase[]): Promise<any[]>;
33
44
  }
45
+ /**
46
+ * Middleware for automatic query translations
47
+ * for modes. If query is standalone ( not created by model related function )
48
+ * skips translation completely.
49
+ * When AsyncStorage is set & language property is present
50
+ *
51
+ */
34
52
  export declare class IntlQueryMiddleware extends QueryMiddleware {
35
- afterQueryCreation(builder: QueryBuilder): void;
53
+ beforeQueryExecution(builder: QueryBuilder<any>): void;
54
+ afterQueryCreation(_builder: QueryBuilder): void;
36
55
  }
37
56
  export declare class DbTranslationSource extends TranslationSource {
38
57
  load(): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAgB,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAC3N,OAAO,EAAE,iBAAiB,EAAkC,MAAM,eAAe,CAAC;AAKlF,cAAc,iBAAiB,CAAC;AAChC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAI5C,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,kBAAkB,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC/C,UAAU,EAAE,OAAO,CAAC;KACrB;IACD,UAAU,iBAAiB;QACzB,SAAS,EAAE,OAAO,CAAC;KACpB;CACF;AAED,qBACa,iBAAkB,SAAQ,WAAW;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM;IAA8C,SAAS,CAAC,YAAY,EAAE,gBAAgB;gBAAnG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAY,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,WAAW;IAoBjJ,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,KAAK,EAAE,MAAM;CAG/B;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAChD,SAAS,CAAC,KAAK,EAAE,MAAM;IAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;IAAE,SAAS,CAAC,YAAY,EAAE,gBAAgB;IAAE,SAAS,CAAC,MAAM,EAAE,YAAY;gBAArI,KAAK,EAAE,MAAM,EAAY,cAAc,EAAE,kBAAkB,EAAY,YAAY,EAAE,gBAAgB,EAAY,MAAM,EAAE,YAAY;IAEpJ,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAEnD,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAG9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAG1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA0D/D;AA0BD,qBACa,mBAAoB,SAAQ,eAAe;IACtD,kBAAkB,CAAC,OAAO,EAAE,YAAY;CAUzC;AAED,qBACa,mBAAoB,SAAQ,iBAAiB;IAC3C,IAAI;;;CAWlB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAqD,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAgB,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AACtP,OAAO,EAAE,iBAAiB,EAAqD,MAAM,eAAe,CAAC;AAOrG,cAAc,iBAAiB,CAAC;AAChC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAE3B,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,mBAAmB,CAAC,CAAC;QAC7B;;;;;;;;WAQG;QACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC/C,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;KACzB;IACD,UAAU,iBAAiB;QACzB,SAAS,EAAE,OAAO,CAAC;KACpB;CACF;AAED,qBACa,iBAAkB,SAAQ,WAAW;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM;IAA8C,SAAS,CAAC,YAAY,EAAE,gBAAgB;gBAAnG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAY,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,WAAW;IAoBjJ,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,KAAK,EAAE,MAAM;CAG/B;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAChD,SAAS,CAAC,KAAK,EAAE,MAAM;IAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;IAAE,SAAS,CAAC,YAAY,EAAE,gBAAgB;IAAE,SAAS,CAAC,MAAM,EAAE,YAAY;gBAArI,KAAK,EAAE,MAAM,EAAY,cAAc,EAAE,kBAAkB,EAAY,YAAY,EAAE,gBAAgB,EAAY,MAAM,EAAE,YAAY;IAEpJ,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAEnD,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAG9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAG1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA4C/D;AA8BD;;;;;;GAMG;AACH,qBACa,mBAAoB,SAAQ,eAAe;IACtD,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAqCtD,kBAAkB,CAAC,QAAQ,EAAE,YAAY;CAC1C;AAED,qBACa,mBAAoB,SAAQ,iBAAiB;IAC3C,IAAI;;;CAWlB"}
package/lib/cjs/index.js CHANGED
@@ -33,11 +33,13 @@ const intl_1 = require("@spinajs/intl");
33
33
  const lodash_1 = __importDefault(require("lodash"));
34
34
  const IntlTranslation_js_1 = require("./models/IntlTranslation.js");
35
35
  const IntlResource_js_1 = require("./models/IntlResource.js");
36
+ const configuration_1 = require("@spinajs/configuration");
37
+ const node_async_hooks_1 = require("node:async_hooks");
36
38
  __exportStar(require("./decorators.js"), exports);
37
39
  __exportStar(require("./migrations/IntlOrm_2022_06_28_01_13_00.js"), exports);
38
40
  __exportStar(require("./models/IntlResource.js"), exports);
39
41
  __exportStar(require("./models/IntlTranslation.js"), exports);
40
- const { SelectQueryBuilder: SQB } = require('@spinajs/orm');
42
+ __exportStar(require("./model.js"), exports);
41
43
  let IntlModelRelation = class IntlModelRelation extends orm_1.OrmRelation {
42
44
  constructor(_lang, _orm, _query, _mDescriptor, _parentRelation) {
43
45
  super(_orm, _query, {
@@ -95,30 +97,19 @@ class IntlModelMiddleware {
95
97
  },
96
98
  async afterHydration(relationData) {
97
99
  data.forEach((d) => {
100
+ let val = d;
98
101
  const relData = relationData.filter((rd) => {
99
- return rd['ResourceId'] === d[self._description.PrimaryKey];
102
+ return rd['ResourceId'] === val[self._description.PrimaryKey];
100
103
  });
101
104
  relData.forEach((rd) => {
102
105
  if (self._owner && self._owner instanceof orm_1.BelongsToRelation) {
103
- let val = d;
104
- let rel = self._owner;
105
- let relArr = [];
106
- while (rel) {
107
- relArr.push(rel);
108
- rel = rel.parentRelation;
109
- }
110
- relArr = relArr.reverse();
111
- relArr.forEach((r) => {
112
- val = val[r.Name].Value;
113
- });
114
106
  val[rd.Column] = rd.Value;
115
- val.setLanguage(self._lang);
116
107
  }
117
108
  else {
118
109
  d[rd.Column] = rd.Value;
119
110
  }
120
111
  });
121
- d.Language = self._lang;
112
+ val.setLanguage(self._lang);
122
113
  });
123
114
  },
124
115
  };
@@ -133,13 +124,16 @@ class IntlModelMiddleware {
133
124
  }
134
125
  }
135
126
  exports.IntlModelMiddleware = IntlModelMiddleware;
136
- SQB.prototype['translate'] = function (lang) {
127
+ orm_1.SelectQueryBuilder.prototype['translate'] = function (lang) {
137
128
  /**
138
129
  * Cannot translate query that cames from translation middleware !
139
130
  */
140
131
  if (this.Owner !== null && this.Owner instanceof IntlModelRelation) {
141
132
  return;
142
133
  }
134
+ if (!this.Model) {
135
+ return;
136
+ }
143
137
  this.translated = true;
144
138
  const descriptor = (0, orm_1.extractModelDescriptor)(this._model);
145
139
  const relInstance = this._container.resolve(IntlModelRelation, [lang, this._container.get(orm_1.Orm), this, descriptor, this._owner]);
@@ -153,16 +147,47 @@ SQB.prototype['translate'] = function (lang) {
153
147
  this._relations.push(relInstance);
154
148
  return this;
155
149
  };
150
+ /**
151
+ * Middleware for automatic query translations
152
+ * for modes. If query is standalone ( not created by model related function )
153
+ * skips translation completely.
154
+ * When AsyncStorage is set & language property is present
155
+ *
156
+ */
156
157
  let IntlQueryMiddleware = class IntlQueryMiddleware extends orm_1.QueryMiddleware {
157
- afterQueryCreation(builder) {
158
- if (builder instanceof SQB && !builder.translated) {
158
+ beforeQueryExecution(builder) {
159
+ // if we dont have configuration module
160
+ // we cannot guess default language
161
+ // so skip trying to translate
162
+ if (!di_1.DI.has(configuration_1.Configuration)) {
163
+ return;
164
+ }
165
+ // if something has set to no translate
166
+ // eg route decorator
167
+ const store = di_1.DI.get(node_async_hooks_1.AsyncLocalStorage);
168
+ if (store && store.noTranslate === false) {
169
+ return;
170
+ }
171
+ // something has set to not translate manually for query
172
+ if (builder.AllowTranslate === false) {
173
+ return;
174
+ }
175
+ // finaly, if its not query for model
176
+ if (!builder.Model) {
177
+ return;
178
+ }
179
+ // and translate only selects
180
+ if (builder instanceof orm_1.SelectQueryBuilder && !builder.translated) {
159
181
  const lang = (0, intl_1.guessLanguage)();
160
182
  const dLang = (0, intl_1.defaultLanguage)();
183
+ // if we requested non-default language ?
184
+ // if not we should translate
161
185
  if (lang && dLang !== lang) {
162
186
  builder.translate(lang);
163
187
  }
164
188
  }
165
189
  }
190
+ afterQueryCreation(_builder) { }
166
191
  };
167
192
  IntlQueryMiddleware = __decorate([
168
193
  (0, di_1.Injectable)(orm_1.QueryMiddleware)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,21 @@ export * from './decorators.js';
4
4
  export * from './migrations/IntlOrm_2022_06_28_01_13_00.js';
5
5
  export * from './models/IntlResource.js';
6
6
  export * from './models/IntlTranslation.js';
7
+ export * from './model.js';
7
8
  declare module '@spinajs/orm' {
8
- interface SelectQueryBuilder<T> {
9
+ interface ISelectQueryBuilder<T> {
10
+ /**
11
+ *
12
+ * Translates model to given language.
13
+ * Working only with queries thata are model related ( created by model orm functions )
14
+ * TODO: in future it should work with raw queries, by passing relation information for translation
15
+ * TODO: fallback for translation from normal sources ( like config files )
16
+ *
17
+ * @param lang translate to language
18
+ */
9
19
  translate(lang: string): SelectQueryBuilder<T>;
10
20
  translated: boolean;
21
+ AllowTranslate: boolean;
11
22
  }
12
23
  interface IColumnDescriptor {
13
24
  Translate: boolean;
@@ -31,8 +42,16 @@ export declare class IntlModelMiddleware implements IBuilderMiddleware {
31
42
  modelCreation(_: any): ModelBase;
32
43
  afterHydration(data: ModelBase[]): Promise<any[]>;
33
44
  }
45
+ /**
46
+ * Middleware for automatic query translations
47
+ * for modes. If query is standalone ( not created by model related function )
48
+ * skips translation completely.
49
+ * When AsyncStorage is set & language property is present
50
+ *
51
+ */
34
52
  export declare class IntlQueryMiddleware extends QueryMiddleware {
35
- afterQueryCreation(builder: QueryBuilder): void;
53
+ beforeQueryExecution(builder: QueryBuilder<any>): void;
54
+ afterQueryCreation(_builder: QueryBuilder): void;
36
55
  }
37
56
  export declare class DbTranslationSource extends TranslationSource {
38
57
  load(): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAgB,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AAC3N,OAAO,EAAE,iBAAiB,EAAkC,MAAM,eAAe,CAAC;AAKlF,cAAc,iBAAiB,CAAC;AAChC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAI5C,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,kBAAkB,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC/C,UAAU,EAAE,OAAO,CAAC;KACrB;IACD,UAAU,iBAAiB;QACzB,SAAS,EAAE,OAAO,CAAC;KACpB;CACF;AAED,qBACa,iBAAkB,SAAQ,WAAW;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM;IAA8C,SAAS,CAAC,YAAY,EAAE,gBAAgB;gBAAnG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAY,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,WAAW;IAoBjJ,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,KAAK,EAAE,MAAM;CAG/B;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAChD,SAAS,CAAC,KAAK,EAAE,MAAM;IAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;IAAE,SAAS,CAAC,YAAY,EAAE,gBAAgB;IAAE,SAAS,CAAC,MAAM,EAAE,YAAY;gBAArI,KAAK,EAAE,MAAM,EAAY,cAAc,EAAE,kBAAkB,EAAY,YAAY,EAAE,gBAAgB,EAAY,MAAM,EAAE,YAAY;IAEpJ,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAEnD,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAG9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAG1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA0D/D;AA0BD,qBACa,mBAAoB,SAAQ,eAAe;IACtD,kBAAkB,CAAC,OAAO,EAAE,YAAY;CAUzC;AAED,qBACa,mBAAoB,SAAQ,iBAAiB;IAC3C,IAAI;;;CAWlB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAqD,gBAAgB,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAgB,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAqB,MAAM,cAAc,CAAC;AACtP,OAAO,EAAE,iBAAiB,EAAqD,MAAM,eAAe,CAAC;AAOrG,cAAc,iBAAiB,CAAC;AAChC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAE3B,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,mBAAmB,CAAC,CAAC;QAC7B;;;;;;;;WAQG;QACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC/C,UAAU,EAAE,OAAO,CAAC;QACpB,cAAc,EAAE,OAAO,CAAC;KACzB;IACD,UAAU,iBAAiB;QACzB,SAAS,EAAE,OAAO,CAAC;KACpB;CACF;AAED,qBACa,iBAAkB,SAAQ,WAAW;IACpC,SAAS,CAAC,KAAK,EAAE,MAAM;IAA8C,SAAS,CAAC,YAAY,EAAE,gBAAgB;gBAAnG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAY,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,WAAW;IAoBjJ,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,KAAK,EAAE,MAAM;CAG/B;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAChD,SAAS,CAAC,KAAK,EAAE,MAAM;IAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;IAAE,SAAS,CAAC,YAAY,EAAE,gBAAgB;IAAE,SAAS,CAAC,MAAM,EAAE,YAAY;gBAArI,KAAK,EAAE,MAAM,EAAY,cAAc,EAAE,kBAAkB,EAAY,YAAY,EAAE,gBAAgB,EAAY,MAAM,EAAE,YAAY;IAEpJ,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAEnD,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAG9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAG1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA4C/D;AA8BD;;;;;;GAMG;AACH,qBACa,mBAAoB,SAAQ,eAAe;IACtD,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IAqCtD,kBAAkB,CAAC,QAAQ,EAAE,YAAY;CAC1C;AAED,qBACa,mBAAoB,SAAQ,iBAAiB;IAC3C,IAAI;;;CAWlB"}
package/lib/mjs/index.js CHANGED
@@ -7,17 +7,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { Injectable, NewInstance } from '@spinajs/di';
11
- import { extractModelDescriptor, Orm, OrmRelation, RelationType, SelectQueryBuilder, QueryMiddleware, BelongsToRelation } from '@spinajs/orm';
10
+ import { DI, Injectable, NewInstance } from '@spinajs/di';
11
+ import { SelectQueryBuilder as SQB, extractModelDescriptor, Orm, OrmRelation, RelationType, SelectQueryBuilder, QueryMiddleware, BelongsToRelation } from '@spinajs/orm';
12
12
  import { TranslationSource, guessLanguage, defaultLanguage } from '@spinajs/intl';
13
13
  import _ from 'lodash';
14
14
  import { IntlTranslation } from './models/IntlTranslation.js';
15
15
  import { IntlResource } from './models/IntlResource.js';
16
+ import { Configuration } from '@spinajs/configuration';
17
+ import { AsyncLocalStorage } from 'node:async_hooks';
16
18
  export * from './decorators.js';
17
19
  export * from './migrations/IntlOrm_2022_06_28_01_13_00.js';
18
20
  export * from './models/IntlResource.js';
19
21
  export * from './models/IntlTranslation.js';
20
- const { SelectQueryBuilder: SQB } = require('@spinajs/orm');
22
+ export * from './model.js';
21
23
  let IntlModelRelation = class IntlModelRelation extends OrmRelation {
22
24
  constructor(_lang, _orm, _query, _mDescriptor, _parentRelation) {
23
25
  super(_orm, _query, {
@@ -75,30 +77,19 @@ export class IntlModelMiddleware {
75
77
  },
76
78
  async afterHydration(relationData) {
77
79
  data.forEach((d) => {
80
+ let val = d;
78
81
  const relData = relationData.filter((rd) => {
79
- return rd['ResourceId'] === d[self._description.PrimaryKey];
82
+ return rd['ResourceId'] === val[self._description.PrimaryKey];
80
83
  });
81
84
  relData.forEach((rd) => {
82
85
  if (self._owner && self._owner instanceof BelongsToRelation) {
83
- let val = d;
84
- let rel = self._owner;
85
- let relArr = [];
86
- while (rel) {
87
- relArr.push(rel);
88
- rel = rel.parentRelation;
89
- }
90
- relArr = relArr.reverse();
91
- relArr.forEach((r) => {
92
- val = val[r.Name].Value;
93
- });
94
86
  val[rd.Column] = rd.Value;
95
- val.setLanguage(self._lang);
96
87
  }
97
88
  else {
98
89
  d[rd.Column] = rd.Value;
99
90
  }
100
91
  });
101
- d.Language = self._lang;
92
+ val.setLanguage(self._lang);
102
93
  });
103
94
  },
104
95
  };
@@ -119,6 +110,9 @@ SQB.prototype['translate'] = function (lang) {
119
110
  if (this.Owner !== null && this.Owner instanceof IntlModelRelation) {
120
111
  return;
121
112
  }
113
+ if (!this.Model) {
114
+ return;
115
+ }
122
116
  this.translated = true;
123
117
  const descriptor = extractModelDescriptor(this._model);
124
118
  const relInstance = this._container.resolve(IntlModelRelation, [lang, this._container.get(Orm), this, descriptor, this._owner]);
@@ -132,16 +126,47 @@ SQB.prototype['translate'] = function (lang) {
132
126
  this._relations.push(relInstance);
133
127
  return this;
134
128
  };
129
+ /**
130
+ * Middleware for automatic query translations
131
+ * for modes. If query is standalone ( not created by model related function )
132
+ * skips translation completely.
133
+ * When AsyncStorage is set & language property is present
134
+ *
135
+ */
135
136
  let IntlQueryMiddleware = class IntlQueryMiddleware extends QueryMiddleware {
136
- afterQueryCreation(builder) {
137
+ beforeQueryExecution(builder) {
138
+ // if we dont have configuration module
139
+ // we cannot guess default language
140
+ // so skip trying to translate
141
+ if (!DI.has(Configuration)) {
142
+ return;
143
+ }
144
+ // if something has set to no translate
145
+ // eg route decorator
146
+ const store = DI.get(AsyncLocalStorage);
147
+ if (store && store.noTranslate === false) {
148
+ return;
149
+ }
150
+ // something has set to not translate manually for query
151
+ if (builder.AllowTranslate === false) {
152
+ return;
153
+ }
154
+ // finaly, if its not query for model
155
+ if (!builder.Model) {
156
+ return;
157
+ }
158
+ // and translate only selects
137
159
  if (builder instanceof SQB && !builder.translated) {
138
160
  const lang = guessLanguage();
139
161
  const dLang = defaultLanguage();
162
+ // if we requested non-default language ?
163
+ // if not we should translate
140
164
  if (lang && dLang !== lang) {
141
165
  builder.translate(lang);
142
166
  }
143
167
  }
144
168
  }
169
+ afterQueryCreation(_builder) { }
145
170
  };
146
171
  IntlQueryMiddleware = __decorate([
147
172
  Injectable(QueryMiddleware)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}