@simonbackx/simple-database 1.25.0 → 1.27.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.
- package/dist/index.d.ts +9 -9
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +1 -1
- package/dist/migrations.js +6 -4
- package/dist/migrations.js.map +1 -1
- package/dist/src/classes/Column.d.ts +10 -6
- package/dist/src/classes/Column.js +62 -31
- package/dist/src/classes/Column.js.map +1 -1
- package/dist/src/classes/Database.d.ts +3 -2
- package/dist/src/classes/Database.js +26 -27
- package/dist/src/classes/Database.js.map +1 -1
- package/dist/src/classes/Factory.d.ts +1 -1
- package/dist/src/classes/Factory.js +5 -5
- package/dist/src/classes/ManyToManyRelation.d.ts +3 -3
- package/dist/src/classes/ManyToManyRelation.js +51 -51
- package/dist/src/classes/ManyToManyRelation.js.map +1 -1
- package/dist/src/classes/ManyToOneRelation.d.ts +1 -1
- package/dist/src/classes/ManyToOneRelation.js +2 -2
- package/dist/src/classes/ManyToOneRelation.js.map +1 -1
- package/dist/src/classes/Migration.js +19 -19
- package/dist/src/classes/Migration.js.map +1 -1
- package/dist/src/classes/Model.d.ts +41 -10
- package/dist/src/classes/Model.js +132 -80
- package/dist/src/classes/Model.js.map +1 -1
- package/dist/src/classes/Model.test.js +144 -144
- package/dist/src/classes/Model.test.js.map +1 -1
- package/dist/src/classes/OneToManyRelation.d.ts +3 -3
- package/dist/src/classes/OneToManyRelation.js +9 -9
- package/dist/src/classes/OneToManyRelation.js.map +1 -1
- package/dist/src/classes/data/boys.js +1000 -1000
- package/dist/src/classes/data/family-names.js +997 -997
- package/dist/src/classes/data/girls.js +999 -999
- package/dist/src/classes/data/streets.js +291 -291
- package/dist/src/decorators/Column.d.ts +4 -4
- package/dist/src/decorators/Column.js +1 -1
- package/dist/src/decorators/Column.js.map +1 -1
- package/dist/src/models/Migration.d.ts +1 -1
- package/dist/src/models/Migration.js +8 -8
- package/dist/src/models/Migration.js.map +1 -1
- package/dist/tests/jest.global.setup.d.ts +1 -0
- package/dist/tests/jest.global.setup.js +5 -3
- package/dist/tests/jest.global.setup.js.map +1 -1
- package/package.json +6 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
1
|
+
export * from './src/classes/Database';
|
|
2
|
+
export * from './src/classes/Factory';
|
|
3
|
+
export * from './src/classes/ManyToManyRelation';
|
|
4
|
+
export * from './src/classes/ManyToOneRelation';
|
|
5
|
+
export * from './src/classes/OneToManyRelation';
|
|
6
|
+
export * from './src/classes/Migration';
|
|
7
|
+
export * from './src/classes/Model';
|
|
8
|
+
export * from './src/decorators/Column';
|
|
9
|
+
export * from './src/classes/Column';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,gEAAsC;AACtC,2EAAiD;AACjD,0EAAgD;AAChD,0EAAgD;AAChD,kEAAwC;AACxC,8DAAoC;AACpC,kEAAwC;AACxC,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,gEAAsC;AACtC,2EAAiD;AACjD,0EAAgD;AAChD,0EAAgD;AAChD,kEAAwC;AACxC,8DAAoC;AACpC,kEAAwC;AACxC,+DAAqC"}
|
package/dist/migrations.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import 'dotenv/config';
|
package/dist/migrations.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
// First dotenv
|
|
4
|
+
require("dotenv/config");
|
|
5
|
+
// Continue
|
|
4
6
|
const Migration_1 = require("./src/classes/Migration");
|
|
5
7
|
const start = async () => {
|
|
6
|
-
await Migration_1.Migration.runAll(__dirname +
|
|
8
|
+
await Migration_1.Migration.runAll(__dirname + '/src/migrations');
|
|
7
9
|
};
|
|
8
10
|
start()
|
|
9
|
-
.catch(error => {
|
|
10
|
-
console.error(
|
|
11
|
+
.catch((error) => {
|
|
12
|
+
console.error('unhandledRejection', error);
|
|
11
13
|
process.exit(1);
|
|
12
14
|
})
|
|
13
15
|
.finally(() => {
|
package/dist/migrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../migrations.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../migrations.ts"],"names":[],"mappings":";;AAAA,eAAe;AACf,yBAAuB;AAEvB,WAAW;AACX,uDAAoD;AAEpD,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACrB,MAAM,qBAAS,CAAC,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,KAAK,EAAE;KACF,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;KACD,OAAO,CAAC,GAAG,EAAE;IACV,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Decoder } from
|
|
2
|
-
import { ColumnType } from
|
|
1
|
+
import { Decoder } from '@simonbackx/simple-encoding';
|
|
2
|
+
import { ColumnType } from '../decorators/Column';
|
|
3
|
+
export type DatabaseStoredValue = string | number | Date | null;
|
|
3
4
|
export declare class Column {
|
|
4
5
|
type: ColumnType;
|
|
5
6
|
name: string;
|
|
@@ -18,8 +19,11 @@ export declare class Column {
|
|
|
18
19
|
*/
|
|
19
20
|
static setJSONVersion(version: number): void;
|
|
20
21
|
constructor(type: ColumnType, name: string);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated use to instead
|
|
24
|
+
*/
|
|
25
|
+
saveProperty(data: unknown): DatabaseStoredValue;
|
|
26
|
+
isChanged(old: DatabaseStoredValue, now: DatabaseStoredValue): boolean;
|
|
27
|
+
from(data: DatabaseStoredValue): unknown;
|
|
28
|
+
to(data: unknown): DatabaseStoredValue;
|
|
25
29
|
}
|
|
@@ -19,11 +19,20 @@ class Column {
|
|
|
19
19
|
this.type = type;
|
|
20
20
|
this.name = name;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated use to instead
|
|
24
|
+
*/
|
|
22
25
|
saveProperty(data) {
|
|
23
26
|
return this.to(data);
|
|
24
27
|
}
|
|
25
28
|
isChanged(old, now) {
|
|
26
|
-
|
|
29
|
+
if (old instanceof Date) {
|
|
30
|
+
if (now instanceof Date) {
|
|
31
|
+
return old.getTime() !== now.getTime();
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return now !== old;
|
|
27
36
|
}
|
|
28
37
|
/// Convert from database to javascript
|
|
29
38
|
from(data) {
|
|
@@ -34,36 +43,39 @@ class Column {
|
|
|
34
43
|
return null;
|
|
35
44
|
}
|
|
36
45
|
if (!this.nullable && data === null) {
|
|
37
|
-
throw new Error(
|
|
46
|
+
throw new Error('Received null value from database. Expected a non-nullable value for ' + this.name);
|
|
38
47
|
}
|
|
39
48
|
switch (this.type) {
|
|
40
|
-
case
|
|
49
|
+
case 'integer':
|
|
41
50
|
// Mapped correctly by MySQL
|
|
42
51
|
if (!Number.isInteger(data)) {
|
|
43
|
-
throw new Error(
|
|
52
|
+
throw new Error('Expected integer');
|
|
44
53
|
}
|
|
45
54
|
return data;
|
|
46
|
-
case
|
|
55
|
+
case 'number':
|
|
47
56
|
// Mapped correctly by MySQL
|
|
48
57
|
if (Number.isNaN(data)) {
|
|
49
|
-
throw new Error(
|
|
58
|
+
throw new Error('Expected number');
|
|
50
59
|
}
|
|
51
60
|
return data;
|
|
52
|
-
case
|
|
61
|
+
case 'string':
|
|
53
62
|
return data;
|
|
54
|
-
case
|
|
63
|
+
case 'boolean':
|
|
55
64
|
// Mapped correctly by MySQL
|
|
56
65
|
if (data !== 1 && data !== 0) {
|
|
57
|
-
throw new Error(
|
|
66
|
+
throw new Error('Expected boolean');
|
|
58
67
|
}
|
|
59
68
|
return data === 1;
|
|
60
|
-
case
|
|
69
|
+
case 'date':
|
|
61
70
|
// Correctly mapped by node MySQL
|
|
62
71
|
return data;
|
|
63
|
-
case
|
|
72
|
+
case 'datetime':
|
|
64
73
|
// Mapped correctly by node MySQL
|
|
65
74
|
return data;
|
|
66
|
-
case
|
|
75
|
+
case 'json': {
|
|
76
|
+
if (typeof data !== 'string') {
|
|
77
|
+
throw new Error('Expected string for JSON column');
|
|
78
|
+
}
|
|
67
79
|
// Mapped correctly by node MySQL
|
|
68
80
|
let parsed;
|
|
69
81
|
try {
|
|
@@ -75,22 +87,25 @@ class Column {
|
|
|
75
87
|
parsed = {};
|
|
76
88
|
}
|
|
77
89
|
if (this.decoder) {
|
|
78
|
-
if (parsed
|
|
79
|
-
|
|
80
|
-
return this.decoder.decode(new simple_encoding_1.ObjectData(parsed, { version: 0 }, this.name));
|
|
90
|
+
if (typeof parsed === 'object' && parsed !== null && 'version' in parsed && 'value' in parsed && typeof parsed.version === 'number') {
|
|
91
|
+
return this.decoder.decode(new simple_encoding_1.ObjectData(parsed.value, { version: parsed.version }, this.name));
|
|
81
92
|
}
|
|
82
|
-
|
|
93
|
+
// Fallback decoding without version (since we don't know the saved version)
|
|
94
|
+
return this.decoder.decode(new simple_encoding_1.ObjectData(parsed, { version: 0 }, this.name));
|
|
83
95
|
}
|
|
84
96
|
else {
|
|
85
|
-
console.warn(
|
|
97
|
+
console.warn('It is recommended to always use a decoder for JSON columns');
|
|
98
|
+
}
|
|
99
|
+
if (typeof parsed === 'object' && parsed !== null && 'version' in parsed && 'value' in parsed && typeof parsed.version === 'number') {
|
|
100
|
+
return parsed.value;
|
|
86
101
|
}
|
|
87
102
|
// If data comes from before version encoding, fall back to parsed
|
|
88
|
-
return parsed
|
|
103
|
+
return parsed;
|
|
89
104
|
}
|
|
90
105
|
default: {
|
|
91
106
|
// If we get a compile error heres, a type is missing in the switch
|
|
92
107
|
const t = this.type;
|
|
93
|
-
throw new Error(
|
|
108
|
+
throw new Error('Type ' + t + ' not supported');
|
|
94
109
|
}
|
|
95
110
|
}
|
|
96
111
|
}
|
|
@@ -100,36 +115,52 @@ class Column {
|
|
|
100
115
|
return null;
|
|
101
116
|
}
|
|
102
117
|
if (!this.nullable && data === null) {
|
|
103
|
-
throw new Error(
|
|
118
|
+
throw new Error('Tried to set null to non-nullable value. Expected a non-nullable value');
|
|
104
119
|
}
|
|
105
120
|
switch (this.type) {
|
|
106
|
-
case
|
|
121
|
+
case 'integer':
|
|
107
122
|
// Mapped correctly by MySQL
|
|
123
|
+
if (typeof data !== 'number') {
|
|
124
|
+
throw new Error('Expected integer for ' + this.name + ', received ' + (typeof data));
|
|
125
|
+
}
|
|
108
126
|
return data;
|
|
109
|
-
case
|
|
127
|
+
case 'number':
|
|
128
|
+
if (typeof data !== 'number') {
|
|
129
|
+
throw new Error('Expected number for ' + this.name + ', received ' + (typeof data));
|
|
130
|
+
}
|
|
110
131
|
// Mapped correctly by node MySQL
|
|
111
132
|
return data;
|
|
112
|
-
case
|
|
133
|
+
case 'string':
|
|
134
|
+
if (typeof data !== 'string') {
|
|
135
|
+
throw new Error('Expected string for ' + this.name + ', received ' + (typeof data));
|
|
136
|
+
}
|
|
113
137
|
return data;
|
|
114
|
-
case
|
|
138
|
+
case 'boolean':
|
|
139
|
+
if (typeof data !== 'boolean') {
|
|
140
|
+
throw new Error('Expected boolean for ' + this.name + ', received ' + (typeof data));
|
|
141
|
+
}
|
|
115
142
|
return data ? 1 : 0;
|
|
116
|
-
case
|
|
143
|
+
case 'date':
|
|
144
|
+
case 'datetime':
|
|
145
|
+
if (!(data instanceof Date)) {
|
|
146
|
+
throw new Error('Expected Date for ' + this.name + ', received ' + (typeof data));
|
|
147
|
+
}
|
|
148
|
+
// This information cannot be stored in the database - so also update it in JS to keep it in sync
|
|
149
|
+
data.setMilliseconds(0);
|
|
117
150
|
// Correctly mapped by node MySQL
|
|
118
151
|
return data;
|
|
119
|
-
case
|
|
120
|
-
// Mapped correctly by node MySQL
|
|
121
|
-
return data;
|
|
122
|
-
case "json": {
|
|
152
|
+
case 'json': {
|
|
123
153
|
const version = Column.jsonVersion;
|
|
124
154
|
return JSON.stringify({
|
|
125
|
-
|
|
155
|
+
// Warning: keys should be sorted or they will get marked as changed every time
|
|
126
156
|
value: (0, simple_encoding_1.encodeObject)(data, { version }),
|
|
157
|
+
version: version,
|
|
127
158
|
});
|
|
128
159
|
}
|
|
129
160
|
default: {
|
|
130
161
|
// If we get a compile error heres, a type is missing in the switch
|
|
131
162
|
const t = this.type;
|
|
132
|
-
throw new Error(
|
|
163
|
+
throw new Error('Type ' + t + ' not supported');
|
|
133
164
|
}
|
|
134
165
|
}
|
|
135
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Column.js","sourceRoot":"","sources":["../../../src/classes/Column.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Column.js","sourceRoot":"","sources":["../../../src/classes/Column.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import mysql from
|
|
2
|
-
|
|
1
|
+
import mysql from 'mysql';
|
|
2
|
+
import { DatabaseStoredValue } from './Column';
|
|
3
|
+
export type SQLResultRow = Record<string, DatabaseStoredValue>;
|
|
3
4
|
export type SQLResultNamespacedRow = Record<string, SQLResultRow>;
|
|
4
5
|
type SelectOptions = {
|
|
5
6
|
connection?: mysql.PoolConnection;
|
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Database = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
6
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
8
5
|
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
9
6
|
const mysql_1 = tslib_1.__importDefault(require("mysql"));
|
|
10
7
|
/// Database is a wrapper arround mysql, because we want to use promises + types
|
|
@@ -13,37 +10,39 @@ class DatabaseStatic {
|
|
|
13
10
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
14
11
|
this.debug = false;
|
|
15
12
|
if (!process.env.DB_DATABASE) {
|
|
16
|
-
throw new Error(
|
|
13
|
+
throw new Error('Environment variable DB_DATABASE is missing');
|
|
17
14
|
}
|
|
18
15
|
this.pool = mysql_1.default.createPool({
|
|
19
|
-
host: (_a = process.env.DB_HOST) !== null && _a !== void 0 ? _a :
|
|
20
|
-
user: (_b = process.env.DB_USER) !== null && _b !== void 0 ? _b :
|
|
21
|
-
password: (_c = process.env.DB_PASS) !== null && _c !== void 0 ? _c :
|
|
22
|
-
port: parseInt((_d = process.env.DB_PORT) !== null && _d !== void 0 ? _d :
|
|
16
|
+
host: (_a = process.env.DB_HOST) !== null && _a !== void 0 ? _a : 'localhost',
|
|
17
|
+
user: (_b = process.env.DB_USER) !== null && _b !== void 0 ? _b : 'root',
|
|
18
|
+
password: (_c = process.env.DB_PASS) !== null && _c !== void 0 ? _c : 'root',
|
|
19
|
+
port: parseInt((_d = process.env.DB_PORT) !== null && _d !== void 0 ? _d : '3306'),
|
|
23
20
|
database: process.env.DB_DATABASE,
|
|
24
21
|
waitForConnections: true,
|
|
25
|
-
connectionLimit: parseInt((_e = process.env.DB_CONNECTION_LIMIT) !== null && _e !== void 0 ? _e :
|
|
22
|
+
connectionLimit: parseInt((_e = process.env.DB_CONNECTION_LIMIT) !== null && _e !== void 0 ? _e : '10'),
|
|
26
23
|
queueLimit: 0,
|
|
27
|
-
multipleStatements: ((_f = process.env.DB_MULTIPLE_STATEMENTS) !== null && _f !== void 0 ? _f :
|
|
28
|
-
charset:
|
|
29
|
-
ssl: ((_g = process.env.DB_USE_SSL) !== null && _g !== void 0 ? _g : false)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
multipleStatements: ((_f = process.env.DB_MULTIPLE_STATEMENTS) !== null && _f !== void 0 ? _f : 'false') === 'true',
|
|
25
|
+
charset: 'utf8mb4',
|
|
26
|
+
ssl: ((_g = process.env.DB_USE_SSL) !== null && _g !== void 0 ? _g : false)
|
|
27
|
+
? {
|
|
28
|
+
ca: process.env.DB_CA ? fs_1.default.readFileSync(process.env.DB_CA) : undefined,
|
|
29
|
+
rejectUnauthorized: process.env.DB_CA ? true : false,
|
|
30
|
+
}
|
|
31
|
+
: undefined,
|
|
33
32
|
});
|
|
34
33
|
this.debug = (_h = options === null || options === void 0 ? void 0 : options.debug) !== null && _h !== void 0 ? _h : false;
|
|
35
34
|
if (this.debug) {
|
|
36
|
-
this.pool.on(
|
|
37
|
-
console.log(
|
|
35
|
+
this.pool.on('acquire', function (connection) {
|
|
36
|
+
console.log('Connection %d acquired', connection.threadId);
|
|
38
37
|
});
|
|
39
|
-
this.pool.on(
|
|
40
|
-
console.log(
|
|
38
|
+
this.pool.on('connection', function (connection) {
|
|
39
|
+
console.log('Connection %d created', connection.threadId);
|
|
41
40
|
});
|
|
42
|
-
this.pool.on(
|
|
43
|
-
console.log(
|
|
41
|
+
this.pool.on('enqueue', function () {
|
|
42
|
+
console.log('Waiting for available connection slot');
|
|
44
43
|
});
|
|
45
|
-
this.pool.on(
|
|
46
|
-
console.log(
|
|
44
|
+
this.pool.on('release', function (connection) {
|
|
45
|
+
console.log('Connection %d released', connection.threadId);
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
}
|
|
@@ -55,7 +54,7 @@ class DatabaseStatic {
|
|
|
55
54
|
return new Promise((resolve, reject) => {
|
|
56
55
|
this.pool.getConnection((err, connection) => {
|
|
57
56
|
if (err) {
|
|
58
|
-
console.error(
|
|
57
|
+
console.error('connection failed');
|
|
59
58
|
return reject(err);
|
|
60
59
|
}
|
|
61
60
|
return resolve(connection);
|
|
@@ -73,7 +72,7 @@ class DatabaseStatic {
|
|
|
73
72
|
return reject(err);
|
|
74
73
|
}
|
|
75
74
|
if (this.debug) {
|
|
76
|
-
console.log(
|
|
75
|
+
console.log('All connections have ended in the pool');
|
|
77
76
|
}
|
|
78
77
|
return resolve();
|
|
79
78
|
});
|
|
@@ -85,13 +84,13 @@ class DatabaseStatic {
|
|
|
85
84
|
logQuery(q, hrstart) {
|
|
86
85
|
if (this.debug) {
|
|
87
86
|
const hrend = process.hrtime(hrstart);
|
|
88
|
-
console.warn(q.sql.replace(/\n+ +/g,
|
|
87
|
+
console.warn(q.sql.replace(/\n+ +/g, '\n'), 'started at ' + (hrend[0] * 1000 + hrend[1] / 1000000) + 'ms');
|
|
89
88
|
}
|
|
90
89
|
}
|
|
91
90
|
finishQuery(q, hrstart) {
|
|
92
91
|
if (this.debug) {
|
|
93
92
|
const hrend = process.hrtime(hrstart);
|
|
94
|
-
console.log(q.sql.replace(/\s+/g,
|
|
93
|
+
console.log(q.sql.replace(/\s+/g, ' '), 'in ' + (hrend[0] * 1000 + hrend[1] / 1000000) + 'ms');
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
async select(query, values, options = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../../src/classes/Database.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../../src/classes/Database.ts"],"names":[],"mappings":";;;;AAAA,oDAAoB;AACpB,0DAA0B;AAO1B,gFAAgF;AAChF,MAAM,cAAc;IAIhB,YAAY,UAA+B,EAAE;;QAF7C,UAAK,GAAG,KAAK,CAAC;QAGV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,IAAI,GAAG,eAAK,CAAC,UAAU,CAAC;YACzB,IAAI,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,OAAO,mCAAI,WAAW;YACxC,IAAI,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,OAAO,mCAAI,MAAM;YACnC,QAAQ,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,OAAO,mCAAI,MAAM;YACvC,IAAI,EAAE,QAAQ,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,OAAO,mCAAI,MAAM,CAAC;YAC7C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;YACjC,kBAAkB,EAAE,IAAI;YACxB,eAAe,EAAE,QAAQ,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,mCAAI,IAAI,CAAC;YAClE,UAAU,EAAE,CAAC;YACb,kBAAkB,EAAE,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,mCAAI,OAAO,CAAC,KAAK,MAAM;YAC9E,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,CAAC,MAAA,OAAO,CAAC,GAAG,CAAC,UAAU,mCAAI,KAAK,CAAC;gBAClC,CAAC,CAAC;oBACM,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;oBACtE,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;iBACvD;gBACL,CAAC,CAAC,SAAS;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,KAAK,CAAC;QAErC,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,UAAU;gBACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,UAAU;gBAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,UAAU;gBACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,QAAQ,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,aAAa;QACf,gEAAgE;QAChE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;gBACxC,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;oBACnC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,GAAG;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClB,IAAI,GAAG,EAAE;oBACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBAED,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;iBACzD;gBACD,OAAO,OAAO,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU;QACN,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,CAAC,EAAE,OAAyB;QACjC,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;SAC9G;IACL,CAAC;IAED,WAAW,CAAC,CAAC,EAAE,OAAyB;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;SAClG;IACL,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAY,EAAE,UAAyB,EAAE;;QACjE,MAAM,UAAU,GAAyB,MAAA,OAAO,CAAC,UAAU,mCAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxH,IAAI,CAAC,OAAO,CAAC,UAAU;oBAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBAE9C,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE7B,IAAI,GAAG,EAAE;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBAED,OAAO,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,MAAM,CACR,KAAa,EACb,MAAY,EACZ,aAAoC;QAEpC,MAAM,UAAU,GAAyB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,IAAI,CAAC,aAAa;oBAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBAEzC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE7B,IAAI,GAAG,EAAE;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,OAAO,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAY,EAAE,aAAoC;QAC1E,MAAM,UAAU,GAAyB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,IAAI,CAAC,aAAa;oBAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBAEzC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE7B,IAAI,GAAG,EAAE;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,OAAO,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAY,EAAE,aAAoC;QAC1E,MAAM,UAAU,GAAyB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,IAAI,CAAC,aAAa;oBAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBAEzC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE7B,IAAI,GAAG,EAAE;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,OAAO,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,MAAY,EAAE,aAAoC;QAC7E,MAAM,UAAU,GAAyB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC/D,IAAI,CAAC,aAAa;oBAAE,UAAU,CAAC,OAAO,EAAE,CAAC;gBAEzC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE7B,IAAI,GAAG,EAAE;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACtB;gBACD,OAAO,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAEY,QAAA,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -7,7 +7,7 @@ export declare abstract class Factory<Options, Model> {
|
|
|
7
7
|
[key: number]: string | number;
|
|
8
8
|
}>(e: E): E[keyof E];
|
|
9
9
|
randomString(length: number): string;
|
|
10
|
-
randomFirstName(gender:
|
|
10
|
+
randomFirstName(gender: 'Male' | 'Female' | 'Other'): string;
|
|
11
11
|
randomLastName(): string;
|
|
12
12
|
createMultiple(amount?: number): Promise<Model[]>;
|
|
13
13
|
}
|
|
@@ -17,8 +17,8 @@ class Factory {
|
|
|
17
17
|
return this.randomArray(Object.values(e));
|
|
18
18
|
}
|
|
19
19
|
randomString(length) {
|
|
20
|
-
let result =
|
|
21
|
-
const characters =
|
|
20
|
+
let result = '';
|
|
21
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
22
22
|
const charactersLength = characters.length;
|
|
23
23
|
for (let i = 0; i < length; i++) {
|
|
24
24
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
@@ -28,13 +28,13 @@ class Factory {
|
|
|
28
28
|
randomFirstName(gender) {
|
|
29
29
|
let names;
|
|
30
30
|
switch (gender) {
|
|
31
|
-
case
|
|
31
|
+
case 'Male':
|
|
32
32
|
names = boys_1.default;
|
|
33
33
|
break;
|
|
34
|
-
case
|
|
34
|
+
case 'Female':
|
|
35
35
|
names = girls_1.default;
|
|
36
36
|
break;
|
|
37
|
-
case
|
|
37
|
+
case 'Other':
|
|
38
38
|
names = [...boys_1.default, ...girls_1.default];
|
|
39
39
|
break;
|
|
40
40
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Model } from
|
|
1
|
+
import { Model } from './Model';
|
|
2
2
|
export declare class ManyToManyRelation<Key extends keyof any, A extends Model, B extends Model, Link extends Model | undefined = undefined> {
|
|
3
3
|
modelA: {
|
|
4
4
|
new (): A;
|
|
@@ -17,7 +17,7 @@ export declare class ManyToManyRelation<Key extends keyof any, A extends Model,
|
|
|
17
17
|
* Sort the loading of this relation
|
|
18
18
|
*/
|
|
19
19
|
sortKey: string | undefined;
|
|
20
|
-
sortOrder:
|
|
20
|
+
sortOrder: 'ASC' | 'DESC';
|
|
21
21
|
/**
|
|
22
22
|
* E.g. _models_parents
|
|
23
23
|
*/
|
|
@@ -38,7 +38,7 @@ export declare class ManyToManyRelation<Key extends keyof any, A extends Model,
|
|
|
38
38
|
new (): Link;
|
|
39
39
|
} & typeof Model);
|
|
40
40
|
reverse<Key2 extends keyof any>(modelKey: Key2): ManyToManyRelation<Key2, B, A, Link>;
|
|
41
|
-
setSort(key: string, order?:
|
|
41
|
+
setSort(key: string, order?: 'ASC' | 'DESC'): this;
|
|
42
42
|
joinQuery(namespaceA: string, namespaceB: string): string;
|
|
43
43
|
orderByQuery(namespaceA: string, namespaceB: string): string;
|
|
44
44
|
load(modelA: A, sorted?: boolean, where?: object, whereLink?: object): Promise<(B & {
|