@simonbackx/simple-database 1.34.0 → 1.36.0

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 (166) hide show
  1. package/dist/cjs/index.d.ts +10 -0
  2. package/dist/cjs/index.d.ts.map +1 -0
  3. package/dist/cjs/index.js +13 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/package.json +1 -0
  6. package/dist/{src → cjs/src}/classes/Column.d.ts +3 -2
  7. package/dist/cjs/src/classes/Column.d.ts.map +1 -0
  8. package/dist/{src → cjs/src}/classes/Column.js +21 -8
  9. package/dist/cjs/src/classes/Column.js.map +1 -0
  10. package/dist/cjs/src/classes/ColumnType.d.ts +2 -0
  11. package/dist/cjs/src/classes/ColumnType.d.ts.map +1 -0
  12. package/dist/cjs/src/classes/ColumnType.js +3 -0
  13. package/dist/cjs/src/classes/ColumnType.js.map +1 -0
  14. package/dist/{src → cjs/src}/classes/Database.d.ts +2 -1
  15. package/dist/cjs/src/classes/Database.d.ts.map +1 -0
  16. package/dist/{src → cjs/src}/classes/Database.js +19 -20
  17. package/dist/cjs/src/classes/Database.js.map +1 -0
  18. package/dist/cjs/src/classes/DatabaseStoredValue.d.ts +2 -0
  19. package/dist/cjs/src/classes/DatabaseStoredValue.d.ts.map +1 -0
  20. package/dist/cjs/src/classes/DatabaseStoredValue.js +3 -0
  21. package/dist/cjs/src/classes/DatabaseStoredValue.js.map +1 -0
  22. package/dist/{src → cjs/src}/classes/Factory.d.ts +1 -0
  23. package/dist/cjs/src/classes/Factory.d.ts.map +1 -0
  24. package/dist/{src → cjs/src}/classes/Factory.js +8 -7
  25. package/dist/cjs/src/classes/Factory.js.map +1 -0
  26. package/dist/{src → cjs/src}/classes/ManyToManyRelation.d.ts +4 -3
  27. package/dist/cjs/src/classes/ManyToManyRelation.d.ts.map +1 -0
  28. package/dist/{src → cjs/src}/classes/ManyToManyRelation.js +29 -18
  29. package/dist/cjs/src/classes/ManyToManyRelation.js.map +1 -0
  30. package/dist/{src → cjs/src}/classes/ManyToOneRelation.d.ts +2 -1
  31. package/dist/cjs/src/classes/ManyToOneRelation.d.ts.map +1 -0
  32. package/dist/{src → cjs/src}/classes/ManyToOneRelation.js +11 -2
  33. package/dist/cjs/src/classes/ManyToOneRelation.js.map +1 -0
  34. package/dist/{src → cjs/src}/classes/Migration.d.ts +2 -0
  35. package/dist/cjs/src/classes/Migration.d.ts.map +1 -0
  36. package/dist/{src → cjs/src}/classes/Migration.js +64 -17
  37. package/dist/cjs/src/classes/Migration.js.map +1 -0
  38. package/dist/{src → cjs/src}/classes/Model.d.ts +17 -6
  39. package/dist/cjs/src/classes/Model.d.ts.map +1 -0
  40. package/dist/{src → cjs/src}/classes/Model.js +83 -33
  41. package/dist/cjs/src/classes/Model.js.map +1 -0
  42. package/dist/{src → cjs/src}/classes/OneToManyRelation.d.ts +2 -1
  43. package/dist/cjs/src/classes/OneToManyRelation.d.ts.map +1 -0
  44. package/dist/{src → cjs/src}/classes/OneToManyRelation.js +17 -3
  45. package/dist/cjs/src/classes/OneToManyRelation.js.map +1 -0
  46. package/dist/{src → cjs/src}/classes/data/boys.d.ts +1 -0
  47. package/dist/cjs/src/classes/data/boys.d.ts.map +1 -0
  48. package/dist/cjs/src/classes/data/boys.js.map +1 -0
  49. package/dist/cjs/src/classes/data/family-names.d.ts +3 -0
  50. package/dist/cjs/src/classes/data/family-names.d.ts.map +1 -0
  51. package/dist/cjs/src/classes/data/family-names.js.map +1 -0
  52. package/dist/{src → cjs/src}/classes/data/girls.d.ts +1 -0
  53. package/dist/cjs/src/classes/data/girls.d.ts.map +1 -0
  54. package/dist/cjs/src/classes/data/girls.js.map +1 -0
  55. package/dist/cjs/src/classes/data/streets.d.ts +3 -0
  56. package/dist/cjs/src/classes/data/streets.d.ts.map +1 -0
  57. package/dist/cjs/src/classes/data/streets.js.map +1 -0
  58. package/dist/{src → cjs/src}/decorators/Column.d.ts +4 -3
  59. package/dist/cjs/src/decorators/Column.d.ts.map +1 -0
  60. package/dist/{src → cjs/src}/decorators/Column.js +3 -4
  61. package/dist/cjs/src/decorators/Column.js.map +1 -0
  62. package/dist/{src → cjs/src}/models/Migration.d.ts +2 -1
  63. package/dist/cjs/src/models/Migration.d.ts.map +1 -0
  64. package/dist/{src → cjs/src}/models/Migration.js +14 -15
  65. package/dist/cjs/src/models/Migration.js.map +1 -0
  66. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  67. package/dist/esm/index.d.ts +10 -0
  68. package/dist/esm/index.d.ts.map +1 -0
  69. package/dist/esm/index.js +10 -0
  70. package/dist/esm/index.js.map +1 -0
  71. package/dist/esm/src/classes/Column.d.ts +30 -0
  72. package/dist/esm/src/classes/Column.d.ts.map +1 -0
  73. package/dist/esm/src/classes/Column.js +179 -0
  74. package/dist/esm/src/classes/Column.js.map +1 -0
  75. package/dist/esm/src/classes/ColumnType.d.ts +2 -0
  76. package/dist/esm/src/classes/ColumnType.d.ts.map +1 -0
  77. package/dist/esm/src/classes/ColumnType.js +2 -0
  78. package/dist/esm/src/classes/ColumnType.js.map +1 -0
  79. package/dist/esm/src/classes/Database.d.ts +59 -0
  80. package/dist/esm/src/classes/Database.d.ts.map +1 -0
  81. package/dist/esm/src/classes/Database.js +171 -0
  82. package/dist/esm/src/classes/Database.js.map +1 -0
  83. package/dist/esm/src/classes/DatabaseStoredValue.d.ts +2 -0
  84. package/dist/esm/src/classes/DatabaseStoredValue.d.ts.map +1 -0
  85. package/dist/esm/src/classes/DatabaseStoredValue.js +2 -0
  86. package/dist/esm/src/classes/DatabaseStoredValue.js.map +1 -0
  87. package/dist/esm/src/classes/Factory.d.ts +14 -0
  88. package/dist/esm/src/classes/Factory.d.ts.map +1 -0
  89. package/dist/esm/src/classes/Factory.js +51 -0
  90. package/dist/esm/src/classes/Factory.js.map +1 -0
  91. package/dist/esm/src/classes/ManyToManyRelation.d.ts +79 -0
  92. package/dist/esm/src/classes/ManyToManyRelation.d.ts.map +1 -0
  93. package/dist/esm/src/classes/ManyToManyRelation.js +254 -0
  94. package/dist/esm/src/classes/ManyToManyRelation.js.map +1 -0
  95. package/dist/esm/src/classes/ManyToOneRelation.d.ts +22 -0
  96. package/dist/esm/src/classes/ManyToOneRelation.d.ts.map +1 -0
  97. package/dist/esm/src/classes/ManyToOneRelation.js +47 -0
  98. package/dist/esm/src/classes/ManyToOneRelation.js.map +1 -0
  99. package/dist/esm/src/classes/Migration.d.ts +14 -0
  100. package/dist/esm/src/classes/Migration.d.ts.map +1 -0
  101. package/dist/esm/src/classes/Migration.js +168 -0
  102. package/dist/esm/src/classes/Migration.js.map +1 -0
  103. package/dist/esm/src/classes/Model.d.ts +159 -0
  104. package/dist/esm/src/classes/Model.d.ts.map +1 -0
  105. package/dist/esm/src/classes/Model.js +635 -0
  106. package/dist/esm/src/classes/Model.js.map +1 -0
  107. package/dist/esm/src/classes/OneToManyRelation.d.ts +38 -0
  108. package/dist/esm/src/classes/OneToManyRelation.d.ts.map +1 -0
  109. package/dist/esm/src/classes/OneToManyRelation.js +75 -0
  110. package/dist/esm/src/classes/OneToManyRelation.js.map +1 -0
  111. package/dist/{src/classes/data/family-names.d.ts → esm/src/classes/data/boys.d.ts} +1 -0
  112. package/dist/esm/src/classes/data/boys.d.ts.map +1 -0
  113. package/dist/esm/src/classes/data/boys.js +1003 -0
  114. package/dist/{src → esm/src}/classes/data/boys.js.map +1 -1
  115. package/dist/esm/src/classes/data/family-names.d.ts +3 -0
  116. package/dist/esm/src/classes/data/family-names.d.ts.map +1 -0
  117. package/dist/esm/src/classes/data/family-names.js +1003 -0
  118. package/dist/{src → esm/src}/classes/data/family-names.js.map +1 -1
  119. package/dist/{src/classes/data/streets.d.ts → esm/src/classes/data/girls.d.ts} +1 -0
  120. package/dist/esm/src/classes/data/girls.d.ts.map +1 -0
  121. package/dist/esm/src/classes/data/girls.js +1002 -0
  122. package/dist/{src → esm/src}/classes/data/girls.js.map +1 -1
  123. package/dist/esm/src/classes/data/streets.d.ts +3 -0
  124. package/dist/esm/src/classes/data/streets.d.ts.map +1 -0
  125. package/dist/esm/src/classes/data/streets.js +294 -0
  126. package/dist/{src → esm/src}/classes/data/streets.js.map +1 -1
  127. package/dist/esm/src/decorators/Column.d.ts +18 -0
  128. package/dist/esm/src/decorators/Column.d.ts.map +1 -0
  129. package/dist/esm/src/decorators/Column.js +36 -0
  130. package/dist/esm/src/decorators/Column.js.map +1 -0
  131. package/dist/esm/src/models/Migration.d.ts +11 -0
  132. package/dist/esm/src/models/Migration.d.ts.map +1 -0
  133. package/dist/esm/src/models/Migration.js +48 -0
  134. package/dist/esm/src/models/Migration.js.map +1 -0
  135. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  136. package/package.json +52 -36
  137. package/dist/index.d.ts +0 -9
  138. package/dist/index.js +0 -13
  139. package/dist/index.js.map +0 -1
  140. package/dist/migrations.d.ts +0 -1
  141. package/dist/migrations.js +0 -18
  142. package/dist/migrations.js.map +0 -1
  143. package/dist/src/classes/Column.js.map +0 -1
  144. package/dist/src/classes/Database.js.map +0 -1
  145. package/dist/src/classes/Factory.js.map +0 -1
  146. package/dist/src/classes/ManyToManyRelation.js.map +0 -1
  147. package/dist/src/classes/ManyToOneRelation.js.map +0 -1
  148. package/dist/src/classes/Migration.js.map +0 -1
  149. package/dist/src/classes/Model.js.map +0 -1
  150. package/dist/src/classes/Model.test.d.ts +0 -1
  151. package/dist/src/classes/Model.test.js +0 -629
  152. package/dist/src/classes/Model.test.js.map +0 -1
  153. package/dist/src/classes/OneToManyRelation.js.map +0 -1
  154. package/dist/src/decorators/Column.js.map +0 -1
  155. package/dist/src/models/Migration.js.map +0 -1
  156. package/dist/tests/jest.global.setup.d.ts +0 -3
  157. package/dist/tests/jest.global.setup.js +0 -12
  158. package/dist/tests/jest.global.setup.js.map +0 -1
  159. package/dist/tests/jest.setup.d.ts +0 -1
  160. package/dist/tests/jest.setup.js +0 -8
  161. package/dist/tests/jest.setup.js.map +0 -1
  162. /package/dist/{src → cjs/src}/classes/data/boys.js +0 -0
  163. /package/dist/{src → cjs/src}/classes/data/family-names.js +0 -0
  164. /package/dist/{src → cjs/src}/classes/data/girls.js +0 -0
  165. /package/dist/{src → cjs/src}/classes/data/streets.js +0 -0
  166. /package/{dist/src/migrations → migrations}/000000000-setup-migrations.sql +0 -0
@@ -0,0 +1,179 @@
1
+ import { EncodeMedium, encodeObject, ObjectData } from '@simonbackx/simple-encoding';
2
+ export class Column {
3
+ type;
4
+ name;
5
+ nullable = false;
6
+ primary = false;
7
+ /**
8
+ * Do not save the model if this is the only field that has changed
9
+ */
10
+ skipUpdate = false;
11
+ decoder;
12
+ beforeSave;
13
+ // Allow handling of new fields etc
14
+ beforeLoad;
15
+ static jsonVersion = 0;
16
+ /**
17
+ * Set the version used for JSON encoding in simple-encoding
18
+ */
19
+ static setJSONVersion(version) {
20
+ Column.jsonVersion = version;
21
+ }
22
+ constructor(type, name) {
23
+ this.type = type;
24
+ this.name = name;
25
+ }
26
+ /**
27
+ * @deprecated use to instead
28
+ */
29
+ saveProperty(data) {
30
+ return this.to(data);
31
+ }
32
+ isChanged(old, now) {
33
+ if (old instanceof Date) {
34
+ if (now instanceof Date) {
35
+ return old.getTime() !== now.getTime();
36
+ }
37
+ return true;
38
+ }
39
+ return now !== old;
40
+ }
41
+ /// Convert from database to javascript
42
+ from(data) {
43
+ if (this.beforeLoad) {
44
+ data = this.beforeLoad(data);
45
+ }
46
+ if (this.nullable && data === null) {
47
+ return null;
48
+ }
49
+ if (!this.nullable && data === null) {
50
+ throw new Error('Received null value from database. Expected a non-nullable value for ' + this.name);
51
+ }
52
+ switch (this.type) {
53
+ case 'integer':
54
+ // Mapped correctly by MySQL
55
+ if (!Number.isInteger(data)) {
56
+ throw new Error('Expected integer');
57
+ }
58
+ return data;
59
+ case 'number':
60
+ // Mapped correctly by MySQL
61
+ if (Number.isNaN(data)) {
62
+ throw new Error('Expected number');
63
+ }
64
+ return data;
65
+ case 'string':
66
+ return data;
67
+ case 'boolean':
68
+ // Mapped correctly by MySQL
69
+ if (data !== 1 && data !== 0) {
70
+ throw new Error('Expected boolean');
71
+ }
72
+ return data === 1;
73
+ case 'date':
74
+ // Correctly mapped by node MySQL
75
+ return data;
76
+ case 'datetime':
77
+ // Mapped correctly by node MySQL
78
+ return data;
79
+ case 'json': {
80
+ if (typeof data !== 'string') {
81
+ throw new Error('Expected string for JSON column');
82
+ }
83
+ // Mapped correctly by node MySQL
84
+ let parsed;
85
+ try {
86
+ parsed = JSON.parse(data);
87
+ }
88
+ catch (e) {
89
+ // Syntax error. Mark this in the future.
90
+ console.error(e);
91
+ parsed = {};
92
+ }
93
+ if (this.decoder) {
94
+ if (this.decoder.decodeField) {
95
+ if (typeof parsed === 'object' && parsed !== null && 'value' in parsed && typeof parsed.version === 'number') {
96
+ return this.decoder.decodeField(parsed.value, { version: parsed.version, medium: EncodeMedium.Database }, this.name);
97
+ }
98
+ // Fallback decoding without version (since we don't know the saved version)
99
+ return this.decoder.decodeField(parsed, { version: 0, medium: EncodeMedium.Database }, this.name);
100
+ }
101
+ if (typeof parsed === 'object' && parsed !== null && 'version' in parsed && 'value' in parsed && typeof parsed.version === 'number') {
102
+ return this.decoder.decode(new ObjectData(parsed.value, { version: parsed.version, medium: EncodeMedium.Database }, this.name));
103
+ }
104
+ // Fallback decoding without version (since we don't know the saved version)
105
+ return this.decoder.decode(new ObjectData(parsed, { version: 0, medium: EncodeMedium.Database }, this.name));
106
+ }
107
+ else {
108
+ console.warn('It is recommended to always use a decoder for JSON columns');
109
+ }
110
+ if (typeof parsed === 'object' && parsed !== null && 'version' in parsed && 'value' in parsed && typeof parsed.version === 'number') {
111
+ return parsed.value;
112
+ }
113
+ // If data comes from before version encoding, fall back to parsed
114
+ return parsed;
115
+ }
116
+ default: {
117
+ // If we get a compile error heres, a type is missing in the switch
118
+ const t = this.type;
119
+ throw new Error('Type ' + t + ' not supported');
120
+ }
121
+ }
122
+ }
123
+ /// Convert to database from javascript
124
+ to(data) {
125
+ if (this.nullable && data === null) {
126
+ return null;
127
+ }
128
+ if (!this.nullable && data === null) {
129
+ throw new Error('Tried to set null to non-nullable value. Expected a non-nullable value');
130
+ }
131
+ switch (this.type) {
132
+ case 'integer':
133
+ // Mapped correctly by MySQL
134
+ if (typeof data !== 'number') {
135
+ throw new Error('Expected integer for ' + this.name + ', received ' + (typeof data));
136
+ }
137
+ return data;
138
+ case 'number':
139
+ if (typeof data !== 'number') {
140
+ throw new Error('Expected number for ' + this.name + ', received ' + (typeof data));
141
+ }
142
+ // Mapped correctly by node MySQL
143
+ return data;
144
+ case 'string':
145
+ if (typeof data !== 'string') {
146
+ throw new Error('Expected string for ' + this.name + ', received ' + (typeof data));
147
+ }
148
+ return data;
149
+ case 'boolean':
150
+ if (typeof data !== 'boolean') {
151
+ throw new Error('Expected boolean for ' + this.name + ', received ' + (typeof data));
152
+ }
153
+ return data ? 1 : 0;
154
+ case 'date':
155
+ case 'datetime':
156
+ if (!(data instanceof Date)) {
157
+ throw new Error('Expected Date for ' + this.name + ', received ' + (typeof data));
158
+ }
159
+ // This information cannot be stored in the database - so also update it in JS to keep it in sync
160
+ data.setMilliseconds(0);
161
+ // Correctly mapped by node MySQL
162
+ return data;
163
+ case 'json': {
164
+ const version = Column.jsonVersion;
165
+ return JSON.stringify({
166
+ // Warning: keys should be sorted or they will get marked as changed every time
167
+ value: encodeObject(data, { version, medium: EncodeMedium.Database }),
168
+ version: version,
169
+ });
170
+ }
171
+ default: {
172
+ // If we get a compile error heres, a type is missing in the switch
173
+ const t = this.type;
174
+ throw new Error('Type ' + t + ' not supported');
175
+ }
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=Column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Column.js","sourceRoot":"","sources":["../../../../src/classes/Column.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type ColumnType = 'integer' | 'number' | 'string' | 'date' | 'datetime' | 'boolean' | 'json';
2
+ //# sourceMappingURL=ColumnType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnType.d.ts","sourceRoot":"","sources":["../../../../src/classes/ColumnType.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ColumnType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnType.js","sourceRoot":"","sources":["../../../../src/classes/ColumnType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import mysql from 'mysql2/promise';
2
+ import { type DatabaseStoredValue } from './DatabaseStoredValue.js';
3
+ export type SQLResultRow = Record<string, DatabaseStoredValue>;
4
+ export type SQLResultNamespacedRow = Record<string, SQLResultRow>;
5
+ type SelectOptions = {
6
+ connection?: mysql.PoolConnection;
7
+ nestTables?: boolean;
8
+ };
9
+ export type PoolOptions = {
10
+ debug?: boolean;
11
+ host?: string;
12
+ user?: string;
13
+ password?: string;
14
+ port?: number;
15
+ database?: string | null;
16
+ connectionLimit?: number;
17
+ multipleStatements?: boolean;
18
+ charset?: string;
19
+ useSSL?: boolean;
20
+ ca?: string;
21
+ };
22
+ export declare class DatabaseInstance {
23
+ pool: mysql.Pool;
24
+ debug: boolean;
25
+ constructor(options?: PoolOptions);
26
+ createPool(options?: PoolOptions): void;
27
+ reload(options?: PoolOptions): Promise<void>;
28
+ setDebug(enabled?: boolean): void;
29
+ getConnection(): Promise<mysql.PoolConnection>;
30
+ escapeId(value: string): string;
31
+ end(): Promise<void>;
32
+ startQuery(): [number, number];
33
+ logQuery(q: any, hrstart: [number, number]): void;
34
+ finishQuery(q: any, hrstart: [number, number]): void;
35
+ select(query: string, values?: any, options?: SelectOptions & {
36
+ nestTables: true;
37
+ }): Promise<[SQLResultNamespacedRow[], mysql.FieldPacket[] | undefined]>;
38
+ select(query: string, values?: any, options?: SelectOptions & {
39
+ nestTables: false;
40
+ }): Promise<[SQLResultRow[], mysql.FieldPacket[] | undefined]>;
41
+ insert(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
42
+ insertId: any;
43
+ affectedRows: number;
44
+ }, mysql.FieldPacket[] | undefined]>;
45
+ update(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[
46
+ {
47
+ changedRows: number;
48
+ affectedRows: number;
49
+ },
50
+ mysql.FieldPacket[] | undefined
51
+ ]>;
52
+ delete(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[{
53
+ affectedRows: number;
54
+ }, mysql.FieldPacket[] | undefined]>;
55
+ statement(query: string, values?: any, useConnection?: mysql.PoolConnection): Promise<[any, any]>;
56
+ }
57
+ export declare const Database: DatabaseInstance;
58
+ export {};
59
+ //# sourceMappingURL=Database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../../src/classes/Database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ import fs from 'fs';
2
+ import mysql from 'mysql2/promise';
3
+ /// Database is a wrapper arround mysql, because we want to use promises + types
4
+ export class DatabaseInstance {
5
+ pool;
6
+ debug = false;
7
+ constructor(options = {}) {
8
+ this.createPool(options);
9
+ }
10
+ createPool(options = {}) {
11
+ const settings = {
12
+ host: options.host ?? process.env.DB_HOST ?? 'localhost',
13
+ user: options.user ?? process.env.DB_USER ?? 'root',
14
+ password: options.password ?? process.env.DB_PASS ?? 'root',
15
+ port: options.port ? options.port : parseInt(process.env.DB_PORT ?? '3306'),
16
+ database: options.database === undefined ? process.env.DB_DATABASE : options.database,
17
+ connectionLimit: options.connectionLimit ? options.connectionLimit : parseInt(process.env.DB_CONNECTION_LIMIT ?? '10'),
18
+ multipleStatements: options.multipleStatements ?? ((process.env.DB_MULTIPLE_STATEMENTS ?? 'true') === 'true'),
19
+ charset: options.charset ?? process.env.DB_CHARSET ?? 'utf8mb4_0900_ai_ci',
20
+ useSSL: options.useSSL ?? !!process.env.DB_USE_SSL,
21
+ ca: options.ca ?? process.env.DB_CA,
22
+ };
23
+ if (settings.database === undefined) {
24
+ throw new Error('Environment variable DB_DATABASE is missing');
25
+ }
26
+ this.pool = mysql.createPool({
27
+ host: settings.host,
28
+ user: settings.user,
29
+ password: settings.password,
30
+ port: settings.port,
31
+ database: settings.database ?? undefined,
32
+ waitForConnections: true,
33
+ connectionLimit: settings.connectionLimit,
34
+ queueLimit: 0,
35
+ multipleStatements: settings.multipleStatements,
36
+ charset: settings.charset,
37
+ decimalNumbers: true,
38
+ jsonStrings: true,
39
+ ssl: settings.useSSL
40
+ ? {
41
+ ca: settings.ca ? fs.readFileSync(settings.ca) : undefined,
42
+ rejectUnauthorized: settings.ca ? true : false,
43
+ }
44
+ : undefined,
45
+ });
46
+ this.debug = options?.debug ?? false;
47
+ if (this.debug) {
48
+ this.pool.on('acquire', function (connection) {
49
+ console.log('Connection %d acquired', connection.threadId);
50
+ });
51
+ this.pool.on('connection', function (connection) {
52
+ console.log('Connection %d created', connection.threadId);
53
+ });
54
+ this.pool.on('enqueue', function () {
55
+ console.log('Waiting for available connection slot');
56
+ });
57
+ this.pool.on('release', function (connection) {
58
+ console.log('Connection %d released', connection.threadId);
59
+ });
60
+ }
61
+ }
62
+ async reload(options = {}) {
63
+ await this.pool.end();
64
+ this.createPool(options);
65
+ }
66
+ setDebug(enabled = true) {
67
+ this.debug = enabled;
68
+ }
69
+ async getConnection() {
70
+ // Todo: use the settings here to provide a good connection pool
71
+ return await this.pool.getConnection();
72
+ }
73
+ escapeId(value) {
74
+ return this.pool.escapeId(value);
75
+ }
76
+ async end() {
77
+ return await this.pool.end();
78
+ }
79
+ startQuery() {
80
+ return process.hrtime();
81
+ }
82
+ logQuery(q, hrstart) {
83
+ if (this.debug) {
84
+ const hrend = process.hrtime(hrstart);
85
+ console.warn(q.sql.replace(/\n+ +/g, '\n'), 'started at ' + (hrend[0] * 1000 + hrend[1] / 1000000) + 'ms');
86
+ }
87
+ }
88
+ finishQuery(q, hrstart) {
89
+ if (this.debug) {
90
+ const hrend = process.hrtime(hrstart);
91
+ console.log(q.sql.replace(/\s+/g, ' '), 'in ' + (hrend[0] * 1000 + hrend[1] / 1000000) + 'ms');
92
+ }
93
+ }
94
+ async select(query, values, options = {}) {
95
+ const connection = options.connection ?? (await this.getConnection());
96
+ try {
97
+ const q = await connection.query({ sql: query, nestTables: options.nestTables ?? true, values: values });
98
+ return [
99
+ q[0],
100
+ q[1],
101
+ ];
102
+ }
103
+ finally {
104
+ if (!options.connection) {
105
+ connection.release();
106
+ }
107
+ }
108
+ }
109
+ async insert(query, values, useConnection) {
110
+ const connection = useConnection ?? (await this.getConnection());
111
+ try {
112
+ const q = await connection.query({ sql: query, values: values });
113
+ return [
114
+ q[0],
115
+ q[1],
116
+ ];
117
+ }
118
+ finally {
119
+ if (!useConnection) {
120
+ connection.release();
121
+ }
122
+ }
123
+ }
124
+ async update(query, values, useConnection) {
125
+ const connection = useConnection ?? (await this.getConnection());
126
+ try {
127
+ const q = await connection.query({ sql: query, values: values });
128
+ return [
129
+ q[0],
130
+ q[1],
131
+ ];
132
+ }
133
+ finally {
134
+ if (!useConnection) {
135
+ connection.release();
136
+ }
137
+ }
138
+ }
139
+ async delete(query, values, useConnection) {
140
+ const connection = useConnection ?? (await this.getConnection());
141
+ try {
142
+ const q = await connection.query({ sql: query, values: values });
143
+ return [
144
+ q[0],
145
+ q[1],
146
+ ];
147
+ }
148
+ finally {
149
+ if (!useConnection) {
150
+ connection.release();
151
+ }
152
+ }
153
+ }
154
+ async statement(query, values, useConnection) {
155
+ const connection = useConnection ?? (await this.getConnection());
156
+ try {
157
+ const q = await connection.query({ sql: query, values: values });
158
+ return [
159
+ q[0],
160
+ q[1],
161
+ ];
162
+ }
163
+ finally {
164
+ if (!useConnection) {
165
+ connection.release();
166
+ }
167
+ }
168
+ }
169
+ }
170
+ export const Database = new DatabaseInstance();
171
+ //# sourceMappingURL=Database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Database.js","sourceRoot":"","sources":["../../../../src/classes/Database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type DatabaseStoredValue = string | number | Date | null;
2
+ //# sourceMappingURL=DatabaseStoredValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseStoredValue.d.ts","sourceRoot":"","sources":["../../../../src/classes/DatabaseStoredValue.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DatabaseStoredValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseStoredValue.js","sourceRoot":"","sources":["../../../../src/classes/DatabaseStoredValue.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ export declare abstract class Factory<Options, Model> {
2
+ options: Options;
3
+ constructor(options: Options);
4
+ abstract create(): Promise<Model>;
5
+ randomArray(arr: Array<any>): any;
6
+ randomEnum<E extends {
7
+ [key: number]: string | number;
8
+ }>(e: E): E[keyof E];
9
+ randomString(length: number): string;
10
+ randomFirstName(gender: 'Male' | 'Female' | 'Other'): string;
11
+ randomLastName(): string;
12
+ createMultiple(amount?: number): Promise<Model[]>;
13
+ }
14
+ //# sourceMappingURL=Factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Factory.d.ts","sourceRoot":"","sources":["../../../../src/classes/Factory.ts"],"names":[],"mappings":"AAIA,8BAAsB,OAAO,CAAC,OAAO,EAAE,KAAK;IACxC,OAAO,EAAE,OAAO,CAAC;gBACL,OAAO,EAAE,OAAO;IAG5B,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;IAEjC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG;IAKjC,UAAU,CAAC,CAAC,SAAS;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAI1E,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAUpC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM;IAgB5D,cAAc,IAAI,MAAM;IAIlB,cAAc,CAAC,MAAM,SAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAOtD"}
@@ -0,0 +1,51 @@
1
+ import BoyNames from './data/boys.js';
2
+ import FamilyNames from './data/family-names.js';
3
+ import GirlNames from './data/girls.js';
4
+ export class Factory {
5
+ options;
6
+ constructor(options) {
7
+ this.options = options;
8
+ }
9
+ randomArray(arr) {
10
+ const int = Math.floor(Math.random() * arr.length);
11
+ return arr[int];
12
+ }
13
+ randomEnum(e) {
14
+ return this.randomArray(Object.values(e));
15
+ }
16
+ randomString(length) {
17
+ let result = '';
18
+ const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
19
+ const charactersLength = characters.length;
20
+ for (let i = 0; i < length; i++) {
21
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
22
+ }
23
+ return result;
24
+ }
25
+ randomFirstName(gender) {
26
+ let names;
27
+ switch (gender) {
28
+ case 'Male':
29
+ names = BoyNames;
30
+ break;
31
+ case 'Female':
32
+ names = GirlNames;
33
+ break;
34
+ case 'Other':
35
+ names = [...BoyNames, ...GirlNames];
36
+ break;
37
+ }
38
+ return this.randomArray(names);
39
+ }
40
+ randomLastName() {
41
+ return this.randomArray(FamilyNames);
42
+ }
43
+ async createMultiple(amount = 40) {
44
+ const arr = [];
45
+ for (let index = 0; index < amount; index++) {
46
+ arr.push(await this.create());
47
+ }
48
+ return arr;
49
+ }
50
+ }
51
+ //# sourceMappingURL=Factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Factory.js","sourceRoot":"","sources":["../../../../src/classes/Factory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,SAAS,MAAM,iBAAiB,CAAC;AAExC,MAAM,OAAgB,OAAO;IACzB,OAAO,CAAU;IACjB,YAAY,OAAgB;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAGD,WAAW,CAAC,GAAe;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,UAAU,CAA+C,CAAI;QACzD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,MAAc;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,gEAAgE,CAAC;QACpF,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,eAAe,CAAC,MAAmC;QAC/C,IAAI,KAAe,CAAC;QACpB,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,MAAM;gBACP,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM;YACV,KAAK,QAAQ;gBACT,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACV,KAAK,OAAO;gBACR,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;gBACpC,MAAM;QACd,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAY,EAAE,CAAC;QACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
@@ -0,0 +1,79 @@
1
+ import { Model } from './Model.js';
2
+ export declare class ManyToManyRelation<Key extends keyof any, A extends Model, B extends Model, Link extends Model | undefined = undefined> {
3
+ modelA: {
4
+ new (): A;
5
+ } & typeof Model;
6
+ modelB: {
7
+ new (): B;
8
+ } & typeof Model;
9
+ modelLink?: {
10
+ new (): Link;
11
+ } & typeof Model;
12
+ /**
13
+ * E.g. parents
14
+ */
15
+ modelKey: Key;
16
+ /**
17
+ * Sort the loading of this relation
18
+ */
19
+ sortKey: string | undefined;
20
+ sortOrder: 'ASC' | 'DESC';
21
+ /**
22
+ * E.g. _models_parents
23
+ */
24
+ get linkTable(): string;
25
+ /**
26
+ * e.g. modelsId
27
+ */
28
+ get linkKeyA(): string;
29
+ /**
30
+ * e.g. parentsId
31
+ */
32
+ get linkKeyB(): string;
33
+ constructor(modelA: {
34
+ new (): A;
35
+ } & typeof Model, modelB: {
36
+ new (): B;
37
+ } & typeof Model, modelKey: Key, modelLink?: {
38
+ new (): Link;
39
+ } & typeof Model);
40
+ reverse<Key2 extends keyof any>(modelKey: Key2): ManyToManyRelation<Key2, B, A, Link>;
41
+ setSort(key: string, order?: 'ASC' | 'DESC'): this;
42
+ joinQuery(namespaceA: string, namespaceB: string): string;
43
+ orderByQuery(namespaceA: string, namespaceB: string): string;
44
+ load(modelA: A, sorted?: boolean, where?: object, whereLink?: object): Promise<(B & {
45
+ _link: Link;
46
+ })[]>;
47
+ isLoaded<T extends A>(model: T): model is T & Record<Key, B[]>;
48
+ setLinkTable(modelA: A, modelB: B, linkTableValues: {
49
+ [key: string]: any;
50
+ }): Promise<void>;
51
+ linkIds(modelA: string | number, modelsB: (string | number)[], linkTableValues?: {
52
+ [key: string]: any[];
53
+ }): Promise<number>;
54
+ link(modelA: A, modelsB: B[], linkTableValues?: {
55
+ [key: string]: any[];
56
+ }): Promise<void>;
57
+ /**
58
+ * Delete all the links from modelA for this relation
59
+ * @param modelA
60
+ */
61
+ clearId(modelA: string | number): Promise<void>;
62
+ /**
63
+ * Delete all the links from modelA for this relation
64
+ * @param modelA
65
+ */
66
+ clear(modelA: A): Promise<void>;
67
+ /**
68
+ * Delete all the links from modelA for this relation
69
+ * @param modelA
70
+ */
71
+ syncId(modelA: string | number, modelsB: (string | number)[], linkTableValues?: {
72
+ [key: string]: any[];
73
+ }): Promise<void>;
74
+ unlinkIds(modelA: string | number, ...modelsB: (string | number)[]): Promise<{
75
+ affectedRows: number;
76
+ }>;
77
+ unlink(modelA: A, ...modelsB: B[]): Promise<void>;
78
+ }
79
+ //# sourceMappingURL=ManyToManyRelation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManyToManyRelation.d.ts","sourceRoot":"","sources":["../../../../src/classes/ManyToManyRelation.ts"],"names":[],"mappings":"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"}