tspace-mysql 1.8.2 → 1.8.4

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.
Files changed (83) hide show
  1. package/README.md +443 -68
  2. package/build/cli/generate/model.js +3 -3
  3. package/build/cli/generate/model.js.map +1 -1
  4. package/build/lib/constants/index.d.ts +7 -1
  5. package/build/lib/constants/index.js +7 -1
  6. package/build/lib/constants/index.js.map +1 -1
  7. package/build/lib/core/Abstracts/AbstractBuilder.d.ts +1 -1
  8. package/build/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
  9. package/build/lib/core/Abstracts/AbstractDB.d.ts +2 -2
  10. package/build/lib/core/Abstracts/AbstractDB.js.map +1 -1
  11. package/build/lib/core/Abstracts/AbstractView.d.ts +10 -0
  12. package/build/lib/core/Abstracts/AbstractView.js +9 -0
  13. package/build/lib/core/Abstracts/AbstractView.js.map +1 -0
  14. package/build/lib/core/Blueprint.d.ts +24 -4
  15. package/build/lib/core/Blueprint.js +78 -87
  16. package/build/lib/core/Blueprint.js.map +1 -1
  17. package/build/lib/core/Builder.d.ts +39 -30
  18. package/build/lib/core/Builder.js +1094 -1044
  19. package/build/lib/core/Builder.js.map +1 -1
  20. package/build/lib/core/Cache/DBCache.js +15 -16
  21. package/build/lib/core/Cache/DBCache.js.map +1 -1
  22. package/build/lib/core/DB.d.ts +38 -38
  23. package/build/lib/core/DB.js +119 -115
  24. package/build/lib/core/DB.js.map +1 -1
  25. package/build/lib/core/Decorator.d.ts +1 -1
  26. package/build/lib/core/Decorator.js.map +1 -1
  27. package/build/lib/core/Handlers/Relation.d.ts +2 -1
  28. package/build/lib/core/Handlers/Relation.js +60 -15
  29. package/build/lib/core/Handlers/Relation.js.map +1 -1
  30. package/build/lib/core/Handlers/State.d.ts +1 -0
  31. package/build/lib/core/Handlers/State.js +1 -1
  32. package/build/lib/core/Handlers/State.js.map +1 -1
  33. package/build/lib/core/JoinModel.d.ts +1 -1
  34. package/build/lib/core/JoinModel.js.map +1 -1
  35. package/build/lib/core/Meta.d.ts +55 -0
  36. package/build/lib/core/Meta.js +175 -0
  37. package/build/lib/core/Meta.js.map +1 -0
  38. package/build/lib/core/Model.d.ts +158 -94
  39. package/build/lib/core/Model.js +1586 -1203
  40. package/build/lib/core/Model.js.map +1 -1
  41. package/build/lib/core/Nest/index.d.ts +3 -1
  42. package/build/lib/core/Nest/index.js +4 -2
  43. package/build/lib/core/Nest/index.js.map +1 -1
  44. package/build/lib/{connection/index.d.ts → core/Pool.d.ts} +2 -1
  45. package/build/lib/{connection/index.js → core/Pool.js} +74 -6
  46. package/build/lib/core/Pool.js.map +1 -0
  47. package/build/lib/core/Repository.d.ts +16 -16
  48. package/build/lib/core/Repository.js +73 -45
  49. package/build/lib/core/Repository.js.map +1 -1
  50. package/build/lib/core/Schema.d.ts +2 -2
  51. package/build/lib/core/Schema.js +113 -78
  52. package/build/lib/core/Schema.js.map +1 -1
  53. package/build/lib/core/SqlLike.js.map +1 -1
  54. package/build/lib/core/StoredProcedure.d.ts +120 -0
  55. package/build/lib/core/StoredProcedure.js +161 -0
  56. package/build/lib/core/StoredProcedure.js.map +1 -0
  57. package/build/lib/core/UtilityTypes.d.ts +25 -44
  58. package/build/lib/core/View.d.ts +96 -0
  59. package/build/lib/core/View.js +141 -0
  60. package/build/lib/core/View.js.map +1 -0
  61. package/build/lib/core/index.d.ts +17 -12
  62. package/build/lib/core/index.js +9 -4
  63. package/build/lib/core/index.js.map +1 -1
  64. package/build/lib/types/index.d.ts +23 -3
  65. package/build/lib/utils/index.js +5 -2
  66. package/build/lib/utils/index.js.map +1 -1
  67. package/build/tests/01-Pool.test.js +0 -10
  68. package/build/tests/01-Pool.test.js.map +1 -1
  69. package/build/tests/04-Model-pattern.test.js +1 -1
  70. package/build/tests/04-Model-pattern.test.js.map +1 -1
  71. package/build/tests/05-View.test.d.ts +1 -0
  72. package/build/tests/05-View.test.js +83 -0
  73. package/build/tests/05-View.test.js.map +1 -0
  74. package/build/tests/06-Meta.test.d.ts +1 -0
  75. package/build/tests/06-Meta.test.js +103 -0
  76. package/build/tests/06-Meta.test.js.map +1 -0
  77. package/build/tests/07-Virtual-column.test.d.ts +1 -0
  78. package/build/tests/07-Virtual-column.test.js +160 -0
  79. package/build/tests/07-Virtual-column.test.js.map +1 -0
  80. package/build/tests/schema-spec.js +25 -25
  81. package/build/tests/schema-spec.js.map +1 -1
  82. package/package.json +1 -1
  83. package/build/lib/connection/index.js.map +0 -1
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Meta = void 0;
4
+ class ModelMeta {
5
+ constructor(model) {
6
+ this.model = model;
7
+ }
8
+ table() {
9
+ return this.model.toTableName();
10
+ }
11
+ column(column) {
12
+ return column;
13
+ }
14
+ columnReference(column) {
15
+ return `\`${this.table()}\`.\`${String(column)}\``;
16
+ }
17
+ columnRef(column) {
18
+ return this.columnReference(column);
19
+ }
20
+ columns() {
21
+ const schemaModel = this.model.getSchemaModel();
22
+ const columns = schemaModel == null
23
+ ? []
24
+ : Object.entries(schemaModel).map(([key]) => {
25
+ return key;
26
+ });
27
+ return columns;
28
+ }
29
+ hasColumn(name) {
30
+ const schemaModel = this.model.getSchemaModel();
31
+ const columns = schemaModel == null
32
+ ? []
33
+ : Object.entries(schemaModel).map(([key]) => {
34
+ return key;
35
+ });
36
+ return columns.includes(name);
37
+ }
38
+ primaryKey() {
39
+ var _a;
40
+ const schemaModel = this.model.getSchemaModel();
41
+ if (schemaModel == null)
42
+ return undefined;
43
+ return (_a = Object
44
+ .entries(schemaModel)
45
+ .find(([key, blueprint]) => {
46
+ const attr = blueprint['_attributes'];
47
+ if (Array.from(attr).includes(this.model['$constants']('PRIMARY_KEY'))) {
48
+ return key;
49
+ }
50
+ return undefined;
51
+ })) === null || _a === void 0 ? void 0 : _a[0];
52
+ }
53
+ indexes() {
54
+ const schemaModel = this.model.getSchemaModel();
55
+ if (schemaModel == null)
56
+ return [];
57
+ return Object
58
+ .entries(schemaModel)
59
+ .map(([key, blueprint]) => {
60
+ const index = blueprint['_index'];
61
+ if (index == null)
62
+ return undefined;
63
+ if (index === '')
64
+ return `unknown_index_${key}`;
65
+ return index;
66
+ })
67
+ .filter(v => v != null);
68
+ }
69
+ nullable() {
70
+ const schemaModel = this.model.getSchemaModel();
71
+ if (schemaModel == null)
72
+ return [];
73
+ return Object
74
+ .entries(schemaModel)
75
+ .map(([key, blueprint]) => {
76
+ const attr = blueprint['_attributes'];
77
+ if (Array.from(attr).includes(this.model['$constants']('NULL'))) {
78
+ return key;
79
+ }
80
+ return undefined;
81
+ })
82
+ .filter(v => v != null);
83
+ }
84
+ defaults() {
85
+ var _a, _b;
86
+ const schemaModel = this.model.getSchemaModel();
87
+ if (schemaModel == null)
88
+ return null;
89
+ const out = {};
90
+ const keyword = this.model['$constants']('DEFAULT');
91
+ for (const [key, blueprint] of Object.entries(schemaModel)) {
92
+ const attr = blueprint['_attributes'];
93
+ if (!attr)
94
+ continue;
95
+ const defaultAttr = Array.from(attr).find(str => str.includes(keyword));
96
+ if (!defaultAttr)
97
+ continue;
98
+ const value = (_b = (_a = defaultAttr.match(new RegExp(`${keyword}\\s+'(.*?)'`))) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : null;
99
+ out[key] = value;
100
+ }
101
+ if (!Object.keys(out).length)
102
+ return null;
103
+ return out;
104
+ }
105
+ columnTypeOf(column) {
106
+ const schemaModel = this.model.getSchemaModel();
107
+ if (!schemaModel)
108
+ return undefined;
109
+ const entry = Object.entries(schemaModel).find(([key]) => key === column);
110
+ if (!entry)
111
+ return undefined;
112
+ const blueprint = entry[1];
113
+ const value = blueprint['_valueType'];
114
+ if (value === Number)
115
+ return "number";
116
+ if (value === String)
117
+ return "string";
118
+ if (value === Boolean)
119
+ return "boolean";
120
+ if (value === Date)
121
+ return "date";
122
+ return "unknown";
123
+ }
124
+ columnType(column) {
125
+ const schemaModel = this.model.getSchemaModel();
126
+ if (!schemaModel)
127
+ return undefined;
128
+ const entry = Object.entries(schemaModel).find(([key]) => key === column);
129
+ if (!entry)
130
+ return undefined;
131
+ const blueprint = entry[1];
132
+ return blueprint['_type'];
133
+ }
134
+ }
135
+ /**
136
+ * The 'Meta' used to get the metadata of a Model works only when a schema is added to the Model.
137
+ *
138
+ * @example
139
+ * import { Meta } from 'tspace-mysql';
140
+ * import { User } from './Model/User';
141
+ *
142
+ * const meta = Meta(User)
143
+ * // --- get metadata of User ---
144
+ * const table = meta.table()
145
+ * const column = meta.column('id')
146
+ * const columnRef = meta.columnReference('id')
147
+ * const columnTypeOf = meta.columnTypeOf('id')
148
+ * const columnType = meta.columnType('id')
149
+ * const columns = meta.columns()
150
+ * const hasColumn = meta.hasColumn('id')
151
+ * const primaryKey = meta.primaryKey()
152
+ * const indexes = meta.indexes()
153
+ * const nullable = meta.nullable()
154
+ * const defaults = meta.defaults()
155
+ *
156
+ * console.log({
157
+ * table,
158
+ * column,
159
+ * columnRef
160
+ * columnTypeOf,
161
+ * columnType
162
+ * columns,
163
+ * hasColumn,
164
+ * primaryKey,
165
+ * indexes,
166
+ * nullable,
167
+ * defaults,
168
+ * })
169
+ */
170
+ const Meta = (model) => {
171
+ return new ModelMeta(new model());
172
+ };
173
+ exports.Meta = Meta;
174
+ exports.default = Meta;
175
+ //# sourceMappingURL=Meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meta.js","sourceRoot":"","sources":["../../../src/lib/core/Meta.ts"],"names":[],"mappings":"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"}