@spinajs/intl-orm 2.0.96 → 2.0.98

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,9 +5,19 @@ 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
7
  declare module '@spinajs/orm' {
8
- interface SelectQueryBuilder<T> {
8
+ interface ISelectQueryBuilder<T> {
9
+ /**
10
+ *
11
+ * Translates model to given language.
12
+ * Working only with queries thata are model related ( created by model orm functions )
13
+ * TODO: in future it should work with raw queries, by passing relation information for translation
14
+ * TODO: fallback for translation from normal sources ( like config files )
15
+ *
16
+ * @param lang translate to language
17
+ */
9
18
  translate(lang: string): SelectQueryBuilder<T>;
10
19
  translated: boolean;
20
+ AllowTranslate: boolean;
11
21
  }
12
22
  interface IColumnDescriptor {
13
23
  Translate: boolean;
@@ -25,14 +35,24 @@ export declare class IntlModelMiddleware implements IBuilderMiddleware {
25
35
  protected _relationQuery: SelectQueryBuilder;
26
36
  protected _description: IModelDescriptor;
27
37
  protected _owner: IOrmRelation;
38
+ static COUNT: number;
39
+ protected instance: number;
28
40
  constructor(_lang: string, _relationQuery: SelectQueryBuilder, _description: IModelDescriptor, _owner: IOrmRelation);
29
41
  afterQueryCreation(_query: QueryBuilder<any>): void;
30
42
  afterQuery(data: any[]): any[];
31
43
  modelCreation(_: any): ModelBase;
32
44
  afterHydration(data: ModelBase[]): Promise<any[]>;
33
45
  }
46
+ /**
47
+ * Middleware for automatic query translations
48
+ * for modes. If query is standalone ( not created by model related function )
49
+ * skips translation completely.
50
+ * When AsyncStorage is set & language property is present
51
+ *
52
+ */
34
53
  export declare class IntlQueryMiddleware extends QueryMiddleware {
35
- afterQueryCreation(builder: QueryBuilder): void;
54
+ beforeQueryExecution(builder: QueryBuilder<any>): void;
55
+ afterQueryCreation(_builder: QueryBuilder): void;
36
56
  }
37
57
  export declare class DbTranslationSource extends TranslationSource {
38
58
  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;AAE5C,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;IAKhD,SAAS,CAAC,KAAK,EAAE,MAAM;IAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;IAAE,SAAS,CAAC,YAAY,EAAE,gBAAgB;IAAE,SAAS,CAAC,MAAM,EAAE,YAAY;IAH3J,OAAc,KAAK,SAAK;IACxB,SAAS,CAAC,QAAQ,SAAK;gBAED,KAAK,EAAE,MAAM,EAAY,cAAc,EAAE,kBAAkB,EAAY,YAAY,EAAE,gBAAgB,EAAY,MAAM,EAAE,YAAY;IAOpJ,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,12 @@ 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');
41
42
  let IntlModelRelation = class IntlModelRelation extends orm_1.OrmRelation {
42
43
  constructor(_lang, _orm, _query, _mDescriptor, _parentRelation) {
43
44
  super(_orm, _query, {
@@ -72,6 +73,9 @@ class IntlModelMiddleware {
72
73
  this._relationQuery = _relationQuery;
73
74
  this._description = _description;
74
75
  this._owner = _owner;
76
+ this.instance = 0;
77
+ IntlModelMiddleware.COUNT = IntlModelMiddleware.COUNT + 1;
78
+ this.instance = IntlModelMiddleware.COUNT;
75
79
  }
76
80
  afterQueryCreation(_query) { }
77
81
  afterQuery(data) {
@@ -95,30 +99,19 @@ class IntlModelMiddleware {
95
99
  },
96
100
  async afterHydration(relationData) {
97
101
  data.forEach((d) => {
102
+ let val = d;
98
103
  const relData = relationData.filter((rd) => {
99
- return rd['ResourceId'] === d[self._description.PrimaryKey];
104
+ return rd['ResourceId'] === val[self._description.PrimaryKey];
100
105
  });
101
106
  relData.forEach((rd) => {
102
107
  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
108
  val[rd.Column] = rd.Value;
115
- val.setLanguage(self._lang);
116
109
  }
117
110
  else {
118
111
  d[rd.Column] = rd.Value;
119
112
  }
120
113
  });
121
- d.Language = self._lang;
114
+ val.setLanguage(self._lang);
122
115
  });
123
116
  },
124
117
  };
@@ -133,13 +126,17 @@ class IntlModelMiddleware {
133
126
  }
134
127
  }
135
128
  exports.IntlModelMiddleware = IntlModelMiddleware;
136
- SQB.prototype['translate'] = function (lang) {
129
+ IntlModelMiddleware.COUNT = 0;
130
+ orm_1.SelectQueryBuilder.prototype['translate'] = function (lang) {
137
131
  /**
138
132
  * Cannot translate query that cames from translation middleware !
139
133
  */
140
134
  if (this.Owner !== null && this.Owner instanceof IntlModelRelation) {
141
135
  return;
142
136
  }
137
+ if (!this.Model) {
138
+ return;
139
+ }
143
140
  this.translated = true;
144
141
  const descriptor = (0, orm_1.extractModelDescriptor)(this._model);
145
142
  const relInstance = this._container.resolve(IntlModelRelation, [lang, this._container.get(orm_1.Orm), this, descriptor, this._owner]);
@@ -153,16 +150,47 @@ SQB.prototype['translate'] = function (lang) {
153
150
  this._relations.push(relInstance);
154
151
  return this;
155
152
  };
153
+ /**
154
+ * Middleware for automatic query translations
155
+ * for modes. If query is standalone ( not created by model related function )
156
+ * skips translation completely.
157
+ * When AsyncStorage is set & language property is present
158
+ *
159
+ */
156
160
  let IntlQueryMiddleware = class IntlQueryMiddleware extends orm_1.QueryMiddleware {
157
- afterQueryCreation(builder) {
158
- if (builder instanceof SQB && !builder.translated) {
161
+ beforeQueryExecution(builder) {
162
+ // if we dont have configuration module
163
+ // we cannot guess default language
164
+ // so skip trying to translate
165
+ if (!di_1.DI.has(configuration_1.Configuration)) {
166
+ return;
167
+ }
168
+ // if something has set to no translate
169
+ // eg route decorator
170
+ const store = di_1.DI.get(node_async_hooks_1.AsyncLocalStorage);
171
+ if (store && store.noTranslate === false) {
172
+ return;
173
+ }
174
+ // something has set to not translate manually for query
175
+ if (builder.AllowTranslate === false) {
176
+ return;
177
+ }
178
+ // finaly, if its not query for model
179
+ if (!builder.Model) {
180
+ return;
181
+ }
182
+ // and translate only selects
183
+ if (builder instanceof orm_1.SelectQueryBuilder && !builder.translated) {
159
184
  const lang = (0, intl_1.guessLanguage)();
160
185
  const dLang = (0, intl_1.defaultLanguage)();
186
+ // if we requested non-default language ?
187
+ // if not we should translate
161
188
  if (lang && dLang !== lang) {
162
189
  builder.translate(lang);
163
190
  }
164
191
  }
165
192
  }
193
+ afterQueryCreation(_builder) { }
166
194
  };
167
195
  IntlQueryMiddleware = __decorate([
168
196
  (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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"}
@@ -5,9 +5,19 @@ 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
7
  declare module '@spinajs/orm' {
8
- interface SelectQueryBuilder<T> {
8
+ interface ISelectQueryBuilder<T> {
9
+ /**
10
+ *
11
+ * Translates model to given language.
12
+ * Working only with queries thata are model related ( created by model orm functions )
13
+ * TODO: in future it should work with raw queries, by passing relation information for translation
14
+ * TODO: fallback for translation from normal sources ( like config files )
15
+ *
16
+ * @param lang translate to language
17
+ */
9
18
  translate(lang: string): SelectQueryBuilder<T>;
10
19
  translated: boolean;
20
+ AllowTranslate: boolean;
11
21
  }
12
22
  interface IColumnDescriptor {
13
23
  Translate: boolean;
@@ -25,14 +35,24 @@ export declare class IntlModelMiddleware implements IBuilderMiddleware {
25
35
  protected _relationQuery: SelectQueryBuilder;
26
36
  protected _description: IModelDescriptor;
27
37
  protected _owner: IOrmRelation;
38
+ static COUNT: number;
39
+ protected instance: number;
28
40
  constructor(_lang: string, _relationQuery: SelectQueryBuilder, _description: IModelDescriptor, _owner: IOrmRelation);
29
41
  afterQueryCreation(_query: QueryBuilder<any>): void;
30
42
  afterQuery(data: any[]): any[];
31
43
  modelCreation(_: any): ModelBase;
32
44
  afterHydration(data: ModelBase[]): Promise<any[]>;
33
45
  }
46
+ /**
47
+ * Middleware for automatic query translations
48
+ * for modes. If query is standalone ( not created by model related function )
49
+ * skips translation completely.
50
+ * When AsyncStorage is set & language property is present
51
+ *
52
+ */
34
53
  export declare class IntlQueryMiddleware extends QueryMiddleware {
35
- afterQueryCreation(builder: QueryBuilder): void;
54
+ beforeQueryExecution(builder: QueryBuilder<any>): void;
55
+ afterQueryCreation(_builder: QueryBuilder): void;
36
56
  }
37
57
  export declare class DbTranslationSource extends TranslationSource {
38
58
  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;AAE5C,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;IAKhD,SAAS,CAAC,KAAK,EAAE,MAAM;IAAE,SAAS,CAAC,cAAc,EAAE,kBAAkB;IAAE,SAAS,CAAC,YAAY,EAAE,gBAAgB;IAAE,SAAS,CAAC,MAAM,EAAE,YAAY;IAH3J,OAAc,KAAK,SAAK;IACxB,SAAS,CAAC,QAAQ,SAAK;gBAED,KAAK,EAAE,MAAM,EAAY,cAAc,EAAE,kBAAkB,EAAY,YAAY,EAAE,gBAAgB,EAAY,MAAM,EAAE,YAAY;IAOpJ,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,18 @@ 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');
21
22
  let IntlModelRelation = class IntlModelRelation extends OrmRelation {
22
23
  constructor(_lang, _orm, _query, _mDescriptor, _parentRelation) {
23
24
  super(_orm, _query, {
@@ -52,6 +53,9 @@ export class IntlModelMiddleware {
52
53
  this._relationQuery = _relationQuery;
53
54
  this._description = _description;
54
55
  this._owner = _owner;
56
+ this.instance = 0;
57
+ IntlModelMiddleware.COUNT = IntlModelMiddleware.COUNT + 1;
58
+ this.instance = IntlModelMiddleware.COUNT;
55
59
  }
56
60
  afterQueryCreation(_query) { }
57
61
  afterQuery(data) {
@@ -75,30 +79,19 @@ export class IntlModelMiddleware {
75
79
  },
76
80
  async afterHydration(relationData) {
77
81
  data.forEach((d) => {
82
+ let val = d;
78
83
  const relData = relationData.filter((rd) => {
79
- return rd['ResourceId'] === d[self._description.PrimaryKey];
84
+ return rd['ResourceId'] === val[self._description.PrimaryKey];
80
85
  });
81
86
  relData.forEach((rd) => {
82
87
  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
88
  val[rd.Column] = rd.Value;
95
- val.setLanguage(self._lang);
96
89
  }
97
90
  else {
98
91
  d[rd.Column] = rd.Value;
99
92
  }
100
93
  });
101
- d.Language = self._lang;
94
+ val.setLanguage(self._lang);
102
95
  });
103
96
  },
104
97
  };
@@ -112,6 +105,7 @@ export class IntlModelMiddleware {
112
105
  return [];
113
106
  }
114
107
  }
108
+ IntlModelMiddleware.COUNT = 0;
115
109
  SQB.prototype['translate'] = function (lang) {
116
110
  /**
117
111
  * Cannot translate query that cames from translation middleware !
@@ -119,6 +113,9 @@ SQB.prototype['translate'] = function (lang) {
119
113
  if (this.Owner !== null && this.Owner instanceof IntlModelRelation) {
120
114
  return;
121
115
  }
116
+ if (!this.Model) {
117
+ return;
118
+ }
122
119
  this.translated = true;
123
120
  const descriptor = extractModelDescriptor(this._model);
124
121
  const relInstance = this._container.resolve(IntlModelRelation, [lang, this._container.get(Orm), this, descriptor, this._owner]);
@@ -132,16 +129,47 @@ SQB.prototype['translate'] = function (lang) {
132
129
  this._relations.push(relInstance);
133
130
  return this;
134
131
  };
132
+ /**
133
+ * Middleware for automatic query translations
134
+ * for modes. If query is standalone ( not created by model related function )
135
+ * skips translation completely.
136
+ * When AsyncStorage is set & language property is present
137
+ *
138
+ */
135
139
  let IntlQueryMiddleware = class IntlQueryMiddleware extends QueryMiddleware {
136
- afterQueryCreation(builder) {
140
+ beforeQueryExecution(builder) {
141
+ // if we dont have configuration module
142
+ // we cannot guess default language
143
+ // so skip trying to translate
144
+ if (!DI.has(Configuration)) {
145
+ return;
146
+ }
147
+ // if something has set to no translate
148
+ // eg route decorator
149
+ const store = DI.get(AsyncLocalStorage);
150
+ if (store && store.noTranslate === false) {
151
+ return;
152
+ }
153
+ // something has set to not translate manually for query
154
+ if (builder.AllowTranslate === false) {
155
+ return;
156
+ }
157
+ // finaly, if its not query for model
158
+ if (!builder.Model) {
159
+ return;
160
+ }
161
+ // and translate only selects
137
162
  if (builder instanceof SQB && !builder.translated) {
138
163
  const lang = guessLanguage();
139
164
  const dLang = defaultLanguage();
165
+ // if we requested non-default language ?
166
+ // if not we should translate
140
167
  if (lang && dLang !== lang) {
141
168
  builder.translate(lang);
142
169
  }
143
170
  }
144
171
  }
172
+ afterQueryCreation(_builder) { }
145
173
  };
146
174
  IntlQueryMiddleware = __decorate([
147
175
  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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"}