@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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Zudojs Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @zudojs/database
|
|
2
|
+
|
|
3
|
+
Database abstraction layer with clients, repositories, transactions, and query building for Zudojs applications.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @zudojs/database
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { createDatabaseClient } from "@zudojs/database";
|
|
15
|
+
|
|
16
|
+
const client = await createDatabaseClient({
|
|
17
|
+
connection: { url: "postgresql://localhost/mydb" },
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const users = await client.repository("User").findMany();
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
- Database-agnostic query builder
|
|
26
|
+
- Repository pattern with CRUD operations
|
|
27
|
+
- Transaction management with savepoints
|
|
28
|
+
- Connection pooling and health checks
|
|
29
|
+
- Migration runner
|
|
30
|
+
- Seed runner for test data
|
|
31
|
+
- Unit of Work pattern
|
|
32
|
+
|
|
33
|
+
## Use Cases
|
|
34
|
+
|
|
35
|
+
- Data access layer for applications
|
|
36
|
+
- Multi-database support (PostgreSQL, MySQL, SQLite)
|
|
37
|
+
- Transaction coordination across repositories
|
|
38
|
+
- Database migrations and seeding
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.memory.d.ts","sourceRoot":"","sources":["../../src/cache/cache.memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { DatabaseError } from "@zudojs/errors";
|
|
2
|
+
/**
|
|
3
|
+
* In-memory cache implementation for database read results.
|
|
4
|
+
*
|
|
5
|
+
* This cache is intentionally process-local. It should not be used
|
|
6
|
+
* where multiple application instances require shared cache state.
|
|
7
|
+
*/
|
|
8
|
+
export class MemoryDatabaseCache {
|
|
9
|
+
entries = new Map();
|
|
10
|
+
hits = 0;
|
|
11
|
+
misses = 0;
|
|
12
|
+
defaultTtlMs;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.defaultTtlMs = normalizeTtl(options.ttlMs);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Gets a cached value.
|
|
18
|
+
*/
|
|
19
|
+
get(key) {
|
|
20
|
+
validateKey(key);
|
|
21
|
+
const entry = this.entries.get(key);
|
|
22
|
+
if (!entry) {
|
|
23
|
+
this.misses += 1;
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (isExpired(entry)) {
|
|
27
|
+
this.entries.delete(key);
|
|
28
|
+
this.misses += 1;
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
this.hits += 1;
|
|
32
|
+
return entry.value;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sets a cached value.
|
|
36
|
+
*/
|
|
37
|
+
set(key, value, options = {}) {
|
|
38
|
+
validateKey(key);
|
|
39
|
+
const ttlMs = normalizeTtl(options.ttlMs ?? this.defaultTtlMs);
|
|
40
|
+
const createdAt = Date.now();
|
|
41
|
+
this.entries.set(key, {
|
|
42
|
+
value,
|
|
43
|
+
createdAt,
|
|
44
|
+
expiresAt: ttlMs === undefined ? undefined : createdAt + ttlMs,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Checks whether a valid cached value exists.
|
|
49
|
+
*/
|
|
50
|
+
has(key) {
|
|
51
|
+
validateKey(key);
|
|
52
|
+
const entry = this.entries.get(key);
|
|
53
|
+
if (!entry) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
if (isExpired(entry)) {
|
|
57
|
+
this.entries.delete(key);
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Deletes a cache entry.
|
|
64
|
+
*/
|
|
65
|
+
delete(key) {
|
|
66
|
+
validateKey(key);
|
|
67
|
+
return this.entries.delete(key);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Clears the entire cache.
|
|
71
|
+
*/
|
|
72
|
+
clear() {
|
|
73
|
+
this.entries.clear();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Removes expired entries.
|
|
77
|
+
*/
|
|
78
|
+
prune() {
|
|
79
|
+
let removed = 0;
|
|
80
|
+
for (const [key, entry] of this.entries) {
|
|
81
|
+
if (isExpired(entry)) {
|
|
82
|
+
this.entries.delete(key);
|
|
83
|
+
removed += 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return removed;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns the number of valid entries.
|
|
90
|
+
*/
|
|
91
|
+
get size() {
|
|
92
|
+
this.prune();
|
|
93
|
+
return this.entries.size;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Returns cache statistics.
|
|
97
|
+
*/
|
|
98
|
+
getStats() {
|
|
99
|
+
this.prune();
|
|
100
|
+
const total = this.hits + this.misses;
|
|
101
|
+
return {
|
|
102
|
+
size: this.entries.size,
|
|
103
|
+
hits: this.hits,
|
|
104
|
+
misses: this.misses,
|
|
105
|
+
hitRate: total === 0 ? 0 : this.hits / total,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Resets hit/miss counters.
|
|
110
|
+
*/
|
|
111
|
+
resetStats() {
|
|
112
|
+
this.hits = 0;
|
|
113
|
+
this.misses = 0;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Returns all currently valid cache keys.
|
|
117
|
+
*/
|
|
118
|
+
keys() {
|
|
119
|
+
this.prune();
|
|
120
|
+
return Object.freeze([...this.entries.keys()]);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates an in-memory database cache.
|
|
125
|
+
*/
|
|
126
|
+
export function createDatabaseCache(options = {}) {
|
|
127
|
+
return new MemoryDatabaseCache(options);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Builds a stable cache key from a namespace and parts.
|
|
131
|
+
*/
|
|
132
|
+
export function createCacheKey(namespace, ...parts) {
|
|
133
|
+
validateKey(namespace);
|
|
134
|
+
return [namespace, ...parts.map(serializeCachePart)].join(":");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Serializes a cache key component deterministically.
|
|
138
|
+
*/
|
|
139
|
+
export function serializeCachePart(value) {
|
|
140
|
+
if (value === null) {
|
|
141
|
+
return "null";
|
|
142
|
+
}
|
|
143
|
+
if (value === undefined) {
|
|
144
|
+
return "undefined";
|
|
145
|
+
}
|
|
146
|
+
if (typeof value === "string" ||
|
|
147
|
+
typeof value === "number" ||
|
|
148
|
+
typeof value === "boolean" ||
|
|
149
|
+
typeof value === "bigint") {
|
|
150
|
+
return String(value);
|
|
151
|
+
}
|
|
152
|
+
if (value instanceof Date) {
|
|
153
|
+
return value.toISOString();
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
return JSON.stringify(value, Object.keys(value).sort());
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
throw new DatabaseError("Unable to serialize database cache key.", {
|
|
160
|
+
cause: error,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Wraps a cache around an asynchronous loader.
|
|
166
|
+
*/
|
|
167
|
+
export async function getOrSet(cache, key, loader, options) {
|
|
168
|
+
validateKey(key);
|
|
169
|
+
if (typeof loader !== "function") {
|
|
170
|
+
throw new TypeError("A cache loader function is required.");
|
|
171
|
+
}
|
|
172
|
+
const cached = cache.get(key);
|
|
173
|
+
if (cached !== undefined) {
|
|
174
|
+
return cached;
|
|
175
|
+
}
|
|
176
|
+
const value = await loader();
|
|
177
|
+
cache.set(key, value, options);
|
|
178
|
+
return value;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Invalidates all entries whose keys start with a prefix.
|
|
182
|
+
*
|
|
183
|
+
* This is useful when a write invalidates a group of related reads.
|
|
184
|
+
*/
|
|
185
|
+
export function invalidateByPrefix(cache, prefix) {
|
|
186
|
+
validateKey(prefix);
|
|
187
|
+
let removed = 0;
|
|
188
|
+
for (const key of cache.keys()) {
|
|
189
|
+
if (key.startsWith(prefix)) {
|
|
190
|
+
if (cache.delete(key)) {
|
|
191
|
+
removed += 1;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return removed;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Checks whether a cache entry has expired.
|
|
199
|
+
*/
|
|
200
|
+
function isExpired(entry) {
|
|
201
|
+
return entry.expiresAt !== undefined && entry.expiresAt <= Date.now();
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Normalizes a TTL value.
|
|
205
|
+
*/
|
|
206
|
+
function normalizeTtl(ttlMs) {
|
|
207
|
+
if (ttlMs === undefined) {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
if (!Number.isFinite(ttlMs)) {
|
|
211
|
+
throw new TypeError("Cache TTL must be a finite number.");
|
|
212
|
+
}
|
|
213
|
+
if (ttlMs < 0) {
|
|
214
|
+
throw new TypeError("Cache TTL cannot be negative.");
|
|
215
|
+
}
|
|
216
|
+
return Math.floor(ttlMs);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Validates a cache key.
|
|
220
|
+
*/
|
|
221
|
+
function validateKey(key) {
|
|
222
|
+
if (typeof key !== "string" || key.trim().length === 0) {
|
|
223
|
+
throw new TypeError("A non-empty cache key is required.");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=cache.memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.memory.js","sourceRoot":"","sources":["../../src/cache/cache.memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Database Cache
|
|
3
|
+
*
|
|
4
|
+
* In-memory cache for database read results.
|
|
5
|
+
*/
|
|
6
|
+
export { MemoryDatabaseCache, createDatabaseCache, createCacheKey, serializeCachePart, getOrSet, invalidateByPrefix, type CacheEntry, type CacheOptions, type CacheStats, type DatabaseCache, } from "./cache.memory.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Database Cache
|
|
3
|
+
*
|
|
4
|
+
* In-memory cache for database read results.
|
|
5
|
+
*/
|
|
6
|
+
export { MemoryDatabaseCache, createDatabaseCache, createCacheKey, serializeCachePart, getOrSet, invalidateByPrefix, } from "./cache.memory.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.core.d.ts","sourceRoot":"","sources":["../../src/database/database.core.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAChC,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAE9C;;;;;;GAMG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,YAAY,OAAO,GAAE,qBAA0B,EAE9C;IAED;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;IAED;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvC;IAED;;OAEG;IACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5C;IAED;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjC;IAED;;OAEG;IACI,SAAS,IAAI,cAAc,CAEjC;IAED;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAElD;IAED;;OAEG;IACU,WAAW,CAAC,OAAO,EAC9B,QAAQ,EAAE,mBAAmB,CAAC,0BAA0B,EAAE,OAAO,CAAC,EAClE,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAElB;IAED;;;;;OAKG;IACI,SAAS,IAAI,cAAc,CAEjC;IAED;;OAEG;IACI,SAAS,wEAEf;IAED;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;CACF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,QAAQ,CAE5E;AAUD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,qBAA0B,GAAG,QAAQ,CAMzE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,QAAQ,CAAC,CAMnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMxD;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Database Client Core
|
|
3
|
+
*
|
|
4
|
+
* Prisma-backed database client implementation.
|
|
5
|
+
*/
|
|
6
|
+
import { PrismaClient, Prisma } from "@prisma/client";
|
|
7
|
+
import type { DatabaseClient as DatabaseClientContract, DatabaseConnectionOptions, DatabaseHealth, DatabaseLogger, DatabaseStatus, TransactionCallback, TransactionOptions } from "../databaseType/databaseType.type.js";
|
|
8
|
+
export type PrismaClientLike = PrismaClient;
|
|
9
|
+
export interface DatabaseClientOptions extends DatabaseConnectionOptions {
|
|
10
|
+
readonly logger?: DatabaseLogger;
|
|
11
|
+
readonly prisma?: PrismaClientLike;
|
|
12
|
+
}
|
|
13
|
+
export type DatabaseTransactionContext = Prisma.TransactionClient;
|
|
14
|
+
/** Prisma-backed database client. */
|
|
15
|
+
export declare class DatabaseClient implements DatabaseClientContract<DatabaseTransactionContext> {
|
|
16
|
+
private readonly prisma;
|
|
17
|
+
private readonly logger;
|
|
18
|
+
private readonly options;
|
|
19
|
+
private status;
|
|
20
|
+
private connectedAt?;
|
|
21
|
+
constructor(options?: DatabaseClientOptions);
|
|
22
|
+
getPrisma(): PrismaClientLike;
|
|
23
|
+
connect(): Promise<void>;
|
|
24
|
+
disconnect(): Promise<void>;
|
|
25
|
+
ping(): Promise<void>;
|
|
26
|
+
getStatus(): DatabaseStatus;
|
|
27
|
+
getConnectedAt(): Date | undefined;
|
|
28
|
+
healthCheck(): Promise<DatabaseHealth>;
|
|
29
|
+
transaction<TResult>(callback: TransactionCallback<DatabaseTransactionContext, TResult>, options?: TransactionOptions): Promise<TResult>;
|
|
30
|
+
executeRaw(query: Prisma.Sql): Promise<number>;
|
|
31
|
+
queryRaw<TResult = unknown>(query: Prisma.Sql): Promise<TResult>;
|
|
32
|
+
ensureConnected(): Promise<void>;
|
|
33
|
+
destroy(): Promise<void>;
|
|
34
|
+
private registerQueryLogging;
|
|
35
|
+
private buildTransactionOptions;
|
|
36
|
+
private mapIsolationLevel;
|
|
37
|
+
private withTimeout;
|
|
38
|
+
private normalizeError;
|
|
39
|
+
}
|
|
40
|
+
/** Creates a database client. */
|
|
41
|
+
export declare function createDatabaseClient(options?: DatabaseClientOptions): DatabaseClient;
|
|
42
|
+
//# sourceMappingURL=databaseClient.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databaseClient.core.d.ts","sourceRoot":"","sources":["../../src/databaseClient/databaseClient.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EACV,cAAc,IAAI,sBAAsB,EACxC,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAG9C,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE5C,MAAM,WAAW,qBAAsB,SAAQ,yBAAyB;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElE,qCAAqC;AACrC,qBAAa,cAAe,YAAW,sBAAsB,CAAC,0BAA0B,CAAC;IACvF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,WAAW,CAAC,CAAO;IAE3B,YAAY,OAAO,GAAE,qBAA0B,EAe9C;IAEM,SAAS,IAAI,gBAAgB,CAEnC;IAEY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBpC;IAEY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBvC;IAEY,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAOjC;IAEM,SAAS,IAAI,cAAc,CAEjC;IACM,cAAc,IAAI,IAAI,GAAG,SAAS,CAExC;IAEY,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAqBlD;IAEY,WAAW,CAAC,OAAO,EAC9B,QAAQ,EAAE,mBAAmB,CAAC,0BAA0B,EAAE,OAAO,CAAC,EAClE,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,OAAO,CAAC,CAkBlB;IAEY,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1D;IAEY,QAAQ,CAAC,OAAO,GAAG,OAAO,EACrC,KAAK,EAAE,MAAM,CAAC,GAAG,GAChB,OAAO,CAAC,OAAO,CAAC,CAOlB;IAEY,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5C;IAEY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpC;IAED,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,iBAAiB;YAmBX,WAAW;IAmBzB,OAAO,CAAC,cAAc;CAUvB;AAED,iCAAiC;AACjC,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAEhB"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Database Client Core
|
|
3
|
+
*
|
|
4
|
+
* Prisma-backed database client implementation.
|
|
5
|
+
*/
|
|
6
|
+
import { PrismaClient, Prisma } from "@prisma/client";
|
|
7
|
+
import { DatabaseError } from "@zudojs/errors";
|
|
8
|
+
import { createDefaultLogger } from "./databaseClient.logger.js";
|
|
9
|
+
/** Prisma-backed database client. */
|
|
10
|
+
export class DatabaseClient {
|
|
11
|
+
prisma;
|
|
12
|
+
logger;
|
|
13
|
+
options;
|
|
14
|
+
status = "disconnected";
|
|
15
|
+
connectedAt;
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.logger = options.logger ?? createDefaultLogger();
|
|
19
|
+
this.prisma =
|
|
20
|
+
options.prisma ??
|
|
21
|
+
new PrismaClient({
|
|
22
|
+
log: options.logging
|
|
23
|
+
? [
|
|
24
|
+
{ emit: "event", level: "query" },
|
|
25
|
+
{ emit: "stdout", level: "error" },
|
|
26
|
+
{ emit: "stdout", level: "warn" },
|
|
27
|
+
]
|
|
28
|
+
: [{ emit: "stdout", level: "error" }],
|
|
29
|
+
});
|
|
30
|
+
this.registerQueryLogging();
|
|
31
|
+
}
|
|
32
|
+
getPrisma() {
|
|
33
|
+
return this.prisma;
|
|
34
|
+
}
|
|
35
|
+
async connect() {
|
|
36
|
+
if (this.status === "connected" || this.status === "connecting")
|
|
37
|
+
return;
|
|
38
|
+
this.status = "connecting";
|
|
39
|
+
try {
|
|
40
|
+
await this.withTimeout(this.prisma.$connect(), this.options.connectionTimeoutMs ?? 10_000, "Database connection timed out.");
|
|
41
|
+
this.status = "connected";
|
|
42
|
+
this.connectedAt = new Date();
|
|
43
|
+
this.logger.info("Database connected.");
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.status = "error";
|
|
47
|
+
const normalized = this.normalizeError(error, "Database connection failed.");
|
|
48
|
+
this.logger.error(normalized.message, normalized);
|
|
49
|
+
throw normalized;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async disconnect() {
|
|
53
|
+
if (this.status === "disconnected")
|
|
54
|
+
return;
|
|
55
|
+
this.status = "disconnecting";
|
|
56
|
+
try {
|
|
57
|
+
await this.prisma.$disconnect();
|
|
58
|
+
this.status = "disconnected";
|
|
59
|
+
this.connectedAt = undefined;
|
|
60
|
+
this.logger.info("Database disconnected.");
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.status = "error";
|
|
64
|
+
const normalized = this.normalizeError(error, "Database disconnection failed.");
|
|
65
|
+
this.logger.error(normalized.message, normalized);
|
|
66
|
+
throw normalized;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async ping() {
|
|
70
|
+
try {
|
|
71
|
+
await this.prisma.$queryRaw `SELECT 1`;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.status = "error";
|
|
75
|
+
throw this.normalizeError(error, "Database ping failed.");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
getStatus() {
|
|
79
|
+
return this.status;
|
|
80
|
+
}
|
|
81
|
+
getConnectedAt() {
|
|
82
|
+
return this.connectedAt;
|
|
83
|
+
}
|
|
84
|
+
async healthCheck() {
|
|
85
|
+
const startedAt = Date.now();
|
|
86
|
+
try {
|
|
87
|
+
await this.ping();
|
|
88
|
+
return {
|
|
89
|
+
status: "connected",
|
|
90
|
+
latencyMs: Date.now() - startedAt,
|
|
91
|
+
checkedAt: new Date(),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const normalized = this.normalizeError(error, "Database health check failed.");
|
|
96
|
+
return {
|
|
97
|
+
status: "error",
|
|
98
|
+
latencyMs: Date.now() - startedAt,
|
|
99
|
+
checkedAt: new Date(),
|
|
100
|
+
error: normalized.message,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async transaction(callback, options = {}) {
|
|
105
|
+
if (typeof callback !== "function")
|
|
106
|
+
throw new TypeError("A transaction callback is required.");
|
|
107
|
+
await this.ensureConnected();
|
|
108
|
+
const transactionOptions = this.buildTransactionOptions(options);
|
|
109
|
+
try {
|
|
110
|
+
return await this.prisma.$transaction(async (transaction) => callback(transaction), transactionOptions);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const normalized = this.normalizeError(error, "Database transaction failed.");
|
|
114
|
+
this.logger.error(normalized.message, normalized);
|
|
115
|
+
throw normalized;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async executeRaw(query) {
|
|
119
|
+
await this.ensureConnected();
|
|
120
|
+
try {
|
|
121
|
+
return await this.prisma.$executeRaw(query);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
throw this.normalizeError(error, "Raw database execution failed.");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async queryRaw(query) {
|
|
128
|
+
await this.ensureConnected();
|
|
129
|
+
try {
|
|
130
|
+
return (await this.prisma.$queryRaw(query));
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
throw this.normalizeError(error, "Raw database query failed.");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async ensureConnected() {
|
|
137
|
+
if (this.status !== "connected")
|
|
138
|
+
await this.connect();
|
|
139
|
+
}
|
|
140
|
+
async destroy() {
|
|
141
|
+
await this.disconnect();
|
|
142
|
+
}
|
|
143
|
+
registerQueryLogging() {
|
|
144
|
+
if (!this.options.logging)
|
|
145
|
+
return;
|
|
146
|
+
const prisma = this.prisma;
|
|
147
|
+
prisma.$on?.("query", (event) => {
|
|
148
|
+
this.logger.debug("Database query executed.", {
|
|
149
|
+
durationMs: event.duration,
|
|
150
|
+
target: event.target,
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
buildTransactionOptions(options) {
|
|
155
|
+
return {
|
|
156
|
+
maxWait: options.maxWaitMs,
|
|
157
|
+
timeout: options.timeoutMs,
|
|
158
|
+
isolationLevel: options.isolationLevel
|
|
159
|
+
? this.mapIsolationLevel(options.isolationLevel)
|
|
160
|
+
: undefined,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
mapIsolationLevel(level) {
|
|
164
|
+
switch (level) {
|
|
165
|
+
case "ReadUncommitted":
|
|
166
|
+
return Prisma.TransactionIsolationLevel.ReadUncommitted;
|
|
167
|
+
case "ReadCommitted":
|
|
168
|
+
return Prisma.TransactionIsolationLevel.ReadCommitted;
|
|
169
|
+
case "RepeatableRead":
|
|
170
|
+
return Prisma.TransactionIsolationLevel.RepeatableRead;
|
|
171
|
+
case "Serializable":
|
|
172
|
+
return Prisma.TransactionIsolationLevel.Serializable;
|
|
173
|
+
default:
|
|
174
|
+
throw new TypeError(`Unsupported transaction isolation level: ${String(level)}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async withTimeout(promise, timeoutMs, message) {
|
|
178
|
+
if (timeoutMs <= 0)
|
|
179
|
+
return promise;
|
|
180
|
+
let timer;
|
|
181
|
+
const timeout = new Promise((_, reject) => {
|
|
182
|
+
timer = setTimeout(() => {
|
|
183
|
+
reject(new DatabaseError(message));
|
|
184
|
+
}, timeoutMs);
|
|
185
|
+
});
|
|
186
|
+
try {
|
|
187
|
+
return await Promise.race([promise, timeout]);
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
clearTimeout(timer);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
normalizeError(error, fallbackMessage) {
|
|
194
|
+
if (error instanceof DatabaseError)
|
|
195
|
+
return error;
|
|
196
|
+
return new DatabaseError(error instanceof Error ? error.message : fallbackMessage, { cause: error });
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/** Creates a database client. */
|
|
200
|
+
export function createDatabaseClient(options = {}) {
|
|
201
|
+
return new DatabaseClient(options);
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=databaseClient.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databaseClient.core.js","sourceRoot":"","sources":["../../src/databaseClient/databaseClient.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAU/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAWjE,qCAAqC;AACrC,MAAM,OAAO,cAAc;IACR,MAAM,CAAmB;IACzB,MAAM,CAAiB;IACvB,OAAO,CAAwB;IACxC,MAAM,GAAmB,cAAc,CAAC;IACxC,WAAW,CAAQ;IAE3B,YAAY,OAAO,GAA0B,EAAE;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM;YACT,OAAO,CAAC,MAAM;gBACd,IAAI,YAAY,CAAC;oBACf,GAAG,EAAE,OAAO,CAAC,OAAO;wBAClB,CAAC,CAAC;4BACE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;4BACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;4BAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;yBAClC;wBACH,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;iBACzC,CAAC,CAAC;QACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;YAAE,OAAO;QACxE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EACtB,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,MAAM,EAC1C,gCAAgC,CACjC,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CACpC,KAAK,EACL,6BAA6B,CAC9B,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc;YAAE,OAAO;QAC3C,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CACpC,KAAK,EACL,gCAAgC,CACjC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAA,UAAU,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACjC,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CACpC,KAAK,EACL,+BAA+B,CAChC,CAAC;YACF,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACjC,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,UAAU,CAAC,OAAO;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,QAAkE,EAClE,OAAO,GAAuB,EAAE;QAEhC,IAAI,OAAO,QAAQ,KAAK,UAAU;YAChC,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CACnC,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC5C,kBAAkB,CACnB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CACpC,KAAK,EACL,8BAA8B,CAC/B,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAClD,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,KAAiB;QACvC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,KAAiB;QAEjB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAY,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAUnB,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;gBAC5C,UAAU,EAAE,KAAK,CAAC,QAAQ;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,OAA2B;QACzD,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACpC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC;gBAChD,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,KAAwD;QAExD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,iBAAiB;gBACpB,OAAO,MAAM,CAAC,yBAAyB,CAAC,eAAe,CAAC;YAC1D,KAAK,eAAe;gBAClB,OAAO,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC;YACxD,KAAK,gBAAgB;gBACnB,OAAO,MAAM,CAAC,yBAAyB,CAAC,cAAc,CAAC;YACzD,KAAK,cAAc;gBACjB,OAAO,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAC;YACvD;gBACE,MAAM,IAAI,SAAS,CACjB,4CAA4C,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5D,CAAC;QACN,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAmB,EACnB,SAAiB,EACjB,OAAe;QAEf,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QACnC,IAAI,KAAoC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YAC/C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC,EAAE,SAAS,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,cAAc,CACpB,KAAc,EACd,eAAuB;QAEvB,IAAI,KAAK,YAAY,aAAa;YAAE,OAAO,KAAK,CAAC;QACjD,OAAO,IAAI,aAAa,CACtB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EACxD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;CACF;AAED,iCAAiC;AACjC,MAAM,UAAU,oBAAoB,CAClC,OAAO,GAA0B,EAAE;IAEnC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Default Logger
|
|
3
|
+
*
|
|
4
|
+
* Minimal logger for environments where no application logger has been configured yet.
|
|
5
|
+
*/
|
|
6
|
+
import type { DatabaseLogger } from "../databaseType/databaseType.type.js";
|
|
7
|
+
/** Creates a minimal logger for environments where no application logger has been configured yet. */
|
|
8
|
+
export declare function createDefaultLogger(): DatabaseLogger;
|
|
9
|
+
//# sourceMappingURL=databaseClient.logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databaseClient.logger.d.ts","sourceRoot":"","sources":["../../src/databaseClient/databaseClient.logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAE3E,qGAAqG;AACrG,wBAAgB,mBAAmB,IAAI,cAAc,CAmBpD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/database — Default Logger
|
|
3
|
+
*
|
|
4
|
+
* Minimal logger for environments where no application logger has been configured yet.
|
|
5
|
+
*/
|
|
6
|
+
/** Creates a minimal logger for environments where no application logger has been configured yet. */
|
|
7
|
+
export function createDefaultLogger() {
|
|
8
|
+
return {
|
|
9
|
+
debug: (message, metadata) => {
|
|
10
|
+
if (process.env.NODE_ENV !== "production") {
|
|
11
|
+
console.debug(message, metadata);
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
info: (message, metadata) => {
|
|
15
|
+
if (process.env.NODE_ENV !== "production") {
|
|
16
|
+
console.info(message, metadata);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
warn: (message, metadata) => {
|
|
20
|
+
console.warn(message, metadata);
|
|
21
|
+
},
|
|
22
|
+
error: (message, error, metadata) => {
|
|
23
|
+
console.error(message, error, metadata);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=databaseClient.logger.js.map
|