@spinajs/intl-orm 1.2.108 → 1.2.118

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.
@@ -0,0 +1 @@
1
+ export declare function Translate(): any;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Translate = void 0;
4
+ const orm_1 = require("@spinajs/orm");
5
+ function Translate() {
6
+ return (0, orm_1.extractDecoratorDescriptor)((model, _target, propertyKey) => {
7
+ const columnDesc = model.Columns.find((c) => c.Name === propertyKey);
8
+ if (!columnDesc) {
9
+ // we dont want to fill all props, they will be loaded from db and mergeg with this
10
+ model.Columns.push({ Name: propertyKey, Translate: true });
11
+ }
12
+ else {
13
+ columnDesc.Translate = true;
14
+ }
15
+ }, true);
16
+ }
17
+ exports.Translate = Translate;
18
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;AAAA,sCAA6E;AAE7E,SAAgB,SAAS;IACvB,OAAO,IAAA,gCAA0B,EAAC,CAAC,KAAwB,EAAE,OAAY,EAAE,WAAmB,EAAE,EAAE;QAChG,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,EAAE;YACf,mFAAmF;YACnF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAS,CAAC,CAAC;SACnE;aAAM;YACL,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;SAC7B;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAVD,8BAUC"}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { IBuilderMiddleware, IModelDescrtiptor, ModelBase, Orm, OrmRelation, SelectQueryBuilder } from '@spinajs/orm';
2
+ import { TranslationSource } from '@spinajs/intl';
2
3
  declare module '@spinajs/orm' {
3
4
  interface ISelectBuilderExtensions<T = any> {
4
5
  translate(lang: string): this;
@@ -7,17 +8,6 @@ declare module '@spinajs/orm' {
7
8
  Translate: boolean;
8
9
  }
9
10
  }
10
- export declare class IntlModelBase extends ModelBase {
11
- Language: string;
12
- /**
13
- * Reloads entity with proper translation
14
- *
15
- * @param lang - language to load
16
- */
17
- translate(lang: string): Promise<void>;
18
- update(): Promise<void>;
19
- }
20
- export declare function Translate(): any;
21
11
  export declare class IntlModelRelation extends OrmRelation {
22
12
  protected _lang: string;
23
13
  protected _mDescriptor: IModelDescrtiptor;
@@ -34,3 +24,8 @@ export declare class IntlModelMiddleware implements IBuilderMiddleware {
34
24
  modelCreation(_: any): ModelBase;
35
25
  afterHydration(data: ModelBase[]): Promise<any[]>;
36
26
  }
27
+ export declare class DbTranslationSource extends TranslationSource {
28
+ load(): Promise<{
29
+ [x: string]: any;
30
+ }>;
31
+ }
package/lib/index.js CHANGED
@@ -12,75 +12,13 @@ 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.IntlModelMiddleware = exports.IntlModelRelation = exports.Translate = exports.IntlModelBase = void 0;
15
+ exports.DbTranslationSource = exports.IntlModelMiddleware = exports.IntlModelRelation = void 0;
16
16
  const di_1 = require("@spinajs/di");
17
17
  const orm_1 = require("@spinajs/orm");
18
+ const intl_1 = require("@spinajs/intl");
18
19
  const lodash_1 = __importDefault(require("lodash"));
20
+ const IntlTranslation_1 = require("./models/IntlTranslation");
19
21
  const IntlResource_1 = require("./models/IntlResource");
20
- class IntlModelBase extends orm_1.ModelBase {
21
- /**
22
- * Reloads entity with proper translation
23
- *
24
- * @param lang - language to load
25
- */
26
- async translate(lang) {
27
- const translations = await IntlResource_1.IntlResource.where({
28
- ResourceId: this.PrimaryKeyValue,
29
- Resource: this.constructor.name,
30
- Lang: lang,
31
- });
32
- translations.forEach((rd) => {
33
- this[rd.Column] = rd.Value;
34
- });
35
- this.Language = lang;
36
- }
37
- async update() {
38
- if (!this.Language) {
39
- await super.update();
40
- }
41
- else {
42
- // TODO: temporaty use uniqyBy, pls FIX model descriptor proper handling in ORM module
43
- const tColumns = lodash_1.default.uniqBy(this.ModelDescriptor.Columns.filter((c) => c.Translate), 'Name');
44
- const { query } = this.createUpdateQuery();
45
- if (this.ModelDescriptor.Timestamps.UpdatedAt) {
46
- this[this.ModelDescriptor.Timestamps.UpdatedAt] = new Date();
47
- }
48
- // update only non translated
49
- const cToDehydrate = [this.PrimaryKeyName, ...tColumns.map((c) => c.Name)];
50
- const dToUpdate = this.dehydrate(cToDehydrate);
51
- if (Object.keys(dToUpdate).length !== 0) {
52
- await query.update(dToUpdate).where(this.PrimaryKeyName, this.PrimaryKeyValue);
53
- }
54
- const translations = tColumns.map((c) => {
55
- return new IntlResource_1.IntlResource({
56
- ResourceId: this.PrimaryKeyValue,
57
- Resource: this.constructor.name,
58
- Column: c.Name,
59
- Lang: this.Language,
60
- Value: this[c.Name],
61
- });
62
- });
63
- // update or insert translations to database
64
- for (const t of translations) {
65
- await t.insert(orm_1.InsertBehaviour.InsertOrUpdate);
66
- }
67
- }
68
- }
69
- }
70
- exports.IntlModelBase = IntlModelBase;
71
- function Translate() {
72
- return (0, orm_1.extractDecoratorDescriptor)((model, _target, propertyKey) => {
73
- const columnDesc = model.Columns.find((c) => c.Name === propertyKey);
74
- if (!columnDesc) {
75
- // we dont want to fill all props, they will be loaded from db and mergeg with this
76
- model.Columns.push({ Name: propertyKey, Translate: true });
77
- }
78
- else {
79
- columnDesc.Translate = true;
80
- }
81
- }, true);
82
- }
83
- exports.Translate = Translate;
84
22
  let IntlModelRelation = class IntlModelRelation extends orm_1.OrmRelation {
85
23
  constructor(_lang, _orm, _query, _mDescriptor, _parentRelation) {
86
24
  super(_orm, _query, {
@@ -168,4 +106,19 @@ orm_1.SelectQueryBuilder.prototype['translate'] = function (lang) {
168
106
  this._relations.push(relInstance);
169
107
  return this;
170
108
  };
109
+ let DbTranslationSource = class DbTranslationSource extends intl_1.TranslationSource {
110
+ async load() {
111
+ const translations = await IntlTranslation_1.IntlTranslation.all();
112
+ return lodash_1.default.mapValues(lodash_1.default.groupBy(translations, 'Lang'), (t) => {
113
+ const vals = t.map((tt) => {
114
+ return { [tt.Key]: tt.Value };
115
+ });
116
+ return lodash_1.default.assign.apply(lodash_1.default, vals);
117
+ });
118
+ }
119
+ };
120
+ DbTranslationSource = __decorate([
121
+ (0, di_1.Injectable)(intl_1.TranslationSource)
122
+ ], DbTranslationSource);
123
+ exports.DbTranslationSource = DbTranslationSource;
171
124
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -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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"}
package/lib/model.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { ModelBase } from '@spinajs/orm';
2
+ export declare class IntlModelBase extends ModelBase {
3
+ Language: string;
4
+ /**
5
+ * Reloads entity with proper translation
6
+ *
7
+ * @param lang - language to load
8
+ */
9
+ translate(lang: string): Promise<void>;
10
+ update(): Promise<void>;
11
+ }
package/lib/model.js ADDED
@@ -0,0 +1,61 @@
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.IntlModelBase = void 0;
7
+ const orm_1 = require("@spinajs/orm");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const IntlResource_1 = require("./models/IntlResource");
10
+ class IntlModelBase extends orm_1.ModelBase {
11
+ /**
12
+ * Reloads entity with proper translation
13
+ *
14
+ * @param lang - language to load
15
+ */
16
+ async translate(lang) {
17
+ const translations = await IntlResource_1.IntlResource.where({
18
+ ResourceId: this.PrimaryKeyValue,
19
+ Resource: this.constructor.name,
20
+ Lang: lang,
21
+ });
22
+ translations.forEach((rd) => {
23
+ this[rd.Column] = rd.Value;
24
+ });
25
+ this.Language = lang;
26
+ }
27
+ async update() {
28
+ if (!this.Language) {
29
+ await super.update();
30
+ }
31
+ else {
32
+ // TODO: temporaty use uniqyBy, pls FIX model descriptor proper handling in ORM module
33
+ const tColumns = lodash_1.default.uniqBy(this.ModelDescriptor.Columns.filter((c) => c.Translate), 'Name');
34
+ const { query } = this.createUpdateQuery();
35
+ if (this.ModelDescriptor.Timestamps.UpdatedAt) {
36
+ this[this.ModelDescriptor.Timestamps.UpdatedAt] = new Date();
37
+ }
38
+ // update only non translated
39
+ const cToDehydrate = [this.PrimaryKeyName, ...tColumns.map((c) => c.Name)];
40
+ const dToUpdate = this.dehydrate(cToDehydrate);
41
+ if (Object.keys(dToUpdate).length !== 0) {
42
+ await query.update(dToUpdate).where(this.PrimaryKeyName, this.PrimaryKeyValue);
43
+ }
44
+ const translations = tColumns.map((c) => {
45
+ return new IntlResource_1.IntlResource({
46
+ ResourceId: this.PrimaryKeyValue,
47
+ Resource: this.constructor.name,
48
+ Column: c.Name,
49
+ Lang: this.Language,
50
+ Value: this[c.Name],
51
+ });
52
+ });
53
+ // update or insert translations to database
54
+ for (const t of translations) {
55
+ await t.insert(orm_1.InsertBehaviour.InsertOrUpdate);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ exports.IntlModelBase = IntlModelBase;
61
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;AAAA,sCAA0D;AAC1D,oDAAuB;AACvB,wDAAqD;AAErD,MAAa,aAAc,SAAQ,eAAS;IAG1C;;;;OAIG;IACI,KAAK,CAAC,SAAS,CAAC,IAAY;QACjC,MAAM,YAAY,GAAG,MAAM,2BAAY,CAAC,KAAK,CAAC;YAC5C,UAAU,EAAE,IAAI,CAAC,eAAe;YAChC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC/B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACzB,IAAY,CAAE,EAAU,CAAC,MAAM,CAAC,GAAI,EAAU,CAAC,KAAK,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;SACtB;aAAM;YACL,sFAAsF;YACtF,MAAM,QAAQ,GAAG,gBAAC,CAAC,MAAM,CACvB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACvD,MAAM,CACP,CAAC;YAEF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE3C,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE;gBAC5C,IAAY,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;aACvE;YAED,6BAA6B;YAC7B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAE/C,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvC,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;aAChF;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,OAAO,IAAI,2BAAY,CAAC;oBACtB,UAAU,EAAE,IAAI,CAAC,eAAe;oBAChC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;oBAC/B,MAAM,EAAE,CAAC,CAAC,IAAI;oBACd,IAAI,EAAE,IAAI,CAAC,QAAQ;oBACnB,KAAK,EAAG,IAAY,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC7B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,4CAA4C;YAC5C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,MAAM,CAAC,CAAC,MAAM,CAAC,qBAAe,CAAC,cAAc,CAAC,CAAC;aAChD;SACF;IACH,CAAC;CACF;AA9DD,sCA8DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spinajs/intl-orm",
3
- "version": "1.2.108",
3
+ "version": "1.2.118",
4
4
  "description": "Internationalization support for ORM module",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -41,15 +41,15 @@
41
41
  "@spinajs/configuration": "^1.2.81",
42
42
  "@spinajs/di": "^1.2.81",
43
43
  "@spinajs/exceptions": "^1.2.81",
44
- "@spinajs/intl": "^1.2.103",
44
+ "@spinajs/intl": "^1.2.112",
45
45
  "@spinajs/log": "^1.2.103",
46
- "@spinajs/orm": "^1.2.108",
46
+ "@spinajs/orm": "^1.2.118",
47
47
  "@spinajs/reflection": "^1.2.103",
48
48
  "luxon": "^2.4.0",
49
49
  "typescript-mix": "^3.1.3"
50
50
  },
51
51
  "devDependencies": {
52
- "@spinajs/orm-sqlite": "^1.2.108"
52
+ "@spinajs/orm-sqlite": "^1.2.118"
53
53
  },
54
- "gitHead": "81e996198a9d4dac8970f71181b0f5eaf6070918"
54
+ "gitHead": "d19c71703e92e7df2f5dba7f9729ad3dabbaaf80"
55
55
  }