@simonbackx/simple-database 1.36.0 → 1.36.3
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/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.cjs +9 -0
- package/dist/_virtual/_@oxc-project_runtime@0.115.0/helpers/decorate.mjs +9 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/index.cjs +22 -0
- package/dist/index.d.cts +10 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.mjs +10 -0
- package/dist/src/classes/Column.cjs +134 -0
- package/dist/src/classes/Column.d.cts +34 -0
- package/dist/src/classes/Column.d.cts.map +1 -0
- package/dist/src/classes/Column.d.mts +34 -0
- package/dist/src/classes/Column.d.mts.map +1 -0
- package/dist/src/classes/Column.mjs +135 -0
- package/dist/src/classes/Column.mjs.map +1 -0
- package/dist/src/classes/ColumnType.d.cts +5 -0
- package/dist/src/classes/ColumnType.d.cts.map +1 -0
- package/dist/src/classes/ColumnType.d.mts +5 -0
- package/dist/src/classes/ColumnType.d.mts.map +1 -0
- package/dist/src/classes/Database.cjs +157 -0
- package/dist/src/classes/Database.d.cts +59 -0
- package/dist/src/classes/Database.d.cts.map +1 -0
- package/dist/src/classes/Database.d.mts +59 -0
- package/dist/src/classes/Database.d.mts.map +1 -0
- package/dist/src/classes/Database.mjs +155 -0
- package/dist/src/classes/Database.mjs.map +1 -0
- package/dist/src/classes/DatabaseStoredValue.d.cts +5 -0
- package/dist/src/classes/DatabaseStoredValue.d.cts.map +1 -0
- package/dist/src/classes/DatabaseStoredValue.d.mts +5 -0
- package/dist/src/classes/DatabaseStoredValue.d.mts.map +1 -0
- package/dist/src/classes/Factory.cjs +48 -0
- package/dist/src/classes/Factory.d.cts +17 -0
- package/dist/src/classes/Factory.d.cts.map +1 -0
- package/dist/src/classes/Factory.d.mts +17 -0
- package/dist/src/classes/Factory.d.mts.map +1 -0
- package/dist/src/classes/Factory.mjs +50 -0
- package/dist/src/classes/Factory.mjs.map +1 -0
- package/dist/src/classes/ManyToManyRelation.cjs +193 -0
- package/dist/src/classes/ManyToManyRelation.d.cts +83 -0
- package/dist/src/classes/ManyToManyRelation.d.cts.map +1 -0
- package/dist/src/classes/ManyToManyRelation.d.mts +83 -0
- package/dist/src/classes/ManyToManyRelation.d.mts.map +1 -0
- package/dist/src/classes/ManyToManyRelation.mjs +195 -0
- package/dist/src/classes/ManyToManyRelation.mjs.map +1 -0
- package/dist/src/classes/ManyToOneRelation.cjs +41 -0
- package/dist/src/classes/ManyToOneRelation.d.cts +26 -0
- package/dist/src/classes/ManyToOneRelation.d.cts.map +1 -0
- package/dist/src/classes/ManyToOneRelation.d.mts +26 -0
- package/dist/src/classes/ManyToOneRelation.d.mts.map +1 -0
- package/dist/src/classes/ManyToOneRelation.mjs +43 -0
- package/dist/src/classes/ManyToOneRelation.mjs.map +1 -0
- package/dist/src/classes/Migration.cjs +123 -0
- package/dist/src/classes/Migration.d.cts +16 -0
- package/dist/src/classes/Migration.d.cts.map +1 -0
- package/dist/src/classes/Migration.d.mts +16 -0
- package/dist/src/classes/Migration.d.mts.map +1 -0
- package/dist/src/classes/Migration.mjs +123 -0
- package/dist/src/classes/Migration.mjs.map +1 -0
- package/dist/src/classes/Model.cjs +459 -0
- package/dist/src/classes/Model.d.cts +162 -0
- package/dist/src/classes/Model.d.cts.map +1 -0
- package/dist/src/classes/Model.d.mts +162 -0
- package/dist/src/classes/Model.d.mts.map +1 -0
- package/dist/src/classes/Model.mjs +460 -0
- package/dist/src/classes/Model.mjs.map +1 -0
- package/dist/src/classes/OneToManyRelation.cjs +66 -0
- package/dist/src/classes/OneToManyRelation.d.cts +42 -0
- package/dist/src/classes/OneToManyRelation.d.cts.map +1 -0
- package/dist/src/classes/OneToManyRelation.d.mts +42 -0
- package/dist/src/classes/OneToManyRelation.d.mts.map +1 -0
- package/dist/src/classes/OneToManyRelation.mjs +68 -0
- package/dist/src/classes/OneToManyRelation.mjs.map +1 -0
- package/dist/src/classes/data/boys.cjs +1005 -0
- package/dist/src/classes/data/boys.mjs +1007 -0
- package/dist/src/classes/data/boys.mjs.map +1 -0
- package/dist/src/classes/data/family-names.cjs +1005 -0
- package/dist/src/classes/data/family-names.mjs +1007 -0
- package/dist/src/classes/data/family-names.mjs.map +1 -0
- package/dist/src/classes/data/girls.cjs +1004 -0
- package/dist/src/classes/data/girls.mjs +1006 -0
- package/dist/src/classes/data/girls.mjs.map +1 -0
- package/dist/src/decorators/Column.cjs +26 -0
- package/dist/src/decorators/Column.d.cts +22 -0
- package/dist/src/decorators/Column.d.cts.map +1 -0
- package/dist/src/decorators/Column.d.mts +22 -0
- package/dist/src/decorators/Column.d.mts.map +1 -0
- package/dist/src/decorators/Column.mjs +28 -0
- package/dist/src/decorators/Column.mjs.map +1 -0
- package/dist/src/models/Migration.cjs +37 -0
- package/dist/src/models/Migration.mjs +39 -0
- package/dist/src/models/Migration.mjs.map +1 -0
- package/package.json +16 -13
- package/dist/cjs/index.d.ts +0 -10
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -13
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/src/classes/Column.d.ts +0 -30
- package/dist/cjs/src/classes/Column.d.ts.map +0 -1
- package/dist/cjs/src/classes/Column.js +0 -183
- package/dist/cjs/src/classes/Column.js.map +0 -1
- package/dist/cjs/src/classes/ColumnType.d.ts +0 -2
- package/dist/cjs/src/classes/ColumnType.d.ts.map +0 -1
- package/dist/cjs/src/classes/ColumnType.js +0 -3
- package/dist/cjs/src/classes/ColumnType.js.map +0 -1
- package/dist/cjs/src/classes/Database.d.ts +0 -59
- package/dist/cjs/src/classes/Database.d.ts.map +0 -1
- package/dist/cjs/src/classes/Database.js +0 -176
- package/dist/cjs/src/classes/Database.js.map +0 -1
- package/dist/cjs/src/classes/DatabaseStoredValue.d.ts +0 -2
- package/dist/cjs/src/classes/DatabaseStoredValue.d.ts.map +0 -1
- package/dist/cjs/src/classes/DatabaseStoredValue.js +0 -3
- package/dist/cjs/src/classes/DatabaseStoredValue.js.map +0 -1
- package/dist/cjs/src/classes/Factory.d.ts +0 -14
- package/dist/cjs/src/classes/Factory.d.ts.map +0 -1
- package/dist/cjs/src/classes/Factory.js +0 -56
- package/dist/cjs/src/classes/Factory.js.map +0 -1
- package/dist/cjs/src/classes/ManyToManyRelation.d.ts +0 -79
- package/dist/cjs/src/classes/ManyToManyRelation.d.ts.map +0 -1
- package/dist/cjs/src/classes/ManyToManyRelation.js +0 -258
- package/dist/cjs/src/classes/ManyToManyRelation.js.map +0 -1
- package/dist/cjs/src/classes/ManyToOneRelation.d.ts +0 -22
- package/dist/cjs/src/classes/ManyToOneRelation.d.ts.map +0 -1
- package/dist/cjs/src/classes/ManyToOneRelation.js +0 -51
- package/dist/cjs/src/classes/ManyToOneRelation.js.map +0 -1
- package/dist/cjs/src/classes/Migration.d.ts +0 -14
- package/dist/cjs/src/classes/Migration.d.ts.map +0 -1
- package/dist/cjs/src/classes/Migration.js +0 -206
- package/dist/cjs/src/classes/Migration.js.map +0 -1
- package/dist/cjs/src/classes/Model.d.ts +0 -159
- package/dist/cjs/src/classes/Model.d.ts.map +0 -1
- package/dist/cjs/src/classes/Model.js +0 -640
- package/dist/cjs/src/classes/Model.js.map +0 -1
- package/dist/cjs/src/classes/OneToManyRelation.d.ts +0 -38
- package/dist/cjs/src/classes/OneToManyRelation.d.ts.map +0 -1
- package/dist/cjs/src/classes/OneToManyRelation.js +0 -79
- package/dist/cjs/src/classes/OneToManyRelation.js.map +0 -1
- package/dist/cjs/src/classes/data/boys.d.ts +0 -3
- package/dist/cjs/src/classes/data/boys.d.ts.map +0 -1
- package/dist/cjs/src/classes/data/boys.js +0 -1005
- package/dist/cjs/src/classes/data/boys.js.map +0 -1
- package/dist/cjs/src/classes/data/family-names.d.ts +0 -3
- package/dist/cjs/src/classes/data/family-names.d.ts.map +0 -1
- package/dist/cjs/src/classes/data/family-names.js +0 -1005
- package/dist/cjs/src/classes/data/family-names.js.map +0 -1
- package/dist/cjs/src/classes/data/girls.d.ts +0 -3
- package/dist/cjs/src/classes/data/girls.d.ts.map +0 -1
- package/dist/cjs/src/classes/data/girls.js +0 -1004
- package/dist/cjs/src/classes/data/girls.js.map +0 -1
- package/dist/cjs/src/classes/data/streets.d.ts +0 -3
- package/dist/cjs/src/classes/data/streets.d.ts.map +0 -1
- package/dist/cjs/src/classes/data/streets.js +0 -296
- package/dist/cjs/src/classes/data/streets.js.map +0 -1
- package/dist/cjs/src/decorators/Column.d.ts +0 -18
- package/dist/cjs/src/decorators/Column.d.ts.map +0 -1
- package/dist/cjs/src/decorators/Column.js +0 -39
- package/dist/cjs/src/decorators/Column.js.map +0 -1
- package/dist/cjs/src/models/Migration.d.ts +0 -11
- package/dist/cjs/src/models/Migration.d.ts.map +0 -1
- package/dist/cjs/src/models/Migration.js +0 -52
- package/dist/cjs/src/models/Migration.js.map +0 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/esm/index.d.ts +0 -10
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -10
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/src/classes/Column.d.ts +0 -30
- package/dist/esm/src/classes/Column.d.ts.map +0 -1
- package/dist/esm/src/classes/Column.js +0 -179
- package/dist/esm/src/classes/Column.js.map +0 -1
- package/dist/esm/src/classes/ColumnType.d.ts +0 -2
- package/dist/esm/src/classes/ColumnType.d.ts.map +0 -1
- package/dist/esm/src/classes/ColumnType.js +0 -2
- package/dist/esm/src/classes/ColumnType.js.map +0 -1
- package/dist/esm/src/classes/Database.d.ts +0 -59
- package/dist/esm/src/classes/Database.d.ts.map +0 -1
- package/dist/esm/src/classes/Database.js +0 -171
- package/dist/esm/src/classes/Database.js.map +0 -1
- package/dist/esm/src/classes/DatabaseStoredValue.d.ts +0 -2
- package/dist/esm/src/classes/DatabaseStoredValue.d.ts.map +0 -1
- package/dist/esm/src/classes/DatabaseStoredValue.js +0 -2
- package/dist/esm/src/classes/DatabaseStoredValue.js.map +0 -1
- package/dist/esm/src/classes/Factory.d.ts +0 -14
- package/dist/esm/src/classes/Factory.d.ts.map +0 -1
- package/dist/esm/src/classes/Factory.js +0 -51
- package/dist/esm/src/classes/Factory.js.map +0 -1
- package/dist/esm/src/classes/ManyToManyRelation.d.ts +0 -79
- package/dist/esm/src/classes/ManyToManyRelation.d.ts.map +0 -1
- package/dist/esm/src/classes/ManyToManyRelation.js +0 -254
- package/dist/esm/src/classes/ManyToManyRelation.js.map +0 -1
- package/dist/esm/src/classes/ManyToOneRelation.d.ts +0 -22
- package/dist/esm/src/classes/ManyToOneRelation.d.ts.map +0 -1
- package/dist/esm/src/classes/ManyToOneRelation.js +0 -47
- package/dist/esm/src/classes/ManyToOneRelation.js.map +0 -1
- package/dist/esm/src/classes/Migration.d.ts +0 -14
- package/dist/esm/src/classes/Migration.d.ts.map +0 -1
- package/dist/esm/src/classes/Migration.js +0 -168
- package/dist/esm/src/classes/Migration.js.map +0 -1
- package/dist/esm/src/classes/Model.d.ts +0 -159
- package/dist/esm/src/classes/Model.d.ts.map +0 -1
- package/dist/esm/src/classes/Model.js +0 -635
- package/dist/esm/src/classes/Model.js.map +0 -1
- package/dist/esm/src/classes/OneToManyRelation.d.ts +0 -38
- package/dist/esm/src/classes/OneToManyRelation.d.ts.map +0 -1
- package/dist/esm/src/classes/OneToManyRelation.js +0 -75
- package/dist/esm/src/classes/OneToManyRelation.js.map +0 -1
- package/dist/esm/src/classes/data/boys.d.ts +0 -3
- package/dist/esm/src/classes/data/boys.d.ts.map +0 -1
- package/dist/esm/src/classes/data/boys.js +0 -1003
- package/dist/esm/src/classes/data/boys.js.map +0 -1
- package/dist/esm/src/classes/data/family-names.d.ts +0 -3
- package/dist/esm/src/classes/data/family-names.d.ts.map +0 -1
- package/dist/esm/src/classes/data/family-names.js +0 -1003
- package/dist/esm/src/classes/data/family-names.js.map +0 -1
- package/dist/esm/src/classes/data/girls.d.ts +0 -3
- package/dist/esm/src/classes/data/girls.d.ts.map +0 -1
- package/dist/esm/src/classes/data/girls.js +0 -1002
- package/dist/esm/src/classes/data/girls.js.map +0 -1
- package/dist/esm/src/classes/data/streets.d.ts +0 -3
- package/dist/esm/src/classes/data/streets.d.ts.map +0 -1
- package/dist/esm/src/classes/data/streets.js +0 -294
- package/dist/esm/src/classes/data/streets.js.map +0 -1
- package/dist/esm/src/decorators/Column.d.ts +0 -18
- package/dist/esm/src/decorators/Column.d.ts.map +0 -1
- package/dist/esm/src/decorators/Column.js +0 -36
- package/dist/esm/src/decorators/Column.js.map +0 -1
- package/dist/esm/src/models/Migration.d.ts +0 -11
- package/dist/esm/src/models/Migration.d.ts.map +0 -1
- package/dist/esm/src/models/Migration.js +0 -48
- package/dist/esm/src/models/Migration.js.map +0 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/decorate.js
|
|
2
|
+
function __decorate(decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
exports.__decorate = __decorate;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region \0@oxc-project+runtime@0.115.0/helpers/decorate.js
|
|
2
|
+
function __decorate(decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { __decorate };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_Database = require("./src/classes/Database.cjs");
|
|
3
|
+
const require_Factory = require("./src/classes/Factory.cjs");
|
|
4
|
+
const require_Model = require("./src/classes/Model.cjs");
|
|
5
|
+
const require_ManyToManyRelation = require("./src/classes/ManyToManyRelation.cjs");
|
|
6
|
+
const require_ManyToOneRelation = require("./src/classes/ManyToOneRelation.cjs");
|
|
7
|
+
const require_OneToManyRelation = require("./src/classes/OneToManyRelation.cjs");
|
|
8
|
+
const require_Column = require("./src/classes/Column.cjs");
|
|
9
|
+
const require_Column$1 = require("./src/decorators/Column.cjs");
|
|
10
|
+
const require_Migration = require("./src/classes/Migration.cjs");
|
|
11
|
+
exports.Column = require_Column.Column;
|
|
12
|
+
exports.Database = require_Database.Database;
|
|
13
|
+
exports.DatabaseInstance = require_Database.DatabaseInstance;
|
|
14
|
+
exports.Factory = require_Factory.Factory;
|
|
15
|
+
exports.ManyToManyRelation = require_ManyToManyRelation.ManyToManyRelation;
|
|
16
|
+
exports.ManyToOneRelation = require_ManyToOneRelation.ManyToOneRelation;
|
|
17
|
+
exports.Migration = require_Migration.Migration;
|
|
18
|
+
exports.Model = require_Model.Model;
|
|
19
|
+
exports.ModelEventBus = require_Model.ModelEventBus;
|
|
20
|
+
exports.OneToManyRelation = require_OneToManyRelation.OneToManyRelation;
|
|
21
|
+
exports.column = require_Column$1.column;
|
|
22
|
+
exports.fileExists = require_Migration.fileExists;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Database, DatabaseInstance, PoolOptions, SQLResultNamespacedRow, SQLResultRow } from "./src/classes/Database.cjs";
|
|
2
|
+
import { Factory } from "./src/classes/Factory.cjs";
|
|
3
|
+
import { Column } from "./src/classes/Column.cjs";
|
|
4
|
+
import { ManyToOneRelation } from "./src/classes/ManyToOneRelation.cjs";
|
|
5
|
+
import { OneToManyRelation } from "./src/classes/OneToManyRelation.cjs";
|
|
6
|
+
import { Model, ModelEvent, ModelEventBus, ModelEventType } from "./src/classes/Model.cjs";
|
|
7
|
+
import { ManyToManyRelation } from "./src/classes/ManyToManyRelation.cjs";
|
|
8
|
+
import { Migration, fileExists } from "./src/classes/Migration.cjs";
|
|
9
|
+
import { column } from "./src/decorators/Column.cjs";
|
|
10
|
+
export { Column, Database, DatabaseInstance, Factory, ManyToManyRelation, ManyToOneRelation, Migration, Model, ModelEvent, ModelEventBus, ModelEventType, OneToManyRelation, PoolOptions, SQLResultNamespacedRow, SQLResultRow, column, fileExists };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Database, DatabaseInstance, PoolOptions, SQLResultNamespacedRow, SQLResultRow } from "./src/classes/Database.mjs";
|
|
2
|
+
import { Factory } from "./src/classes/Factory.mjs";
|
|
3
|
+
import { Column } from "./src/classes/Column.mjs";
|
|
4
|
+
import { ManyToOneRelation } from "./src/classes/ManyToOneRelation.mjs";
|
|
5
|
+
import { OneToManyRelation } from "./src/classes/OneToManyRelation.mjs";
|
|
6
|
+
import { Model, ModelEvent, ModelEventBus, ModelEventType } from "./src/classes/Model.mjs";
|
|
7
|
+
import { ManyToManyRelation } from "./src/classes/ManyToManyRelation.mjs";
|
|
8
|
+
import { Migration, fileExists } from "./src/classes/Migration.mjs";
|
|
9
|
+
import { column } from "./src/decorators/Column.mjs";
|
|
10
|
+
export { Column, Database, DatabaseInstance, Factory, ManyToManyRelation, ManyToOneRelation, Migration, Model, ModelEvent, ModelEventBus, ModelEventType, OneToManyRelation, PoolOptions, SQLResultNamespacedRow, SQLResultRow, column, fileExists };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Database, DatabaseInstance } from "./src/classes/Database.mjs";
|
|
2
|
+
import { Factory } from "./src/classes/Factory.mjs";
|
|
3
|
+
import { Model, ModelEventBus } from "./src/classes/Model.mjs";
|
|
4
|
+
import { ManyToManyRelation } from "./src/classes/ManyToManyRelation.mjs";
|
|
5
|
+
import { ManyToOneRelation } from "./src/classes/ManyToOneRelation.mjs";
|
|
6
|
+
import { OneToManyRelation } from "./src/classes/OneToManyRelation.mjs";
|
|
7
|
+
import { Column } from "./src/classes/Column.mjs";
|
|
8
|
+
import { column } from "./src/decorators/Column.mjs";
|
|
9
|
+
import { Migration, fileExists } from "./src/classes/Migration.mjs";
|
|
10
|
+
export { Column, Database, DatabaseInstance, Factory, ManyToManyRelation, ManyToOneRelation, Migration, Model, ModelEventBus, OneToManyRelation, column, fileExists };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let _simonbackx_simple_encoding = require("@simonbackx/simple-encoding");
|
|
3
|
+
//#region src/classes/Column.ts
|
|
4
|
+
var Column = class Column {
|
|
5
|
+
type;
|
|
6
|
+
name;
|
|
7
|
+
nullable = false;
|
|
8
|
+
primary = false;
|
|
9
|
+
/**
|
|
10
|
+
* Do not save the model if this is the only field that has changed
|
|
11
|
+
*/
|
|
12
|
+
skipUpdate = false;
|
|
13
|
+
decoder;
|
|
14
|
+
beforeSave;
|
|
15
|
+
beforeLoad;
|
|
16
|
+
static jsonVersion = 0;
|
|
17
|
+
/**
|
|
18
|
+
* Set the version used for JSON encoding in simple-encoding
|
|
19
|
+
*/
|
|
20
|
+
static setJSONVersion(version) {
|
|
21
|
+
Column.jsonVersion = version;
|
|
22
|
+
}
|
|
23
|
+
constructor(type, name) {
|
|
24
|
+
this.type = type;
|
|
25
|
+
this.name = name;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated use to instead
|
|
29
|
+
*/
|
|
30
|
+
saveProperty(data) {
|
|
31
|
+
return this.to(data);
|
|
32
|
+
}
|
|
33
|
+
isChanged(old, now) {
|
|
34
|
+
if (old instanceof Date) {
|
|
35
|
+
if (now instanceof Date) return old.getTime() !== now.getTime();
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return now !== old;
|
|
39
|
+
}
|
|
40
|
+
from(data) {
|
|
41
|
+
if (this.beforeLoad) data = this.beforeLoad(data);
|
|
42
|
+
if (this.nullable && data === null) return null;
|
|
43
|
+
if (!this.nullable && data === null) throw new Error("Received null value from database. Expected a non-nullable value for " + this.name);
|
|
44
|
+
switch (this.type) {
|
|
45
|
+
case "integer":
|
|
46
|
+
if (!Number.isInteger(data)) throw new Error("Expected integer");
|
|
47
|
+
return data;
|
|
48
|
+
case "number":
|
|
49
|
+
if (Number.isNaN(data)) throw new Error("Expected number");
|
|
50
|
+
return data;
|
|
51
|
+
case "string": return data;
|
|
52
|
+
case "boolean":
|
|
53
|
+
if (data !== 1 && data !== 0) throw new Error("Expected boolean");
|
|
54
|
+
return data === 1;
|
|
55
|
+
case "date": return data;
|
|
56
|
+
case "datetime": return data;
|
|
57
|
+
case "json": {
|
|
58
|
+
if (typeof data !== "string") throw new Error("Expected string for JSON column");
|
|
59
|
+
let parsed;
|
|
60
|
+
try {
|
|
61
|
+
parsed = JSON.parse(data);
|
|
62
|
+
} catch (e) {
|
|
63
|
+
console.error(e);
|
|
64
|
+
parsed = {};
|
|
65
|
+
}
|
|
66
|
+
if (this.decoder) {
|
|
67
|
+
if (this.decoder.decodeField) {
|
|
68
|
+
if (typeof parsed === "object" && parsed !== null && "value" in parsed && typeof parsed.version === "number") return this.decoder.decodeField(parsed.value, {
|
|
69
|
+
version: parsed.version,
|
|
70
|
+
medium: _simonbackx_simple_encoding.EncodeMedium.Database
|
|
71
|
+
}, this.name);
|
|
72
|
+
return this.decoder.decodeField(parsed, {
|
|
73
|
+
version: 0,
|
|
74
|
+
medium: _simonbackx_simple_encoding.EncodeMedium.Database
|
|
75
|
+
}, this.name);
|
|
76
|
+
}
|
|
77
|
+
if (typeof parsed === "object" && parsed !== null && "version" in parsed && "value" in parsed && typeof parsed.version === "number") return this.decoder.decode(new _simonbackx_simple_encoding.ObjectData(parsed.value, {
|
|
78
|
+
version: parsed.version,
|
|
79
|
+
medium: _simonbackx_simple_encoding.EncodeMedium.Database
|
|
80
|
+
}, this.name));
|
|
81
|
+
return this.decoder.decode(new _simonbackx_simple_encoding.ObjectData(parsed, {
|
|
82
|
+
version: 0,
|
|
83
|
+
medium: _simonbackx_simple_encoding.EncodeMedium.Database
|
|
84
|
+
}, this.name));
|
|
85
|
+
} else console.warn("It is recommended to always use a decoder for JSON columns");
|
|
86
|
+
if (typeof parsed === "object" && parsed !== null && "version" in parsed && "value" in parsed && typeof parsed.version === "number") return parsed.value;
|
|
87
|
+
return parsed;
|
|
88
|
+
}
|
|
89
|
+
default: {
|
|
90
|
+
const t = this.type;
|
|
91
|
+
throw new Error("Type " + t + " not supported");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
to(data) {
|
|
96
|
+
if (this.nullable && data === null) return null;
|
|
97
|
+
if (!this.nullable && data === null) throw new Error("Tried to set null to non-nullable value. Expected a non-nullable value");
|
|
98
|
+
switch (this.type) {
|
|
99
|
+
case "integer":
|
|
100
|
+
if (typeof data !== "number") throw new Error("Expected integer for " + this.name + ", received " + typeof data);
|
|
101
|
+
return data;
|
|
102
|
+
case "number":
|
|
103
|
+
if (typeof data !== "number") throw new Error("Expected number for " + this.name + ", received " + typeof data);
|
|
104
|
+
return data;
|
|
105
|
+
case "string":
|
|
106
|
+
if (typeof data !== "string") throw new Error("Expected string for " + this.name + ", received " + typeof data);
|
|
107
|
+
return data;
|
|
108
|
+
case "boolean":
|
|
109
|
+
if (typeof data !== "boolean") throw new Error("Expected boolean for " + this.name + ", received " + typeof data);
|
|
110
|
+
return data ? 1 : 0;
|
|
111
|
+
case "date":
|
|
112
|
+
case "datetime":
|
|
113
|
+
if (!(data instanceof Date)) throw new Error("Expected Date for " + this.name + ", received " + typeof data);
|
|
114
|
+
data.setMilliseconds(0);
|
|
115
|
+
return data;
|
|
116
|
+
case "json": {
|
|
117
|
+
const version = Column.jsonVersion;
|
|
118
|
+
return JSON.stringify({
|
|
119
|
+
value: (0, _simonbackx_simple_encoding.encodeObject)(data, {
|
|
120
|
+
version,
|
|
121
|
+
medium: _simonbackx_simple_encoding.EncodeMedium.Database
|
|
122
|
+
}),
|
|
123
|
+
version
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
default: {
|
|
127
|
+
const t = this.type;
|
|
128
|
+
throw new Error("Type " + t + " not supported");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
//#endregion
|
|
134
|
+
exports.Column = Column;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DatabaseStoredValue } from "./DatabaseStoredValue.cjs";
|
|
2
|
+
import { ColumnType } from "./ColumnType.cjs";
|
|
3
|
+
import { Decoder } from "@simonbackx/simple-encoding";
|
|
4
|
+
|
|
5
|
+
//#region src/classes/Column.d.ts
|
|
6
|
+
declare class Column {
|
|
7
|
+
type: ColumnType;
|
|
8
|
+
name: string;
|
|
9
|
+
nullable: boolean;
|
|
10
|
+
primary: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Do not save the model if this is the only field that has changed
|
|
13
|
+
*/
|
|
14
|
+
skipUpdate: boolean;
|
|
15
|
+
decoder: Decoder<any> | undefined;
|
|
16
|
+
beforeSave?: (value?: any) => any | Promise<any>;
|
|
17
|
+
beforeLoad?: (value?: any) => any;
|
|
18
|
+
private static jsonVersion;
|
|
19
|
+
/**
|
|
20
|
+
* Set the version used for JSON encoding in simple-encoding
|
|
21
|
+
*/
|
|
22
|
+
static setJSONVersion(version: number): void;
|
|
23
|
+
constructor(type: ColumnType, name: string);
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated use to instead
|
|
26
|
+
*/
|
|
27
|
+
saveProperty(data: unknown): DatabaseStoredValue;
|
|
28
|
+
isChanged(old: DatabaseStoredValue, now: DatabaseStoredValue): boolean;
|
|
29
|
+
from(data: DatabaseStoredValue): unknown;
|
|
30
|
+
to(data: unknown): DatabaseStoredValue;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { Column };
|
|
34
|
+
//# sourceMappingURL=Column.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Column.d.cts","names":[],"sources":["../../../src/classes/Column.ts"],"mappings":";;;;;cAKa,MAAA;EACT,IAAA,EAAM,UAAA;EACN,IAAA;EACA,QAAA;EACA,OAAA;EAHM;;;EAQN,UAAA;EACA,OAAA,EAAS,OAAA;EACT,UAAA,IAAc,KAAA,iBAAsB,OAAA;EAGpC,UAAA,IAAc,KAAA;EAAA,eAEC,WAAA;EAgII;;;EAAA,OA3HZ,cAAA,CAAe,OAAA;cAIV,IAAA,EAAM,UAAA,EAAY,IAAA;EAvB9B;;;EA+BA,YAAA,CAAa,IAAA,YAAgB,mBAAA;EAI7B,SAAA,CAAU,GAAA,EAAK,mBAAA,EAAqB,GAAA,EAAK,mBAAA;EAWzC,IAAA,CAAK,IAAA,EAAM,mBAAA;EAgGX,EAAA,CAAG,IAAA,YAAgB,mBAAA;AAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DatabaseStoredValue } from "./DatabaseStoredValue.mjs";
|
|
2
|
+
import { ColumnType } from "./ColumnType.mjs";
|
|
3
|
+
import { Decoder } from "@simonbackx/simple-encoding";
|
|
4
|
+
|
|
5
|
+
//#region src/classes/Column.d.ts
|
|
6
|
+
declare class Column {
|
|
7
|
+
type: ColumnType;
|
|
8
|
+
name: string;
|
|
9
|
+
nullable: boolean;
|
|
10
|
+
primary: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Do not save the model if this is the only field that has changed
|
|
13
|
+
*/
|
|
14
|
+
skipUpdate: boolean;
|
|
15
|
+
decoder: Decoder<any> | undefined;
|
|
16
|
+
beforeSave?: (value?: any) => any | Promise<any>;
|
|
17
|
+
beforeLoad?: (value?: any) => any;
|
|
18
|
+
private static jsonVersion;
|
|
19
|
+
/**
|
|
20
|
+
* Set the version used for JSON encoding in simple-encoding
|
|
21
|
+
*/
|
|
22
|
+
static setJSONVersion(version: number): void;
|
|
23
|
+
constructor(type: ColumnType, name: string);
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated use to instead
|
|
26
|
+
*/
|
|
27
|
+
saveProperty(data: unknown): DatabaseStoredValue;
|
|
28
|
+
isChanged(old: DatabaseStoredValue, now: DatabaseStoredValue): boolean;
|
|
29
|
+
from(data: DatabaseStoredValue): unknown;
|
|
30
|
+
to(data: unknown): DatabaseStoredValue;
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { Column };
|
|
34
|
+
//# sourceMappingURL=Column.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Column.d.mts","names":[],"sources":["../../../src/classes/Column.ts"],"mappings":";;;;;cAKa,MAAA;EACT,IAAA,EAAM,UAAA;EACN,IAAA;EACA,QAAA;EACA,OAAA;EAHM;;;EAQN,UAAA;EACA,OAAA,EAAS,OAAA;EACT,UAAA,IAAc,KAAA,iBAAsB,OAAA;EAGpC,UAAA,IAAc,KAAA;EAAA,eAEC,WAAA;EAgII;;;EAAA,OA3HZ,cAAA,CAAe,OAAA;cAIV,IAAA,EAAM,UAAA,EAAY,IAAA;EAvB9B;;;EA+BA,YAAA,CAAa,IAAA,YAAgB,mBAAA;EAI7B,SAAA,CAAU,GAAA,EAAK,mBAAA,EAAqB,GAAA,EAAK,mBAAA;EAWzC,IAAA,CAAK,IAAA,EAAM,mBAAA;EAgGX,EAAA,CAAG,IAAA,YAAgB,mBAAA;AAAA"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { EncodeMedium, ObjectData, encodeObject } from "@simonbackx/simple-encoding";
|
|
2
|
+
//#region src/classes/Column.ts
|
|
3
|
+
var Column = class Column {
|
|
4
|
+
type;
|
|
5
|
+
name;
|
|
6
|
+
nullable = false;
|
|
7
|
+
primary = false;
|
|
8
|
+
/**
|
|
9
|
+
* Do not save the model if this is the only field that has changed
|
|
10
|
+
*/
|
|
11
|
+
skipUpdate = false;
|
|
12
|
+
decoder;
|
|
13
|
+
beforeSave;
|
|
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) return old.getTime() !== now.getTime();
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return now !== old;
|
|
38
|
+
}
|
|
39
|
+
from(data) {
|
|
40
|
+
if (this.beforeLoad) data = this.beforeLoad(data);
|
|
41
|
+
if (this.nullable && data === null) return null;
|
|
42
|
+
if (!this.nullable && data === null) throw new Error("Received null value from database. Expected a non-nullable value for " + this.name);
|
|
43
|
+
switch (this.type) {
|
|
44
|
+
case "integer":
|
|
45
|
+
if (!Number.isInteger(data)) throw new Error("Expected integer");
|
|
46
|
+
return data;
|
|
47
|
+
case "number":
|
|
48
|
+
if (Number.isNaN(data)) throw new Error("Expected number");
|
|
49
|
+
return data;
|
|
50
|
+
case "string": return data;
|
|
51
|
+
case "boolean":
|
|
52
|
+
if (data !== 1 && data !== 0) throw new Error("Expected boolean");
|
|
53
|
+
return data === 1;
|
|
54
|
+
case "date": return data;
|
|
55
|
+
case "datetime": return data;
|
|
56
|
+
case "json": {
|
|
57
|
+
if (typeof data !== "string") throw new Error("Expected string for JSON column");
|
|
58
|
+
let parsed;
|
|
59
|
+
try {
|
|
60
|
+
parsed = JSON.parse(data);
|
|
61
|
+
} catch (e) {
|
|
62
|
+
console.error(e);
|
|
63
|
+
parsed = {};
|
|
64
|
+
}
|
|
65
|
+
if (this.decoder) {
|
|
66
|
+
if (this.decoder.decodeField) {
|
|
67
|
+
if (typeof parsed === "object" && parsed !== null && "value" in parsed && typeof parsed.version === "number") return this.decoder.decodeField(parsed.value, {
|
|
68
|
+
version: parsed.version,
|
|
69
|
+
medium: EncodeMedium.Database
|
|
70
|
+
}, this.name);
|
|
71
|
+
return this.decoder.decodeField(parsed, {
|
|
72
|
+
version: 0,
|
|
73
|
+
medium: EncodeMedium.Database
|
|
74
|
+
}, this.name);
|
|
75
|
+
}
|
|
76
|
+
if (typeof parsed === "object" && parsed !== null && "version" in parsed && "value" in parsed && typeof parsed.version === "number") return this.decoder.decode(new ObjectData(parsed.value, {
|
|
77
|
+
version: parsed.version,
|
|
78
|
+
medium: EncodeMedium.Database
|
|
79
|
+
}, this.name));
|
|
80
|
+
return this.decoder.decode(new ObjectData(parsed, {
|
|
81
|
+
version: 0,
|
|
82
|
+
medium: EncodeMedium.Database
|
|
83
|
+
}, this.name));
|
|
84
|
+
} else console.warn("It is recommended to always use a decoder for JSON columns");
|
|
85
|
+
if (typeof parsed === "object" && parsed !== null && "version" in parsed && "value" in parsed && typeof parsed.version === "number") return parsed.value;
|
|
86
|
+
return parsed;
|
|
87
|
+
}
|
|
88
|
+
default: {
|
|
89
|
+
const t = this.type;
|
|
90
|
+
throw new Error("Type " + t + " not supported");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
to(data) {
|
|
95
|
+
if (this.nullable && data === null) return null;
|
|
96
|
+
if (!this.nullable && data === null) throw new Error("Tried to set null to non-nullable value. Expected a non-nullable value");
|
|
97
|
+
switch (this.type) {
|
|
98
|
+
case "integer":
|
|
99
|
+
if (typeof data !== "number") throw new Error("Expected integer for " + this.name + ", received " + typeof data);
|
|
100
|
+
return data;
|
|
101
|
+
case "number":
|
|
102
|
+
if (typeof data !== "number") throw new Error("Expected number for " + this.name + ", received " + typeof data);
|
|
103
|
+
return data;
|
|
104
|
+
case "string":
|
|
105
|
+
if (typeof data !== "string") throw new Error("Expected string for " + this.name + ", received " + typeof data);
|
|
106
|
+
return data;
|
|
107
|
+
case "boolean":
|
|
108
|
+
if (typeof data !== "boolean") throw new Error("Expected boolean for " + this.name + ", received " + typeof data);
|
|
109
|
+
return data ? 1 : 0;
|
|
110
|
+
case "date":
|
|
111
|
+
case "datetime":
|
|
112
|
+
if (!(data instanceof Date)) throw new Error("Expected Date for " + this.name + ", received " + typeof data);
|
|
113
|
+
data.setMilliseconds(0);
|
|
114
|
+
return data;
|
|
115
|
+
case "json": {
|
|
116
|
+
const version = Column.jsonVersion;
|
|
117
|
+
return JSON.stringify({
|
|
118
|
+
value: encodeObject(data, {
|
|
119
|
+
version,
|
|
120
|
+
medium: EncodeMedium.Database
|
|
121
|
+
}),
|
|
122
|
+
version
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
default: {
|
|
126
|
+
const t = this.type;
|
|
127
|
+
throw new Error("Type " + t + " not supported");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
//#endregion
|
|
133
|
+
export { Column };
|
|
134
|
+
|
|
135
|
+
//# sourceMappingURL=Column.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Column.mjs","names":[],"sources":["../../../src/classes/Column.ts"],"sourcesContent":["import { Decoder, EncodableObject, EncodeMedium, encodeObject, ObjectData } from '@simonbackx/simple-encoding';\n\nimport { type ColumnType } from './ColumnType.js';\nimport { type DatabaseStoredValue } from './DatabaseStoredValue.js';\n\nexport class Column {\n type: ColumnType;\n name: string;\n nullable = false;\n primary = false;\n\n /**\n * Do not save the model if this is the only field that has changed\n */\n skipUpdate = false;\n decoder: Decoder<any> | undefined;\n beforeSave?: (value?: any) => any | Promise<any>;\n\n // Allow handling of new fields etc\n beforeLoad?: (value?: any) => any;\n\n private static jsonVersion = 0;\n\n /**\n * Set the version used for JSON encoding in simple-encoding\n */\n static setJSONVersion(version: number): void {\n Column.jsonVersion = version;\n }\n\n constructor(type: ColumnType, name: string) {\n this.type = type;\n this.name = name;\n }\n\n /**\n * @deprecated use to instead\n */\n saveProperty(data: unknown): DatabaseStoredValue {\n return this.to(data);\n }\n\n isChanged(old: DatabaseStoredValue, now: DatabaseStoredValue): boolean {\n if (old instanceof Date) {\n if (now instanceof Date) {\n return old.getTime() !== now.getTime();\n }\n return true;\n }\n return now !== old;\n }\n\n /// Convert from database to javascript\n from(data: DatabaseStoredValue): unknown {\n if (this.beforeLoad) {\n data = this.beforeLoad(data);\n }\n if (this.nullable && data === null) {\n return null;\n }\n if (!this.nullable && data === null) {\n throw new Error('Received null value from database. Expected a non-nullable value for ' + this.name);\n }\n switch (this.type) {\n case 'integer':\n // Mapped correctly by MySQL\n if (!Number.isInteger(data)) {\n throw new Error('Expected integer');\n }\n return data;\n\n case 'number':\n // Mapped correctly by MySQL\n if (Number.isNaN(data)) {\n throw new Error('Expected number');\n }\n return data;\n\n case 'string':\n return data;\n\n case 'boolean':\n // Mapped correctly by MySQL\n if (data !== 1 && data !== 0) {\n throw new Error('Expected boolean');\n }\n return data === 1;\n\n case 'date':\n // Correctly mapped by node MySQL\n return data;\n\n case 'datetime':\n // Mapped correctly by node MySQL\n return data;\n\n case 'json': {\n if (typeof data !== 'string') {\n throw new Error('Expected string for JSON column');\n }\n\n // Mapped correctly by node MySQL\n let parsed: unknown;\n try {\n parsed = JSON.parse(data);\n }\n catch (e) {\n // Syntax error. Mark this in the future.\n console.error(e);\n parsed = {};\n }\n\n if (this.decoder) {\n if (this.decoder.decodeField) {\n if (typeof parsed === 'object' && parsed !== null && 'value' in parsed && typeof (parsed as any).version === 'number') {\n return this.decoder.decodeField(parsed.value, { version: (parsed as any).version, medium: EncodeMedium.Database }, this.name);\n }\n\n // Fallback decoding without version (since we don't know the saved version)\n return this.decoder.decodeField(parsed, { version: 0, medium: EncodeMedium.Database }, this.name);\n }\n if (typeof parsed === 'object' && parsed !== null && 'version' in parsed && 'value' in parsed && typeof parsed.version === 'number') {\n return this.decoder.decode(new ObjectData(parsed.value, { version: parsed.version, medium: EncodeMedium.Database }, this.name));\n }\n\n // Fallback decoding without version (since we don't know the saved version)\n return this.decoder.decode(new ObjectData(parsed, { version: 0, medium: EncodeMedium.Database }, this.name));\n }\n else {\n console.warn('It is recommended to always use a decoder for JSON columns');\n }\n\n if (typeof parsed === 'object' && parsed !== null && 'version' in parsed && 'value' in parsed && typeof parsed.version === 'number') {\n return parsed.value;\n }\n\n // If data comes from before version encoding, fall back to parsed\n return parsed;\n }\n\n default: {\n // If we get a compile error heres, a type is missing in the switch\n const t: never = this.type;\n throw new Error('Type ' + t + ' not supported');\n }\n }\n }\n\n /// Convert to database from javascript\n to(data: unknown): DatabaseStoredValue {\n if (this.nullable && data === null) {\n return null;\n }\n if (!this.nullable && data === null) {\n throw new Error('Tried to set null to non-nullable value. Expected a non-nullable value');\n }\n\n switch (this.type) {\n case 'integer':\n // Mapped correctly by MySQL\n if (typeof data !== 'number') {\n throw new Error('Expected integer for ' + this.name + ', received ' + (typeof data));\n }\n\n return data;\n\n case 'number':\n if (typeof data !== 'number') {\n throw new Error('Expected number for ' + this.name + ', received ' + (typeof data));\n }\n\n // Mapped correctly by node MySQL\n return data;\n\n case 'string':\n if (typeof data !== 'string') {\n throw new Error('Expected string for ' + this.name + ', received ' + (typeof data));\n }\n\n return data;\n\n case 'boolean':\n if (typeof data !== 'boolean') {\n throw new Error('Expected boolean for ' + this.name + ', received ' + (typeof data));\n }\n\n return data ? 1 : 0;\n\n case 'date':\n case 'datetime':\n if (!(data instanceof Date)) {\n throw new Error('Expected Date for ' + this.name + ', received ' + (typeof data));\n }\n // This information cannot be stored in the database - so also update it in JS to keep it in sync\n data.setMilliseconds(0);\n\n // Correctly mapped by node MySQL\n return data;\n\n case 'json': {\n const version = Column.jsonVersion;\n\n return JSON.stringify({\n // Warning: keys should be sorted or they will get marked as changed every time\n value: encodeObject(data as EncodableObject, { version, medium: EncodeMedium.Database }),\n version: version,\n\n });\n }\n\n default: {\n // If we get a compile error heres, a type is missing in the switch\n const t: never = this.type;\n throw new Error('Type ' + t + ' not supported');\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnType.d.cts","names":[],"sources":["../../../src/classes/ColumnType.ts"],"mappings":";KAAY,UAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnType.d.mts","names":[],"sources":["../../../src/classes/ColumnType.ts"],"mappings":";KAAY,UAAA"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let fs = require("fs");
|
|
3
|
+
fs = require_runtime.__toESM(fs);
|
|
4
|
+
let mysql2_promise = require("mysql2/promise");
|
|
5
|
+
mysql2_promise = require_runtime.__toESM(mysql2_promise);
|
|
6
|
+
//#region src/classes/Database.ts
|
|
7
|
+
var DatabaseInstance = class {
|
|
8
|
+
pool;
|
|
9
|
+
debug = false;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.createPool(options);
|
|
12
|
+
}
|
|
13
|
+
createPool(options = {}) {
|
|
14
|
+
const settings = {
|
|
15
|
+
host: options.host ?? process.env.DB_HOST ?? "localhost",
|
|
16
|
+
user: options.user ?? process.env.DB_USER ?? "root",
|
|
17
|
+
password: options.password ?? process.env.DB_PASS ?? "root",
|
|
18
|
+
port: options.port ? options.port : parseInt(process.env.DB_PORT ?? "3306"),
|
|
19
|
+
database: options.database === void 0 ? process.env.DB_DATABASE : options.database,
|
|
20
|
+
connectionLimit: options.connectionLimit ? options.connectionLimit : parseInt(process.env.DB_CONNECTION_LIMIT ?? "10"),
|
|
21
|
+
multipleStatements: options.multipleStatements ?? (process.env.DB_MULTIPLE_STATEMENTS ?? "true") === "true",
|
|
22
|
+
charset: options.charset ?? process.env.DB_CHARSET ?? "utf8mb4_0900_ai_ci",
|
|
23
|
+
useSSL: options.useSSL ?? !!process.env.DB_USE_SSL,
|
|
24
|
+
ca: options.ca ?? process.env.DB_CA
|
|
25
|
+
};
|
|
26
|
+
if (settings.database === void 0) throw new Error("Environment variable DB_DATABASE is missing");
|
|
27
|
+
this.pool = mysql2_promise.default.createPool({
|
|
28
|
+
host: settings.host,
|
|
29
|
+
user: settings.user,
|
|
30
|
+
password: settings.password,
|
|
31
|
+
port: settings.port,
|
|
32
|
+
database: settings.database ?? void 0,
|
|
33
|
+
waitForConnections: true,
|
|
34
|
+
connectionLimit: settings.connectionLimit,
|
|
35
|
+
queueLimit: 0,
|
|
36
|
+
multipleStatements: settings.multipleStatements,
|
|
37
|
+
charset: settings.charset,
|
|
38
|
+
decimalNumbers: true,
|
|
39
|
+
jsonStrings: true,
|
|
40
|
+
ssl: settings.useSSL ? {
|
|
41
|
+
ca: settings.ca ? fs.default.readFileSync(settings.ca) : void 0,
|
|
42
|
+
rejectUnauthorized: settings.ca ? true : false
|
|
43
|
+
} : void 0
|
|
44
|
+
});
|
|
45
|
+
this.debug = options?.debug ?? false;
|
|
46
|
+
if (this.debug) {
|
|
47
|
+
this.pool.on("acquire", function(connection) {
|
|
48
|
+
console.log("Connection %d acquired", connection.threadId);
|
|
49
|
+
});
|
|
50
|
+
this.pool.on("connection", function(connection) {
|
|
51
|
+
console.log("Connection %d created", connection.threadId);
|
|
52
|
+
});
|
|
53
|
+
this.pool.on("enqueue", function() {
|
|
54
|
+
console.log("Waiting for available connection slot");
|
|
55
|
+
});
|
|
56
|
+
this.pool.on("release", function(connection) {
|
|
57
|
+
console.log("Connection %d released", connection.threadId);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async reload(options = {}) {
|
|
62
|
+
await this.pool.end();
|
|
63
|
+
this.createPool(options);
|
|
64
|
+
}
|
|
65
|
+
setDebug(enabled = true) {
|
|
66
|
+
this.debug = enabled;
|
|
67
|
+
}
|
|
68
|
+
async getConnection() {
|
|
69
|
+
return await this.pool.getConnection();
|
|
70
|
+
}
|
|
71
|
+
escapeId(value) {
|
|
72
|
+
return this.pool.escapeId(value);
|
|
73
|
+
}
|
|
74
|
+
async end() {
|
|
75
|
+
return await this.pool.end();
|
|
76
|
+
}
|
|
77
|
+
startQuery() {
|
|
78
|
+
return process.hrtime();
|
|
79
|
+
}
|
|
80
|
+
logQuery(q, hrstart) {
|
|
81
|
+
if (this.debug) {
|
|
82
|
+
const hrend = process.hrtime(hrstart);
|
|
83
|
+
console.warn(q.sql.replace(/\n+ +/g, "\n"), "started at " + (hrend[0] * 1e3 + hrend[1] / 1e6) + "ms");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finishQuery(q, hrstart) {
|
|
87
|
+
if (this.debug) {
|
|
88
|
+
const hrend = process.hrtime(hrstart);
|
|
89
|
+
console.log(q.sql.replace(/\s+/g, " "), "in " + (hrend[0] * 1e3 + hrend[1] / 1e6) + "ms");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async select(query, values, options = {}) {
|
|
93
|
+
const connection = options.connection ?? await this.getConnection();
|
|
94
|
+
try {
|
|
95
|
+
const q = await connection.query({
|
|
96
|
+
sql: query,
|
|
97
|
+
nestTables: options.nestTables ?? true,
|
|
98
|
+
values
|
|
99
|
+
});
|
|
100
|
+
return [q[0], q[1]];
|
|
101
|
+
} finally {
|
|
102
|
+
if (!options.connection) connection.release();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async insert(query, values, useConnection) {
|
|
106
|
+
const connection = useConnection ?? await this.getConnection();
|
|
107
|
+
try {
|
|
108
|
+
const q = await connection.query({
|
|
109
|
+
sql: query,
|
|
110
|
+
values
|
|
111
|
+
});
|
|
112
|
+
return [q[0], q[1]];
|
|
113
|
+
} finally {
|
|
114
|
+
if (!useConnection) connection.release();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async update(query, values, useConnection) {
|
|
118
|
+
const connection = useConnection ?? await this.getConnection();
|
|
119
|
+
try {
|
|
120
|
+
const q = await connection.query({
|
|
121
|
+
sql: query,
|
|
122
|
+
values
|
|
123
|
+
});
|
|
124
|
+
return [q[0], q[1]];
|
|
125
|
+
} finally {
|
|
126
|
+
if (!useConnection) connection.release();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async delete(query, values, useConnection) {
|
|
130
|
+
const connection = useConnection ?? await this.getConnection();
|
|
131
|
+
try {
|
|
132
|
+
const q = await connection.query({
|
|
133
|
+
sql: query,
|
|
134
|
+
values
|
|
135
|
+
});
|
|
136
|
+
return [q[0], q[1]];
|
|
137
|
+
} finally {
|
|
138
|
+
if (!useConnection) connection.release();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async statement(query, values, useConnection) {
|
|
142
|
+
const connection = useConnection ?? await this.getConnection();
|
|
143
|
+
try {
|
|
144
|
+
const q = await connection.query({
|
|
145
|
+
sql: query,
|
|
146
|
+
values
|
|
147
|
+
});
|
|
148
|
+
return [q[0], q[1]];
|
|
149
|
+
} finally {
|
|
150
|
+
if (!useConnection) connection.release();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const Database = new DatabaseInstance();
|
|
155
|
+
//#endregion
|
|
156
|
+
exports.Database = Database;
|
|
157
|
+
exports.DatabaseInstance = DatabaseInstance;
|