@cheetah.js/orm 0.1.34 → 0.1.36

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.
@@ -1,4 +1,4 @@
1
- import { ValueObject } from './value-object';
1
+ import { ValueObject } from "./value-object";
2
2
  export declare class Email extends ValueObject<string, Email> {
3
3
  protected validate(value: string): boolean;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { ValueObject } from './value-object';
1
+ import { ValueObject } from "./value-object";
2
2
  const REGEX = /^[a-z0-9.]+@[a-z0-9]+\.[a-z]+(\.[a-z]+)?$/i;
3
3
  export class Email extends ValueObject {
4
4
  validate(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"email.vo.js","sourceRoot":"","sources":["../../src/common/email.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,KAAK,GAAG,4CAA4C,CAAC;AAE3D,MAAM,OAAO,KAAM,SAAQ,WAA0B;IAEzC,QAAQ,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"email.vo.js","sourceRoot":"","sources":["../../src/common/email.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,KAAK,GAAG,4CAA4C,CAAC;AAE3D,MAAM,OAAO,KAAM,SAAQ,WAA0B;IACzC,QAAQ,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF"}
@@ -1,4 +1,10 @@
1
1
  type VoExtended<T, Vo> = Vo extends ValueObject<T, Vo> ? Vo : ValueObject<T, Vo>;
2
+ type DatabaseValues = {
3
+ max?: number;
4
+ min?: number;
5
+ precision?: number;
6
+ scale?: number;
7
+ };
2
8
  export declare abstract class ValueObject<T, Vo> {
3
9
  /**
4
10
  * Validates the value of the Value Object.
@@ -9,6 +15,32 @@ export declare abstract class ValueObject<T, Vo> {
9
15
  * @protected
10
16
  */
11
17
  protected abstract validate(value: T): boolean;
18
+ /**
19
+ * The maximum length of the Value Object.
20
+ * It value is optional and will be used in database if this Value Object is used as a column.
21
+ * If the value is string, it will be the maximum number of characters.
22
+ * If the value is number, it will be the maximum number.
23
+ */
24
+ protected max?: number;
25
+ /**
26
+ * The minimum length of the Value Object.
27
+ * It value is optional.
28
+ * If the value is string, it will be the minimum number of characters.
29
+ * If the value is number, it will be the minimum number.
30
+ */
31
+ protected min?: number;
32
+ /**
33
+ * The precision of the Value Object.
34
+ * It value is optional and will be used in database if this Value Object is used as a column.
35
+ * It is the number of digits in a number.
36
+ */
37
+ protected precision?: number;
38
+ /**
39
+ * The scale of the Value Object.
40
+ * It value is optional and will be used in database if this Value Object is used as a column.
41
+ * It is the number of digits to the right of the decimal point in a number.
42
+ */
43
+ protected scale?: number;
12
44
  /**
13
45
  * Valor do Value Object.
14
46
  * É privado para não ser alterado diretamente.
@@ -17,7 +49,7 @@ export declare abstract class ValueObject<T, Vo> {
17
49
  * @private
18
50
  */
19
51
  private value;
20
- constructor(value: T);
52
+ constructor(value: T, skipValidation?: boolean);
21
53
  /**
22
54
  * Creates a Value Object instance from a value.
23
55
  *
@@ -38,6 +70,12 @@ export declare abstract class ValueObject<T, Vo> {
38
70
  * @param vo
39
71
  */
40
72
  equals(vo: ValueObject<T, Vo>): boolean;
73
+ /**
74
+ * Returns the database settings of the Value Object.
75
+ *
76
+ * @returns
77
+ */
78
+ getDatabaseValues(): DatabaseValues;
41
79
  /**
42
80
  * Sets the value of the Value Object.
43
81
  *
@@ -45,5 +83,13 @@ export declare abstract class ValueObject<T, Vo> {
45
83
  * @private
46
84
  */
47
85
  private setValue;
86
+ /**
87
+ * Validates the value of the Value Object.
88
+ * It is private so that it can only be called by the constructor.
89
+ *
90
+ * @param value
91
+ * @returns
92
+ */
93
+ private validateDatabase;
48
94
  }
49
95
  export {};
@@ -1,5 +1,31 @@
1
- import { HttpException } from '@cheetah.js/core';
1
+ import { HttpException } from "@cheetah.js/core";
2
2
  export class ValueObject {
3
+ /**
4
+ * The maximum length of the Value Object.
5
+ * It value is optional and will be used in database if this Value Object is used as a column.
6
+ * If the value is string, it will be the maximum number of characters.
7
+ * If the value is number, it will be the maximum number.
8
+ */
9
+ max;
10
+ /**
11
+ * The minimum length of the Value Object.
12
+ * It value is optional.
13
+ * If the value is string, it will be the minimum number of characters.
14
+ * If the value is number, it will be the minimum number.
15
+ */
16
+ min;
17
+ /**
18
+ * The precision of the Value Object.
19
+ * It value is optional and will be used in database if this Value Object is used as a column.
20
+ * It is the number of digits in a number.
21
+ */
22
+ precision;
23
+ /**
24
+ * The scale of the Value Object.
25
+ * It value is optional and will be used in database if this Value Object is used as a column.
26
+ * It is the number of digits to the right of the decimal point in a number.
27
+ */
28
+ scale;
3
29
  /**
4
30
  * Valor do Value Object.
5
31
  * É privado para não ser alterado diretamente.
@@ -8,8 +34,8 @@ export class ValueObject {
8
34
  * @private
9
35
  */
10
36
  value;
11
- constructor(value) {
12
- if (!this.validate(value)) {
37
+ constructor(value, skipValidation = false) {
38
+ if (!skipValidation && (!this.validate(value) || !this.validateDatabase(value))) {
13
39
  throw new HttpException(`Invalid value for ${this.constructor.name}`, 400);
14
40
  }
15
41
  this.setValue(value);
@@ -40,6 +66,19 @@ export class ValueObject {
40
66
  equals(vo) {
41
67
  return this.getValue() === vo.getValue();
42
68
  }
69
+ /**
70
+ * Returns the database settings of the Value Object.
71
+ *
72
+ * @returns
73
+ */
74
+ getDatabaseValues() {
75
+ return {
76
+ max: this.max,
77
+ min: this.min,
78
+ precision: this.precision,
79
+ scale: this.scale,
80
+ };
81
+ }
43
82
  /**
44
83
  * Sets the value of the Value Object.
45
84
  *
@@ -49,5 +88,43 @@ export class ValueObject {
49
88
  setValue(value) {
50
89
  this.value = value;
51
90
  }
91
+ /**
92
+ * Validates the value of the Value Object.
93
+ * It is private so that it can only be called by the constructor.
94
+ *
95
+ * @param value
96
+ * @returns
97
+ */
98
+ validateDatabase(value) {
99
+ if (typeof value === "string") {
100
+ if (this.max !== undefined && value.length > this.max) {
101
+ throw new HttpException(`Value exceeds maximum length of ${this.max}`, 400);
102
+ }
103
+ if (this.min !== undefined && value.length < this.min) {
104
+ throw new HttpException(`Value is less than minimum length of ${this.min}`, 400);
105
+ }
106
+ }
107
+ else if (typeof value === "number") {
108
+ if (this.max !== undefined && value > this.max) {
109
+ throw new HttpException(`Value exceeds maximum value of ${this.max}`, 400);
110
+ }
111
+ if (this.min !== undefined && value < this.min) {
112
+ throw new HttpException(`Value is less than minimum value of ${this.min}`, 400);
113
+ }
114
+ if (this.precision !== undefined) {
115
+ const totalDigits = value.toString().replace(".", "").length;
116
+ if (totalDigits > this.precision) {
117
+ throw new HttpException(`Value exceeds precision of ${this.precision}`, 400);
118
+ }
119
+ }
120
+ if (this.scale !== undefined) {
121
+ const decimalDigits = (value.toString().split(".")[1] || "").length;
122
+ if (decimalDigits > this.scale) {
123
+ throw new HttpException(`Value exceeds scale of ${this.scale}`, 400);
124
+ }
125
+ }
126
+ }
127
+ return true;
128
+ }
52
129
  }
53
130
  //# sourceMappingURL=value-object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-object.js","sourceRoot":"","sources":["../../src/common/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,MAAM,OAAgB,WAAW;IAW/B;;;;;;OAMG;IACK,KAAK,CAAI;IAEjB,YAAY,KAAQ;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,aAAa,CAAC,qBAAqB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SAC5E;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAET,KAAQ;QAER,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,EAAsB;QAClC,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,KAAQ;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"value-object.js","sourceRoot":"","sources":["../../src/common/value-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWjD,MAAM,OAAgB,WAAW;IAW/B;;;;;OAKG;IACO,GAAG,CAAU;IAEvB;;;;;OAKG;IACO,GAAG,CAAU;IAEvB;;;;OAIG;IACO,SAAS,CAAU;IAE7B;;;;OAIG;IACO,KAAK,CAAU;IAEzB;;;;;;OAMG;IACK,KAAK,CAAI;IAEjB,YAAY,KAAQ,EAAE,cAAc,GAAG,KAAK;QAC1C,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;YAC/E,MAAM,IAAI,aAAa,CAAC,qBAAqB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;SAC5E;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CAAmD,KAAQ;QACpE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,EAAsB;QAClC,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,iBAAiB;QACtB,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,KAAQ;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACK,gBAAgB,CAAI,KAAQ;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;gBACrD,MAAM,IAAI,aAAa,CAAC,mCAAmC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;aAC7E;YAED,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;gBACrD,MAAM,IAAI,aAAa,CAAC,wCAAwC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;aAClF;SACF;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;gBAC9C,MAAM,IAAI,aAAa,CAAC,kCAAkC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;aAC5E;YAED,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;gBAC9C,MAAM,IAAI,aAAa,CAAC,uCAAuC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;aACjF;YAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC7D,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;oBAChC,MAAM,IAAI,aAAa,CAAC,8BAA8B,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;iBAC9E;aACF;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;gBAC5B,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpE,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE;oBAC9B,MAAM,IAAI,aAAa,CAAC,0BAA0B,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;iBACtE;aACF;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -6,7 +6,9 @@ export type PropertyOptions = {
6
6
  hidden?: boolean;
7
7
  unique?: boolean;
8
8
  index?: boolean;
9
- dbType?: 'varchar' | 'text' | 'int' | 'bigint' | 'float' | 'double' | 'decimal' | 'date' | 'datetime' | 'time' | 'timestamp' | 'boolean' | 'json' | 'jsonb' | 'enum' | 'array' | 'uuid';
9
+ precision?: number;
10
+ scale?: number;
11
+ dbType?: "varchar" | "text" | "int" | "bigint" | "float" | "double" | "decimal" | "date" | "datetime" | "time" | "timestamp" | "boolean" | "json" | "jsonb" | "enum" | "array" | "uuid";
10
12
  autoIncrement?: boolean;
11
13
  columnName?: string;
12
14
  isEnum?: boolean;
@@ -1,20 +1,28 @@
1
- import { PROPERTIES, PROPERTIES_METADATA } from '../constants';
2
- import { getDefaultLength, toSnakeCase } from '../utils';
3
- import { Metadata } from '@cheetah.js/core';
4
- import { Index } from './index.decorator';
1
+ import { PROPERTIES, PROPERTIES_METADATA } from "../constants";
2
+ import { extendsFrom, getDefaultLength, toSnakeCase } from "../utils";
3
+ import { Metadata } from "@cheetah.js/core";
4
+ import { Index } from "./index.decorator";
5
+ import { ValueObject } from "..";
5
6
  export function Property(options) {
6
7
  return (target, propertyKey) => {
7
8
  const properties = Metadata.get(PROPERTIES, target.constructor) || [];
8
9
  const type = Metadata.getType(target, propertyKey);
9
10
  const length = (options && options.length) || getDefaultLength(type.name);
10
11
  options = { length, ...options };
11
- options['columnName'] = options?.columnName || toSnakeCase(propertyKey);
12
+ options["columnName"] = options?.columnName || toSnakeCase(propertyKey);
13
+ if (extendsFrom(ValueObject, type.prototype)) {
14
+ let instance = new type(null, true).getDatabaseValues();
15
+ options["length"] = instance.max;
16
+ options["precision"] = instance.precision;
17
+ options["scale"] = instance.scale;
18
+ instance = null; // Garbage collector
19
+ }
12
20
  properties.push({ propertyKey, options });
13
21
  Metadata.set(PROPERTIES, properties, target.constructor);
14
22
  if (options.isPrimary) {
15
- const indexes = Metadata.get('indexes', target.constructor) || [];
23
+ const indexes = Metadata.get("indexes", target.constructor) || [];
16
24
  indexes.push({ name: `[TABLE]_pkey`, properties: [propertyKey] });
17
- Metadata.set('indexes', indexes, target.constructor);
25
+ Metadata.set("indexes", indexes, target.constructor);
18
26
  }
19
27
  if (options.index) {
20
28
  Index({ properties: [propertyKey] })(target, propertyKey);
@@ -1 +1 @@
1
- {"version":3,"file":"property.decorator.js","sourceRoot":"","sources":["../../src/decorators/property.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAqB1C,MAAM,UAAU,QAAQ,CAAC,OAAyB;IAChD,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAW,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1E,OAAO,GAAG,EAAC,MAAM,EAAE,GAAG,OAAO,EAAC,CAAC;QAC/B,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,EAAE,UAAU,IAAI,WAAW,CAAC,WAAqB,CAAC,CAAC;QAClF,UAAU,CAAC,IAAI,CAAC,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,CAAC;QACxC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEzD,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,MAAM,OAAO,GAA2C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1G,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,WAAqB,CAAC,EAAC,CAAC,CAAC;YAC1E,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;SACtD;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,KAAK,CAAC,EAAC,UAAU,EAAE,CAAC,WAAqB,CAAC,EAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;SACnE;QAED,UAAU,CAAC,OAAO,CAAC,CAAC,QAAc,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC5D,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAC,CAAC;YAChE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"property.decorator.js","sourceRoot":"","sources":["../../src/decorators/property.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAwCjC,MAAM,UAAU,QAAQ,CAAC,OAAyB;IAChD,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAW,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1E,OAAO,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,EAAE,UAAU,IAAI,WAAW,CAAC,WAAqB,CAAC,CAAC;QAElF,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;YAC5C,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;YACxD,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;YACjC,OAAO,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,CAAC,oBAAoB;SACtC;QAED,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEzD,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,MAAM,OAAO,GAA6C,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC5G,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,WAAqB,CAAC,EAAE,CAAC,CAAC;YAC5E,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;SACtD;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC,WAAqB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;SACrE;QAED,UAAU,CAAC,OAAO,CAAC,CAAC,QAAc,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1E,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC5D,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;YAClE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- import { PropertyOptions } from '../decorators/property.decorator';
2
- import { Relationship, SnapshotIndexInfo, SnapshotTable } from '../driver/driver.interface';
1
+ import { PropertyOptions } from "../decorators/property.decorator";
2
+ import { Relationship, SnapshotIndexInfo, SnapshotTable } from "../driver/driver.interface";
3
3
  export type Property = {
4
4
  options: PropertyOptions;
5
5
  type: Function;
@@ -8,8 +8,8 @@ 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
10
  var EntityStorage_1;
11
- import { Metadata, Service } from '@cheetah.js/core';
12
- import { getDefaultLength, toSnakeCase } from '../utils';
11
+ import { Metadata, Service } from "@cheetah.js/core";
12
+ import { getDefaultLength, toSnakeCase } from "../utils";
13
13
  let EntityStorage = class EntityStorage {
14
14
  static { EntityStorage_1 = this; }
15
15
  static instance;
@@ -19,16 +19,18 @@ let EntityStorage = class EntityStorage {
19
19
  }
20
20
  add(entity, properties, relations, hooks) {
21
21
  const entityName = entity.options?.tableName || toSnakeCase(entity.target.name);
22
- const indexes = Metadata.get('indexes', entity.target) || [];
22
+ const indexes = Metadata.get("indexes", entity.target) || [];
23
23
  this.entities.set(entity.target, {
24
24
  properties: properties,
25
- hideProperties: Object.entries(properties).filter(([key, value]) => value.options.hidden).map(([key]) => key),
25
+ hideProperties: Object.entries(properties)
26
+ .filter(([key, value]) => value.options.hidden)
27
+ .map(([key]) => key),
26
28
  relations,
27
29
  indexes: indexes.map((index) => {
28
30
  return {
29
31
  table: entityName,
30
- indexName: index.name.replace('[TABLE]', entityName),
31
- columnName: index.properties.join(','),
32
+ indexName: index.name.replace("[TABLE]", entityName),
33
+ columnName: index.properties.join(","),
32
34
  };
33
35
  }),
34
36
  hooks,
@@ -48,7 +50,7 @@ let EntityStorage = class EntityStorage {
48
50
  async snapshot(values) {
49
51
  return {
50
52
  tableName: values.tableName,
51
- schema: values.schema || 'public',
53
+ schema: values.schema || "public",
52
54
  indexes: values.indexes || [],
53
55
  columns: this.snapshotColumns(values),
54
56
  };
@@ -65,29 +67,34 @@ let EntityStorage = class EntityStorage {
65
67
  unique: value.options?.unique,
66
68
  length: value.options?.length,
67
69
  isEnum: value.options?.isEnum,
70
+ precision: value.options?.precision,
71
+ scale: value.options?.scale,
68
72
  enumItems: value.options?.enumItems,
69
73
  };
70
74
  });
71
75
  // @ts-ignore
72
- let relations = values.relations && values.relations.map((relation) => {
73
- const type = this.getFkType(relation);
74
- return {
75
- name: relation.columnName,
76
- type,
77
- nullable: relation.nullable,
78
- unique: relation.unique,
79
- length: relation.length || getDefaultLength(type),
80
- default: relation.default,
81
- autoIncrement: this.getFkIncrement(relation),
82
- primary: relation.isPrimary,
83
- foreignKeys: [
84
- {
85
- referencedColumnName: this.getFkKey(relation),
86
- referencedTableName: this.get(relation.entity()).tableName,
87
- },
88
- ],
89
- };
90
- });
76
+ let relations = values.relations &&
77
+ values.relations.map((relation) => {
78
+ const type = this.getFkType(relation);
79
+ return {
80
+ name: relation.columnName,
81
+ type,
82
+ nullable: relation.nullable,
83
+ unique: relation.unique,
84
+ length: relation.length || getDefaultLength(type),
85
+ default: relation.default,
86
+ autoIncrement: this.getFkIncrement(relation),
87
+ primary: relation.isPrimary,
88
+ precision: relation.precision,
89
+ scale: relation.scale,
90
+ foreignKeys: [
91
+ {
92
+ referencedColumnName: this.getFkKey(relation),
93
+ referencedTableName: this.get(relation.entity()).tableName,
94
+ },
95
+ ],
96
+ };
97
+ });
91
98
  if (!relations) {
92
99
  relations = [];
93
100
  }
@@ -108,14 +115,14 @@ let EntityStorage = class EntityStorage {
108
115
  getFkType(relation) {
109
116
  const entity = this.get(relation.entity());
110
117
  if (!entity) {
111
- return 'unknown';
118
+ return "unknown";
112
119
  }
113
120
  return entity.properties[this.getFkKey(relation)].type.name;
114
121
  }
115
122
  getFkIncrement(relation) {
116
123
  const entity = this.get(relation.entity());
117
124
  if (!entity) {
118
- return 'unknown';
125
+ return "unknown";
119
126
  }
120
127
  return entity.properties[this.getFkKey(relation)].options.autoIncrement;
121
128
  }
@@ -126,7 +133,7 @@ let EntityStorage = class EntityStorage {
126
133
  */
127
134
  getFkKey(relationShip) {
128
135
  // se for nullable, deverá retornar o primary key da entidade target
129
- if (typeof relationShip.fkKey === 'undefined') {
136
+ if (typeof relationShip.fkKey === "undefined") {
130
137
  const entity = this.entities.get(relationShip.entity());
131
138
  const property = Object.entries(entity.properties).find(([key, value]) => value.options.isPrimary === true);
132
139
  if (!property) {
@@ -136,11 +143,11 @@ let EntityStorage = class EntityStorage {
136
143
  }
137
144
  // se o fkKey é uma função, ele retornará a propriedade da entidade que é a chave estrangeira
138
145
  // precisamos pegar o nome dessa propriedade
139
- if (typeof relationShip.fkKey === 'string') {
146
+ if (typeof relationShip.fkKey === "string") {
140
147
  return relationShip.fkKey;
141
148
  }
142
149
  const match = /\.(?<propriedade>[\w]+)/.exec(relationShip.fkKey.toString());
143
- return match ? match.groups.propriedade : '';
150
+ return match ? match.groups.propriedade : "";
144
151
  }
145
152
  };
146
153
  EntityStorage = EntityStorage_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/domain/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/domain/entities.ts"],"names":[],"mappings":"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"}
@@ -158,6 +158,8 @@ export type ColumnsInfo = {
158
158
  autoIncrement?: boolean;
159
159
  length?: number;
160
160
  isEnum?: boolean;
161
+ precision?: number;
162
+ scale?: number;
161
163
  enumItems?: string[] | number[];
162
164
  foreignKeys?: ForeignKeyInfo[];
163
165
  };
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from './decorators/event-hook.decorator';
7
7
  export * from './orm';
8
8
  export * from './orm.service';
9
9
  export * from './domain/base-entity';
10
+ export { EntityStorage, Options as EntityOptions, Property as EntityProperty } from './domain/entities';
10
11
  export * from './driver/pg-driver';
11
12
  export * from './utils';
12
13
  export * from './driver/driver.interface';
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ export * from './decorators/event-hook.decorator';
7
7
  export * from './orm';
8
8
  export * from './orm.service';
9
9
  export * from './domain/base-entity';
10
+ export { EntityStorage } from './domain/entities';
10
11
  export * from './driver/pg-driver';
11
12
  export * from './utils';
12
13
  export * from './driver/driver.interface';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA;AACvB,cAAc,2BAA2B,CAAA;AACzC,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,OAAO,CAAA;AACrB,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,aAAa,EAAwD,MAAM,mBAAmB,CAAA;AACvG,cAAc,oBAAoB,CAAA;AAClC,cAAc,SAAS,CAAA;AACvB,cAAc,2BAA2B,CAAA;AACzC,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,sBAAsB,CAAA"}
package/dist/utils.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export declare function getDefaultLength(type: string): number;
2
2
  export declare function toSnakeCase(propertyKey1: string): string;
3
+ export declare function extendsFrom(baseClass: any, instance: any): boolean;
package/dist/utils.js CHANGED
@@ -5,4 +5,16 @@ export function toSnakeCase(propertyKey1) {
5
5
  propertyKey1 = propertyKey1[0].toLowerCase() + propertyKey1.slice(1);
6
6
  return propertyKey1.replace(/([A-Z])/g, '_$1').toLowerCase();
7
7
  }
8
+ export function extendsFrom(baseClass, instance) {
9
+ if (!instance)
10
+ return false;
11
+ let proto = Object.getPrototypeOf(instance);
12
+ while (proto) {
13
+ if (proto === baseClass.prototype) {
14
+ return true;
15
+ }
16
+ proto = Object.getPrototypeOf(proto);
17
+ }
18
+ return false;
19
+ }
8
20
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC9C,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC9C,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAErE,OAAO,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAS,EAAE,QAAQ;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,KAAK,EAAE;QACZ,IAAI,KAAK,KAAK,SAAS,CAAC,SAAS,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACtC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cheetah.js/orm",
3
- "version": "0.1.34",
3
+ "version": "0.1.36",
4
4
  "description": "A simple ORM for Cheetah.js",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",