@zudojs/database 0.0.1
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/LICENSE +21 -0
- package/README.md +38 -0
- package/dist/cache/cache.memory.d.ts.map +1 -0
- package/dist/cache/cache.memory.js +226 -0
- package/dist/cache/cache.memory.js.map +1 -0
- package/dist/cache/index.d.ts +7 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +7 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/database/database.core.d.ts.map +1 -0
- package/dist/database/index.d.ts +7 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +7 -0
- package/dist/database/index.js.map +1 -0
- package/dist/databaseClient/databaseClient.core.d.ts +42 -0
- package/dist/databaseClient/databaseClient.core.d.ts.map +1 -0
- package/dist/databaseClient/databaseClient.core.js +203 -0
- package/dist/databaseClient/databaseClient.core.js.map +1 -0
- package/dist/databaseClient/databaseClient.logger.d.ts +9 -0
- package/dist/databaseClient/databaseClient.logger.d.ts.map +1 -0
- package/dist/databaseClient/databaseClient.logger.js +27 -0
- package/dist/databaseClient/databaseClient.logger.js.map +1 -0
- package/dist/databaseClient/index.d.ts +7 -0
- package/dist/databaseClient/index.d.ts.map +1 -0
- package/dist/databaseClient/index.js +7 -0
- package/dist/databaseClient/index.js.map +1 -0
- package/dist/databaseConnection/databaseConnection.manager.d.ts.map +1 -0
- package/dist/databaseConnection/databaseConnection.manager.js +219 -0
- package/dist/databaseConnection/databaseConnection.manager.js.map +1 -0
- package/dist/databaseConnection/index.d.ts +7 -0
- package/dist/databaseConnection/index.d.ts.map +1 -0
- package/dist/databaseConnection/index.js +7 -0
- package/dist/databaseConnection/index.js.map +1 -0
- package/dist/databaseType/index.d.ts +7 -0
- package/dist/databaseType/index.d.ts.map +1 -0
- package/dist/databaseType/index.js +7 -0
- package/dist/databaseType/index.js.map +1 -0
- package/dist/health/health.check.d.ts.map +1 -0
- package/dist/health/health.check.js +159 -0
- package/dist/health/health.check.js.map +1 -0
- package/dist/health/index.d.ts +7 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +7 -0
- package/dist/health/index.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/locks/index.d.ts +7 -0
- package/dist/locks/index.d.ts.map +1 -0
- package/dist/locks/index.js +7 -0
- package/dist/locks/index.js.map +1 -0
- package/dist/locks/locks.core.d.ts.map +1 -0
- package/dist/locks/locks.core.js +204 -0
- package/dist/locks/locks.core.js.map +1 -0
- package/dist/migration/index.d.ts +7 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +7 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/migration.helpers.d.ts.map +1 -0
- package/dist/migration/migration.runner.d.ts.map +1 -0
- package/dist/migration/migration.runner.js +209 -0
- package/dist/migration/migration.runner.js.map +1 -0
- package/dist/migration/migration.types.d.ts.map +1 -0
- package/dist/pagination/index.d.ts +7 -0
- package/dist/pagination/index.d.ts.map +1 -0
- package/dist/pagination/index.js +7 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/queryBuilder/index.d.ts +10 -0
- package/dist/queryBuilder/index.d.ts.map +1 -0
- package/dist/queryBuilder/index.js +9 -0
- package/dist/queryBuilder/index.js.map +1 -0
- package/dist/relations/index.d.ts +7 -0
- package/dist/relations/index.d.ts.map +1 -0
- package/dist/relations/index.js +7 -0
- package/dist/relations/index.js.map +1 -0
- package/dist/repository/index.d.ts +7 -0
- package/dist/repository/index.d.ts.map +1 -0
- package/dist/repository/index.js +7 -0
- package/dist/repository/index.js.map +1 -0
- package/dist/repository/repository.base.d.ts.map +1 -0
- package/dist/repository/repository.base.js +248 -0
- package/dist/repository/repository.base.js.map +1 -0
- package/dist/seed/index.d.ts +7 -0
- package/dist/seed/index.d.ts.map +1 -0
- package/dist/seed/index.js +7 -0
- package/dist/seed/index.js.map +1 -0
- package/dist/seed/seed.runner.d.ts.map +1 -0
- package/dist/seed/seed.runner.js +402 -0
- package/dist/seed/seed.runner.js.map +1 -0
- package/dist/transaction/index.d.ts +7 -0
- package/dist/transaction/index.d.ts.map +1 -0
- package/dist/transaction/index.js +7 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction/transaction.core.d.ts.map +1 -0
- package/dist/transaction/transaction.core.js +158 -0
- package/dist/transaction/transaction.core.js.map +1 -0
- package/dist/unitOfWork/index.d.ts +7 -0
- package/dist/unitOfWork/index.d.ts.map +1 -0
- package/dist/unitOfWork/index.js +7 -0
- package/dist/unitOfWork/index.js.map +1 -0
- package/dist/unitOfWork/unitOfWork.core.d.ts.map +1 -0
- package/dist/unitOfWork/unitOfWork.core.js +64 -0
- package/dist/unitOfWork/unitOfWork.core.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.core.d.ts","sourceRoot":"","sources":["../../src/locks/locks.core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,0BAA0B,EAC3B,MAAM,0CAA0C,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAC1B,YAAY,GAAG,mBAAmB,GAAG,WAAW,GAAG,eAAe,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,YAAY,MAAM,EAAE,cAAc,EAMjC;IAED;;;;;;OAMG;IACU,gBAAgB,CAAC,OAAO,EACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,WAAW,EAAE,0BAA0B,KAAK,OAAO,CAAC,OAAO,CAAC,EACvE,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,OAAO,CAAC,CAYlB;IAED;;;;;;OAMG;IACU,WAAW,CAAC,OAAO,EAC9B,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,QAAQ,EAAE,CAAC,WAAW,EAAE,0BAA0B,KAAK,OAAO,CAAC,OAAO,CAAC,EACvE,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,OAAO,CAAC,CAclB;IAED;;OAEG;IACI,SAAS,IAAI,cAAc,CAEjC;CACF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,mBAAmB,CAE7E;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,0BAA0B,EACvC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAiDf;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,WAAW,EAAE,0BAA0B,EACvC,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAYR;AAwBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc5D"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { DatabaseError } from "@zudojs/errors";
|
|
2
|
+
/**
|
|
3
|
+
* Application-level lock abstraction.
|
|
4
|
+
*
|
|
5
|
+
* Database row locks are normally acquired inside a transaction.
|
|
6
|
+
* This class provides safe SQL generation for PostgreSQL-compatible
|
|
7
|
+
* databases without interpolating untrusted values into SQL.
|
|
8
|
+
*/
|
|
9
|
+
export class DatabaseLockManager {
|
|
10
|
+
client;
|
|
11
|
+
constructor(client) {
|
|
12
|
+
if (!client) {
|
|
13
|
+
throw new TypeError("A database client is required.");
|
|
14
|
+
}
|
|
15
|
+
this.client = client;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Executes work inside a transaction after acquiring a PostgreSQL
|
|
19
|
+
* advisory transaction lock.
|
|
20
|
+
*
|
|
21
|
+
* The lock is automatically released by PostgreSQL when the
|
|
22
|
+
* transaction ends.
|
|
23
|
+
*/
|
|
24
|
+
async withAdvisoryLock(lockKey, callback, options = {}) {
|
|
25
|
+
validateLockKey(lockKey);
|
|
26
|
+
if (typeof callback !== "function") {
|
|
27
|
+
throw new DatabaseError("A lock callback is required.");
|
|
28
|
+
}
|
|
29
|
+
return this.client.transaction(async (transaction) => {
|
|
30
|
+
await acquireAdvisoryLock(transaction, lockKey, options);
|
|
31
|
+
return callback(transaction);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Acquires a row-level lock and executes work against the supplied
|
|
36
|
+
* table and identifier.
|
|
37
|
+
*
|
|
38
|
+
* The table name is validated as an SQL identifier before being
|
|
39
|
+
* interpolated into the query.
|
|
40
|
+
*/
|
|
41
|
+
async withRowLock(tableName, id, callback, options = {}) {
|
|
42
|
+
validateIdentifier(tableName, "table name");
|
|
43
|
+
validateId(id);
|
|
44
|
+
if (typeof callback !== "function") {
|
|
45
|
+
throw new DatabaseError("A lock callback is required.");
|
|
46
|
+
}
|
|
47
|
+
return this.client.transaction(async (transaction) => {
|
|
48
|
+
await lockRow(transaction, tableName, id, options);
|
|
49
|
+
return callback(transaction);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Returns the underlying database client.
|
|
54
|
+
*/
|
|
55
|
+
getClient() {
|
|
56
|
+
return this.client;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Creates a lock manager.
|
|
61
|
+
*/
|
|
62
|
+
export function createLockManager(client) {
|
|
63
|
+
return new DatabaseLockManager(client);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Acquires a PostgreSQL advisory transaction lock.
|
|
67
|
+
*
|
|
68
|
+
* The lock key is converted to a deterministic 64-bit advisory key.
|
|
69
|
+
*/
|
|
70
|
+
export async function acquireAdvisoryLock(transaction, lockKey, options = {}) {
|
|
71
|
+
validateLockKey(lockKey);
|
|
72
|
+
const key = normalizeAdvisoryKey(lockKey);
|
|
73
|
+
try {
|
|
74
|
+
if (options.noWait) {
|
|
75
|
+
const acquired = await transaction.$queryRaw `
|
|
76
|
+
SELECT pg_try_advisory_xact_lock(
|
|
77
|
+
${key}
|
|
78
|
+
) AS acquired
|
|
79
|
+
`;
|
|
80
|
+
if (!acquired[0]?.acquired) {
|
|
81
|
+
throw new DatabaseError(`Database advisory lock "${lockKey}" is already held.`);
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
await transaction.$executeRaw `
|
|
86
|
+
SELECT pg_advisory_xact_lock(
|
|
87
|
+
${key}
|
|
88
|
+
)
|
|
89
|
+
`;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (error instanceof DatabaseError) {
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
throw new DatabaseError(`Failed to acquire database advisory lock "${lockKey}".`, {
|
|
96
|
+
cause: error,
|
|
97
|
+
metadata: {
|
|
98
|
+
lockKey,
|
|
99
|
+
mode: options.mode ?? "for-update",
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Acquires a row-level PostgreSQL lock.
|
|
106
|
+
*/
|
|
107
|
+
export async function lockRow(transaction, tableName, id, options = {}) {
|
|
108
|
+
validateIdentifier(tableName, "table name");
|
|
109
|
+
validateId(id);
|
|
110
|
+
const mode = options.mode ?? "for-update";
|
|
111
|
+
const clause = buildLockClause(mode, options);
|
|
112
|
+
try {
|
|
113
|
+
await transaction.$executeRawUnsafe(`SELECT 1 FROM "${tableName}" WHERE "id" = $1 ${clause}`, id);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
throw new DatabaseError(`Failed to acquire row lock on "${tableName}".`, {
|
|
117
|
+
cause: error,
|
|
118
|
+
metadata: {
|
|
119
|
+
tableName,
|
|
120
|
+
id,
|
|
121
|
+
mode,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Builds a safe PostgreSQL lock clause.
|
|
128
|
+
*/
|
|
129
|
+
export function buildLockClause(mode, options = {}) {
|
|
130
|
+
const lockMode = getLockModeSql(mode);
|
|
131
|
+
const modifiers = [];
|
|
132
|
+
if (options.noWait) {
|
|
133
|
+
modifiers.push("NOWAIT");
|
|
134
|
+
}
|
|
135
|
+
else if (options.skipLocked) {
|
|
136
|
+
modifiers.push("SKIP LOCKED");
|
|
137
|
+
}
|
|
138
|
+
return [lockMode, ...modifiers].join(" ");
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Maps the public lock mode to PostgreSQL SQL.
|
|
142
|
+
*/
|
|
143
|
+
function getLockModeSql(mode) {
|
|
144
|
+
switch (mode) {
|
|
145
|
+
case "for-update":
|
|
146
|
+
return "FOR UPDATE";
|
|
147
|
+
case "for-no-key-update":
|
|
148
|
+
return "FOR NO KEY UPDATE";
|
|
149
|
+
case "for-share":
|
|
150
|
+
return "FOR SHARE";
|
|
151
|
+
case "for-key-share":
|
|
152
|
+
return "FOR KEY SHARE";
|
|
153
|
+
default:
|
|
154
|
+
throw new TypeError(`Unsupported database lock mode: ${String(mode)}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Converts an application lock key into a deterministic signed
|
|
159
|
+
* 64-bit integer represented as a bigint.
|
|
160
|
+
*/
|
|
161
|
+
export function normalizeAdvisoryKey(lockKey) {
|
|
162
|
+
validateLockKey(lockKey);
|
|
163
|
+
const bytes = new TextEncoder().encode(lockKey);
|
|
164
|
+
let hash = 1469598103934665603n;
|
|
165
|
+
for (const byte of bytes) {
|
|
166
|
+
hash ^= BigInt(byte);
|
|
167
|
+
hash = BigInt.asIntN(64, hash * 1099511628211n);
|
|
168
|
+
}
|
|
169
|
+
return BigInt.asIntN(64, hash);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Validates an advisory lock key.
|
|
173
|
+
*/
|
|
174
|
+
function validateLockKey(lockKey) {
|
|
175
|
+
if (typeof lockKey !== "string" || lockKey.trim().length === 0) {
|
|
176
|
+
throw new TypeError("A non-empty database lock key is required.");
|
|
177
|
+
}
|
|
178
|
+
if (lockKey.length > 255) {
|
|
179
|
+
throw new TypeError("Database lock keys cannot exceed 255 characters.");
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Validates an SQL identifier.
|
|
184
|
+
*/
|
|
185
|
+
function validateIdentifier(value, name) {
|
|
186
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
187
|
+
throw new TypeError(`A valid ${name} is required.`);
|
|
188
|
+
}
|
|
189
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(value)) {
|
|
190
|
+
throw new TypeError(`Invalid ${name}: "${value}".`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Validates a database identifier value.
|
|
195
|
+
*/
|
|
196
|
+
function validateId(id) {
|
|
197
|
+
if (typeof id === "string" && id.trim().length === 0) {
|
|
198
|
+
throw new TypeError("A non-empty database identifier is required.");
|
|
199
|
+
}
|
|
200
|
+
if (typeof id === "number" && !Number.isFinite(id)) {
|
|
201
|
+
throw new TypeError("A finite database identifier is required.");
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=locks.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.core.js","sourceRoot":"","sources":["../../src/locks/locks.core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Migrations
|
|
3
|
+
*
|
|
4
|
+
* Database migration runner with version tracking.
|
|
5
|
+
*/
|
|
6
|
+
export { MigrationRunner, createMigrationRunner, normalizeMigrations, validateMigration, getLatestVersion, getCurrentVersion, DEFAULT_MIGRATION_TABLE, DEFAULT_MIGRATION_LOCK, type Migration, type MigrationRecord, type MigrationResult, type MigrationStatus, type MigrationRunnerOptions, } from "./migration.runner.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Migrations
|
|
3
|
+
*
|
|
4
|
+
* Database migration runner with version tracking.
|
|
5
|
+
*/
|
|
6
|
+
export { MigrationRunner, createMigrationRunner, normalizeMigrations, validateMigration, getLatestVersion, getCurrentVersion, DEFAULT_MIGRATION_TABLE, DEFAULT_MIGRATION_LOCK, } from "./migration.runner.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,GAMvB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.helpers.d.ts","sourceRoot":"","sources":["../../src/migration/migration.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,SAAS,SAAS,EAAE,CAqBtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CA0B5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAGzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,eAAe,EAAE,GACrC,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAOzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration.runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,0CAA0C,CAAC;AAGlD,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAW9B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,YACE,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,OAAO,GAAE,sBAA2B,EAQrC;IAED,OAAO,CAAC,iBAAiB;IASZ,MAAM,IAAI,OAAO,CAC5B,OAAO,sBAAsB,EAAE,eAAe,CAC/C,CAaA;IAEY,OAAO,IAAI,OAAO,CAC7B,OAAO,sBAAsB,EAAE,eAAe,CAC/C,CAmBA;IAEY,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAgCvD;IAEY,WAAW,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAsC9D;IAEY,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBjD;IAEY,oBAAoB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAmBvE;YAEa,gBAAgB;YAchB,eAAe;YA2Bf,qBAAqB;YAqBrB,oBAAoB;CAgBnC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,eAAe,CAEjB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { DatabaseError } from "@zudojs/errors";
|
|
2
|
+
import { Prisma } from "@prisma/client";
|
|
3
|
+
import { DEFAULT_MIGRATION_TABLE, DEFAULT_MIGRATION_LOCK, normalizeMigrations, getCurrentVersion, getLatestVersion, quoteIdentifier, hashLockKey, } from "./migration.helpers.js";
|
|
4
|
+
export * from "./migration.types.js";
|
|
5
|
+
export { DEFAULT_MIGRATION_TABLE, DEFAULT_MIGRATION_LOCK, normalizeMigrations, getCurrentVersion, getLatestVersion, validateMigration, } from "./migration.helpers.js";
|
|
6
|
+
/**
|
|
7
|
+
* Runs and tracks database migrations.
|
|
8
|
+
*/
|
|
9
|
+
export class MigrationRunner {
|
|
10
|
+
client;
|
|
11
|
+
migrations;
|
|
12
|
+
tableName;
|
|
13
|
+
lockKey;
|
|
14
|
+
constructor(client, migrations, options = {}) {
|
|
15
|
+
if (!client)
|
|
16
|
+
throw new TypeError("A database client is required.");
|
|
17
|
+
this.client = client;
|
|
18
|
+
this.migrations = normalizeMigrations(migrations);
|
|
19
|
+
this.tableName = options.tableName ?? DEFAULT_MIGRATION_TABLE;
|
|
20
|
+
this.lockKey = options.lockKey ?? DEFAULT_MIGRATION_LOCK;
|
|
21
|
+
this.validateTableName();
|
|
22
|
+
}
|
|
23
|
+
validateTableName() {
|
|
24
|
+
const validateIdentifier = (id, name) => {
|
|
25
|
+
if (typeof id !== "string" || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(id)) {
|
|
26
|
+
throw new TypeError(`Invalid ${name}: "${id}".`);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
validateIdentifier(this.tableName, "migration table name");
|
|
30
|
+
}
|
|
31
|
+
async status() {
|
|
32
|
+
await this.ensureMigrationTable();
|
|
33
|
+
const applied = await this.getAppliedMigrations();
|
|
34
|
+
const appliedVersions = new Set(applied.map((m) => m.version));
|
|
35
|
+
const pending = this.migrations.filter((m) => !appliedVersions.has(m.version));
|
|
36
|
+
return {
|
|
37
|
+
currentVersion: getCurrentVersion(applied),
|
|
38
|
+
latestVersion: getLatestVersion(this.migrations),
|
|
39
|
+
pending,
|
|
40
|
+
applied,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async migrate() {
|
|
44
|
+
await this.ensureMigrationTable();
|
|
45
|
+
const applied = await this.getAppliedMigrations();
|
|
46
|
+
const appliedVersions = new Set(applied.map((m) => m.version));
|
|
47
|
+
const pending = this.migrations.filter((m) => !appliedVersions.has(m.version));
|
|
48
|
+
if (pending.length === 0)
|
|
49
|
+
return { applied: [], skipped: applied };
|
|
50
|
+
const newlyApplied = [];
|
|
51
|
+
await this.client.transaction(async (transaction) => {
|
|
52
|
+
await this.acquireMigrationLock(transaction);
|
|
53
|
+
for (const migration of pending) {
|
|
54
|
+
await this.executeMigration(transaction, migration);
|
|
55
|
+
const record = await this.recordMigration(transaction, migration);
|
|
56
|
+
newlyApplied.push(record);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return { applied: newlyApplied, skipped: applied };
|
|
60
|
+
}
|
|
61
|
+
async rollback() {
|
|
62
|
+
await this.ensureMigrationTable();
|
|
63
|
+
const applied = await this.getAppliedMigrations();
|
|
64
|
+
if (applied.length === 0)
|
|
65
|
+
return null;
|
|
66
|
+
const latest = applied[applied.length - 1];
|
|
67
|
+
if (!latest)
|
|
68
|
+
return null;
|
|
69
|
+
const migration = this.migrations.find((c) => c.version === latest.version);
|
|
70
|
+
if (!migration) {
|
|
71
|
+
throw new DatabaseError(`Migration "${latest.name}" is recorded as applied but is not registered.`, {
|
|
72
|
+
metadata: { version: latest.version },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (!migration.down) {
|
|
76
|
+
throw new DatabaseError(`Migration "${migration.name}" does not define a rollback operation.`, {
|
|
77
|
+
metadata: { version: migration.version },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
await this.client.transaction(async (transaction) => {
|
|
81
|
+
await this.acquireMigrationLock(transaction);
|
|
82
|
+
await migration.down(transaction);
|
|
83
|
+
await this.deleteMigrationRecord(transaction, migration.version);
|
|
84
|
+
});
|
|
85
|
+
return latest;
|
|
86
|
+
}
|
|
87
|
+
async rollbackAll() {
|
|
88
|
+
await this.ensureMigrationTable();
|
|
89
|
+
const applied = await this.getAppliedMigrations();
|
|
90
|
+
if (applied.length === 0)
|
|
91
|
+
return [];
|
|
92
|
+
const rolledBack = [];
|
|
93
|
+
await this.client.transaction(async (transaction) => {
|
|
94
|
+
await this.acquireMigrationLock(transaction);
|
|
95
|
+
for (let index = applied.length - 1; index >= 0; index -= 1) {
|
|
96
|
+
const record = applied[index];
|
|
97
|
+
if (!record)
|
|
98
|
+
continue;
|
|
99
|
+
const migration = this.migrations.find((c) => c.version === record.version);
|
|
100
|
+
if (!migration) {
|
|
101
|
+
throw new DatabaseError(`Migration "${record.name}" is not registered.`, {
|
|
102
|
+
metadata: { version: record.version },
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (!migration.down) {
|
|
106
|
+
throw new DatabaseError(`Migration "${migration.name}" does not define a rollback operation.`, {
|
|
107
|
+
metadata: { version: migration.version },
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
await migration.down(transaction);
|
|
111
|
+
await this.deleteMigrationRecord(transaction, migration.version);
|
|
112
|
+
rolledBack.push(record);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return rolledBack;
|
|
116
|
+
}
|
|
117
|
+
async ensureMigrationTable() {
|
|
118
|
+
const table = quoteIdentifier(this.tableName);
|
|
119
|
+
try {
|
|
120
|
+
await this.client.executeRaw(Prisma.sql `CREATE TABLE IF NOT EXISTS ${table} (
|
|
121
|
+
"version" INTEGER PRIMARY KEY,
|
|
122
|
+
"name" VARCHAR(255) NOT NULL,
|
|
123
|
+
"applied_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
124
|
+
)`);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
throw new DatabaseError("Failed to initialize the migration table.", {
|
|
128
|
+
cause: error,
|
|
129
|
+
metadata: { tableName: this.tableName },
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async getAppliedMigrations() {
|
|
134
|
+
const table = quoteIdentifier(this.tableName);
|
|
135
|
+
try {
|
|
136
|
+
const rows = await this.client.queryRaw(Prisma.sql `SELECT "version", "name", "applied_at" FROM ${table} ORDER BY "version" ASC`);
|
|
137
|
+
return rows.map((row) => ({
|
|
138
|
+
version: Number(row.version),
|
|
139
|
+
name: row.name,
|
|
140
|
+
appliedAt: new Date(row.applied_at),
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
throw new DatabaseError("Failed to read migration history.", {
|
|
145
|
+
cause: error,
|
|
146
|
+
metadata: { tableName: this.tableName },
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async executeMigration(transaction, migration) {
|
|
151
|
+
try {
|
|
152
|
+
await migration.up(transaction);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw new DatabaseError(`Migration "${migration.name}" failed.`, {
|
|
156
|
+
cause: error,
|
|
157
|
+
metadata: { version: migration.version, name: migration.name },
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async recordMigration(transaction, migration) {
|
|
162
|
+
const table = quoteIdentifier(this.tableName);
|
|
163
|
+
try {
|
|
164
|
+
await transaction.$executeRawUnsafe(`INSERT INTO ${table} ("version", "name") VALUES ($1, $2)`, migration.version, migration.name);
|
|
165
|
+
return {
|
|
166
|
+
version: migration.version,
|
|
167
|
+
name: migration.name,
|
|
168
|
+
appliedAt: new Date(),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
throw new DatabaseError(`Failed to record migration "${migration.name}".`, {
|
|
173
|
+
cause: error,
|
|
174
|
+
metadata: { version: migration.version },
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async deleteMigrationRecord(transaction, version) {
|
|
179
|
+
const table = quoteIdentifier(this.tableName);
|
|
180
|
+
try {
|
|
181
|
+
await transaction.$executeRawUnsafe(`DELETE FROM ${table} WHERE "version" = $1`, version);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
throw new DatabaseError(`Failed to remove migration record for version ${version}.`, {
|
|
185
|
+
cause: error,
|
|
186
|
+
metadata: { version },
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async acquireMigrationLock(transaction) {
|
|
191
|
+
try {
|
|
192
|
+
const lock = hashLockKey(this.lockKey);
|
|
193
|
+
await transaction.$executeRaw `SELECT pg_advisory_xact_lock(${lock})`;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
throw new DatabaseError("Failed to acquire the database migration lock.", {
|
|
197
|
+
cause: error,
|
|
198
|
+
metadata: { lockKey: this.lockKey },
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Creates a migration runner.
|
|
205
|
+
*/
|
|
206
|
+
export function createMigrationRunner(client, migrations, options) {
|
|
207
|
+
return new MigrationRunner(client, migrations, options);
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=migration.runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.runner.js","sourceRoot":"","sources":["../../src/migration/migration.runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.types.d.ts","sourceRoot":"","sources":["../../src/migration/migration.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Pagination
|
|
3
|
+
*
|
|
4
|
+
* Offset and cursor pagination utilities.
|
|
5
|
+
*/
|
|
6
|
+
export { normalizePagination, normalizePage, normalizeLimit, calculateOffset, calculateTotalPages, createPaginationMeta, createPaginatedResult, getNextPage, getPreviousPage, isValidPage, getItemRange, paginateCollection, encodeCursor, decodeCursor, normalizeCursorPagination, createCursorPaginationMeta, createCursorPaginatedResult, DEFAULT_PAGE, DEFAULT_LIMIT, MAX_LIMIT, type NormalizedPagination, type CursorPaginationInput, type CursorPaginationMeta, type CursorPaginatedResult, } from "./pagination.core.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pagination/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,SAAS,EACT,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Pagination
|
|
3
|
+
*
|
|
4
|
+
* Offset and cursor pagination utilities.
|
|
5
|
+
*/
|
|
6
|
+
export { normalizePagination, normalizePage, normalizeLimit, calculateOffset, calculateTotalPages, createPaginationMeta, createPaginatedResult, getNextPage, getPreviousPage, isValidPage, getItemRange, paginateCollection, encodeCursor, decodeCursor, normalizeCursorPagination, createCursorPaginationMeta, createCursorPaginatedResult, DEFAULT_PAGE, DEFAULT_LIMIT, MAX_LIMIT, } from "./pagination.core.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pagination/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,YAAY,EACZ,aAAa,EACb,SAAS,GAKV,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Query Builder
|
|
3
|
+
*
|
|
4
|
+
* Database-neutral query construction and filter helpers.
|
|
5
|
+
*/
|
|
6
|
+
export { QueryBuilder } from "./queryBuilder.core.js";
|
|
7
|
+
export { createQueryBuilder, cloneFilter } from "./queryBuilder.factory.js";
|
|
8
|
+
export type { QueryCondition, QueryFilter, QueryOperator, QueryBuilderState, } from "./queryBuilder.type.js";
|
|
9
|
+
export { equals, notEquals, inList, notInList, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, contains, startsWith, endsWith, isNull, isNotNull, and, or, not, condition, allOf, anyOf, fromObject, dateRange, oneOf, noneOf, optionalEquals, optionalContains, hasConditions, flattenAnd, } from "./queryBuilder.filter.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queryBuilder/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5E,YAAY,EACV,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,MAAM,EACN,SAAS,EACT,MAAM,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,EACH,EAAE,EACF,GAAG,EACH,SAAS,EACT,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,GACX,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Query Builder
|
|
3
|
+
*
|
|
4
|
+
* Database-neutral query construction and filter helpers.
|
|
5
|
+
*/
|
|
6
|
+
export { QueryBuilder } from "./queryBuilder.core.js";
|
|
7
|
+
export { createQueryBuilder, cloneFilter } from "./queryBuilder.factory.js";
|
|
8
|
+
export { equals, notEquals, inList, notInList, lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, contains, startsWith, endsWith, isNull, isNotNull, and, or, not, condition, allOf, anyOf, fromObject, dateRange, oneOf, noneOf, optionalEquals, optionalContains, hasConditions, flattenAnd, } from "./queryBuilder.filter.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queryBuilder/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAS5E,OAAO,EACL,MAAM,EACN,SAAS,EACT,MAAM,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,EACH,EAAE,EACF,GAAG,EACH,SAAS,EACT,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,GACX,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Relations
|
|
3
|
+
*
|
|
4
|
+
* Entity relation definitions and registry.
|
|
5
|
+
*/
|
|
6
|
+
export { oneToOne, oneToMany, manyToOne, manyToMany, includeRelation, includeRelations, RelationRegistry, createRelationRegistry, validateRelation, isRelationType, isCollectionRelation, isSingleRelation, type RelationDefinition, type RelationType, type RelationLoadOptions, type RelationInclude, } from "./relations.definition.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Relations
|
|
3
|
+
*
|
|
4
|
+
* Entity relation definitions and registry.
|
|
5
|
+
*/
|
|
6
|
+
export { oneToOne, oneToMany, manyToOne, manyToMany, includeRelation, includeRelations, RelationRegistry, createRelationRegistry, validateRelation, isRelationType, isCollectionRelation, isSingleRelation, } from "./relations.definition.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/relations/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,gBAAgB,GAKjB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.base.d.ts","sourceRoot":"","sources":["../../src/repository/repository.base.ts"],"names":[],"mappings":"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"}
|