@coherent.js/core 1.0.0-beta.2 → 1.0.0-beta.5
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/coherent.d.ts +10 -150
- package/dist/coherent.d.ts.map +1 -1
- package/dist/coherent.js +33 -166
- package/dist/coherent.js.map +1 -1
- package/dist/components/component-system.js +109 -109
- package/dist/core/html-utils.js +5 -5
- package/dist/core/object-factory.js +21 -21
- package/dist/core/object-utils.js +2 -2
- package/dist/database/adapters/mongodb.d.ts +15 -0
- package/dist/database/adapters/mongodb.d.ts.map +1 -0
- package/dist/database/adapters/mongodb.js +216 -0
- package/dist/database/adapters/mongodb.js.map +1 -0
- package/dist/database/adapters/mysql.d.ts +12 -0
- package/dist/database/adapters/mysql.d.ts.map +1 -0
- package/dist/database/adapters/mysql.js +171 -0
- package/dist/database/adapters/mysql.js.map +1 -0
- package/dist/database/adapters/postgresql.d.ts +12 -0
- package/dist/database/adapters/postgresql.d.ts.map +1 -0
- package/dist/database/adapters/postgresql.js +177 -0
- package/dist/database/adapters/postgresql.js.map +1 -0
- package/dist/database/adapters/sqlite.d.ts +15 -0
- package/dist/database/adapters/sqlite.d.ts.map +1 -0
- package/dist/database/adapters/sqlite.js +241 -0
- package/dist/database/adapters/sqlite.js.map +1 -0
- package/dist/database/connection-manager.d.ts +135 -0
- package/dist/database/connection-manager.d.ts.map +1 -0
- package/dist/database/connection-manager.js +362 -0
- package/dist/database/connection-manager.js.map +1 -0
- package/dist/database/index.d.ts +38 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +60 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/middleware.d.ts +122 -0
- package/dist/database/middleware.d.ts.map +1 -0
- package/dist/database/middleware.js +390 -0
- package/dist/database/middleware.js.map +1 -0
- package/dist/database/migration.d.ts +62 -0
- package/dist/database/migration.d.ts.map +1 -0
- package/dist/database/migration.js +423 -0
- package/dist/database/migration.js.map +1 -0
- package/dist/database/model.d.ts +8 -0
- package/dist/database/model.d.ts.map +1 -0
- package/dist/database/model.js +167 -0
- package/dist/database/model.js.map +1 -0
- package/dist/database/query-builder.d.ts +111 -0
- package/dist/database/query-builder.d.ts.map +1 -0
- package/dist/database/query-builder.js +187 -0
- package/dist/database/query-builder.js.map +1 -0
- package/dist/database/utils.d.ts +196 -0
- package/dist/database/utils.d.ts.map +1 -0
- package/dist/database/utils.js +372 -0
- package/dist/database/utils.js.map +1 -0
- package/dist/dev/dev-tools.d.ts +1 -1
- package/dist/dev/dev-tools.js +28 -28
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +2 -1
- package/dist/index.js.map +2 -2
- package/dist/performance/bundle-optimizer.js +11 -11
- package/dist/performance/cache-manager.js +6 -6
- package/dist/performance/monitor.js +10 -10
- package/dist/performance/monitor.js.map +1 -1
- package/dist/rendering/base-renderer.js +13 -13
- package/dist/rendering/dom-renderer.d.ts +0 -23
- package/dist/rendering/dom-renderer.d.ts.map +1 -1
- package/dist/rendering/dom-renderer.js +9 -77
- package/dist/rendering/dom-renderer.js.map +1 -1
- package/dist/rendering/html-renderer.d.ts +0 -15
- package/dist/rendering/html-renderer.d.ts.map +1 -1
- package/dist/rendering/html-renderer.js +4 -85
- package/dist/rendering/html-renderer.js.map +1 -1
- package/dist/rendering/streaming-renderer.js +12 -12
- package/dist/utils/dependency-utils.js +2 -2
- package/dist/utils/normalization.js +1 -1
- package/dist/utils/validation.js +1 -1
- package/package.json +22 -1
- package/dist/components/lifecycle.d.ts +0 -212
- package/dist/components/lifecycle.d.ts.map +0 -1
- package/dist/components/lifecycle.js +0 -525
- package/dist/components/lifecycle.js.map +0 -1
- package/dist/forms/validation.d.ts +0 -271
- package/dist/forms/validation.d.ts.map +0 -1
- package/dist/forms/validation.js +0 -573
- package/dist/forms/validation.js.map +0 -1
- package/dist/performance/component-cache.d.ts +0 -120
- package/dist/performance/component-cache.d.ts.map +0 -1
- package/dist/performance/component-cache.js +0 -364
- package/dist/performance/component-cache.js.map +0 -1
- package/dist/rendering/css-manager.d.ts +0 -73
- package/dist/rendering/css-manager.d.ts.map +0 -1
- package/dist/rendering/css-manager.js +0 -176
- package/dist/rendering/css-manager.js.map +0 -1
- package/dist/rendering/vdom-diff.d.ts +0 -47
- package/dist/rendering/vdom-diff.d.ts.map +0 -1
- package/dist/rendering/vdom-diff.js +0 -416
- package/dist/rendering/vdom-diff.js.map +0 -1
- package/dist/routing/router.d.ts +0 -241
- package/dist/routing/router.d.ts.map +0 -1
- package/dist/routing/router.js +0 -648
- package/dist/routing/router.js.map +0 -1
- package/dist/state/reactive-state.d.ts +0 -166
- package/dist/state/reactive-state.d.ts.map +0 -1
- package/dist/state/reactive-state.js +0 -546
- package/dist/state/reactive-state.js.map +0 -1
- package/dist/utils/error-handler.d.ts +0 -148
- package/dist/utils/error-handler.d.ts.map +0 -1
- package/dist/utils/error-handler.js +0 -468
- package/dist/utils/error-handler.js.map +0 -1
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database Middleware for Coherent.js Router Integration
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview Provides middleware for seamless database integration with the router,
|
|
5
|
+
* including connection management, transaction handling, and query helpers.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Database middleware for router integration
|
|
9
|
+
*
|
|
10
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
11
|
+
* @param {Object} [options={}] - Middleware options
|
|
12
|
+
* @returns {Function} Middleware function
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* import { withDatabase } from '@coherent/database';
|
|
16
|
+
*
|
|
17
|
+
* const router = new SimpleRouter();
|
|
18
|
+
* router.use(withDatabase(db));
|
|
19
|
+
*
|
|
20
|
+
* router.get('/users', async (req, res) => {
|
|
21
|
+
* const users = await req.db.query('SELECT * FROM users');
|
|
22
|
+
* res.json(users.rows);
|
|
23
|
+
* });
|
|
24
|
+
*/
|
|
25
|
+
export function withDatabase(db, options = {}) {
|
|
26
|
+
const config = {
|
|
27
|
+
autoConnect: true,
|
|
28
|
+
attachModels: true,
|
|
29
|
+
transactionKey: 'tx',
|
|
30
|
+
...options
|
|
31
|
+
};
|
|
32
|
+
return async (req, res, next) => {
|
|
33
|
+
try {
|
|
34
|
+
// Ensure database is connected
|
|
35
|
+
if (config.autoConnect && !db.isConnected) {
|
|
36
|
+
await db.connect();
|
|
37
|
+
}
|
|
38
|
+
// Attach database to request
|
|
39
|
+
req.db = db;
|
|
40
|
+
// Attach query helper
|
|
41
|
+
req.query = async (sql, params, queryOptions) => {
|
|
42
|
+
return await db.query(sql, params, queryOptions);
|
|
43
|
+
};
|
|
44
|
+
// Attach transaction helper
|
|
45
|
+
req.transaction = async (callback) => {
|
|
46
|
+
const tx = await db.transaction();
|
|
47
|
+
try {
|
|
48
|
+
const result = await callback(tx);
|
|
49
|
+
await tx.commit();
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
catch (_error) {
|
|
53
|
+
await tx.rollback();
|
|
54
|
+
throw _error;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
// Attach models if configured
|
|
58
|
+
if (config.attachModels && db.models) {
|
|
59
|
+
req.models = db.models;
|
|
60
|
+
}
|
|
61
|
+
await next();
|
|
62
|
+
}
|
|
63
|
+
catch (_error) {
|
|
64
|
+
// Log database errors
|
|
65
|
+
console._error('Database middleware _error:', _error);
|
|
66
|
+
// Pass _error to _error handler
|
|
67
|
+
if (typeof next === 'function') {
|
|
68
|
+
next(_error);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw _error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Transaction middleware for automatic transaction management
|
|
78
|
+
*
|
|
79
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
80
|
+
* @param {Object} [options={}] - Transaction options
|
|
81
|
+
* @returns {Function} Middleware function
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* router.post('/transfer', withTransaction(db), async (req, res) => {
|
|
85
|
+
* // All database operations in this handler will be wrapped in a transaction
|
|
86
|
+
* await req.tx.query('UPDATE accounts SET balance = balance - ? WHERE id = ?', [amount, fromId]);
|
|
87
|
+
* await req.tx.query('UPDATE accounts SET balance = balance + ? WHERE id = ?', [amount, toId]);
|
|
88
|
+
* // Transaction is automatically committed on success or rolled back on _error
|
|
89
|
+
* });
|
|
90
|
+
*/
|
|
91
|
+
export function withTransaction(db, options = {}) {
|
|
92
|
+
const config = {
|
|
93
|
+
isolationLevel: null,
|
|
94
|
+
readOnly: false,
|
|
95
|
+
...options
|
|
96
|
+
};
|
|
97
|
+
return async (req, res, next) => {
|
|
98
|
+
const tx = await db.transaction(config);
|
|
99
|
+
req.tx = tx;
|
|
100
|
+
try {
|
|
101
|
+
await next();
|
|
102
|
+
// Commit transaction if not already committed
|
|
103
|
+
if (!tx.isCommitted && !tx.isRolledBack) {
|
|
104
|
+
await tx.commit();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (_error) {
|
|
108
|
+
// Rollback transaction if not already rolled back
|
|
109
|
+
if (!tx.isRolledBack && !tx.isCommitted) {
|
|
110
|
+
await tx.rollback();
|
|
111
|
+
}
|
|
112
|
+
throw _error;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Model binding middleware
|
|
118
|
+
*
|
|
119
|
+
* @param {Function} ModelClass - Model class to bind
|
|
120
|
+
* @param {string} [paramName='id'] - Route parameter name
|
|
121
|
+
* @param {string} [requestKey] - Request key to attach model (defaults to model name)
|
|
122
|
+
* @returns {Function} Middleware function
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* router.get('/users/:id', withModel(User), async (req, res) => {
|
|
126
|
+
* // req.user contains the loaded User model
|
|
127
|
+
* res.json(req.user.toJSON());
|
|
128
|
+
* });
|
|
129
|
+
*
|
|
130
|
+
* router.get('/posts/:postId', withModel(Post, 'postId', 'post'), async (req, res) => {
|
|
131
|
+
* // req.post contains the loaded Post model
|
|
132
|
+
* res.json(req.post.toJSON());
|
|
133
|
+
* });
|
|
134
|
+
*/
|
|
135
|
+
export function withModel(ModelClass, paramName = 'id', requestKey = null) {
|
|
136
|
+
const key = requestKey || ModelClass.name.toLowerCase();
|
|
137
|
+
return async (req, res, next) => {
|
|
138
|
+
try {
|
|
139
|
+
const paramValue = req.params[paramName];
|
|
140
|
+
if (!paramValue) {
|
|
141
|
+
const _error = new Error(`Parameter '${paramName}' is required`);
|
|
142
|
+
_error.status = 400;
|
|
143
|
+
throw _error;
|
|
144
|
+
}
|
|
145
|
+
const model = await ModelClass.find(paramValue);
|
|
146
|
+
if (!model) {
|
|
147
|
+
const _error = new Error(`${ModelClass.name} not found`);
|
|
148
|
+
_error.status = 404;
|
|
149
|
+
throw _error;
|
|
150
|
+
}
|
|
151
|
+
req[key] = model;
|
|
152
|
+
await next();
|
|
153
|
+
}
|
|
154
|
+
catch (_error) {
|
|
155
|
+
if (typeof next === 'function') {
|
|
156
|
+
next(_error);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
throw _error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Pagination middleware
|
|
166
|
+
*
|
|
167
|
+
* @param {Object} [options={}] - Pagination options
|
|
168
|
+
* @returns {Function} Middleware function
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* router.get('/users', withPagination(), async (req, res) => {
|
|
172
|
+
* const users = await User.query()
|
|
173
|
+
* .limit(req.pagination.limit)
|
|
174
|
+
* .offset(req.pagination.offset)
|
|
175
|
+
* .execute();
|
|
176
|
+
*
|
|
177
|
+
* res.json({
|
|
178
|
+
* data: users.rows,
|
|
179
|
+
* pagination: req.pagination
|
|
180
|
+
* });
|
|
181
|
+
* });
|
|
182
|
+
*/
|
|
183
|
+
export function withPagination(options = {}) {
|
|
184
|
+
const config = {
|
|
185
|
+
defaultLimit: 20,
|
|
186
|
+
maxLimit: 100,
|
|
187
|
+
pageParam: 'page',
|
|
188
|
+
limitParam: 'limit',
|
|
189
|
+
...options
|
|
190
|
+
};
|
|
191
|
+
return async (req, res, next) => {
|
|
192
|
+
const page = Math.max(1, parseInt(req.query[config.pageParam]) || 1);
|
|
193
|
+
const limit = Math.min(config.maxLimit, Math.max(1, parseInt(req.query[config.limitParam]) || config.defaultLimit));
|
|
194
|
+
const offset = (page - 1) * limit;
|
|
195
|
+
req.pagination = {
|
|
196
|
+
page,
|
|
197
|
+
limit,
|
|
198
|
+
offset,
|
|
199
|
+
hasNext: null, // To be set by the handler
|
|
200
|
+
hasPrev: page > 1,
|
|
201
|
+
totalPages: null, // To be set by the handler
|
|
202
|
+
totalCount: null // To be set by the handler
|
|
203
|
+
};
|
|
204
|
+
await next();
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Query validation middleware
|
|
209
|
+
*
|
|
210
|
+
* @param {Object} schema - Validation schema
|
|
211
|
+
* @param {Object} [options={}] - Validation options
|
|
212
|
+
* @returns {Function} Middleware function
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* router.get('/users', withQueryValidation({
|
|
216
|
+
* status: { type: 'string', enum: ['active', 'inactive'] },
|
|
217
|
+
* age: { type: 'number', min: 0, max: 120 }
|
|
218
|
+
* }), async (req, res) => {
|
|
219
|
+
* // req.query is validated and sanitized
|
|
220
|
+
* });
|
|
221
|
+
*/
|
|
222
|
+
export function withQueryValidation(schema, options = {}) {
|
|
223
|
+
const config = {
|
|
224
|
+
stripUnknown: true,
|
|
225
|
+
coerceTypes: true,
|
|
226
|
+
...options
|
|
227
|
+
};
|
|
228
|
+
return async (req, res, next) => {
|
|
229
|
+
try {
|
|
230
|
+
const validatedQuery = {};
|
|
231
|
+
for (const [key, rules] of Object.entries(schema)) {
|
|
232
|
+
const value = req.query[key];
|
|
233
|
+
// Skip if not provided and not required
|
|
234
|
+
if (value === undefined || value === null || value === '') {
|
|
235
|
+
if (rules.required) {
|
|
236
|
+
const _error = new Error(`Query parameter '${key}' is required`);
|
|
237
|
+
_error.status = 400;
|
|
238
|
+
throw _error;
|
|
239
|
+
}
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
// Type coercion
|
|
243
|
+
let coercedValue = value;
|
|
244
|
+
if (config.coerceTypes) {
|
|
245
|
+
switch (rules.type) {
|
|
246
|
+
case 'number':
|
|
247
|
+
coercedValue = Number(value);
|
|
248
|
+
if (isNaN(coercedValue)) {
|
|
249
|
+
const _error = new Error(`Query parameter '${key}' must be a number`);
|
|
250
|
+
_error.status = 400;
|
|
251
|
+
throw _error;
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
case 'boolean':
|
|
255
|
+
coercedValue = value === 'true' || value === '1';
|
|
256
|
+
break;
|
|
257
|
+
case 'array':
|
|
258
|
+
coercedValue = Array.isArray(value) ? value : [value];
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Validation
|
|
263
|
+
if (rules.enum && !rules.enum.includes(coercedValue)) {
|
|
264
|
+
const _error = new Error(`Query parameter '${key}' must be one of: ${rules.enum.join(', ')}`);
|
|
265
|
+
_error.status = 400;
|
|
266
|
+
throw _error;
|
|
267
|
+
}
|
|
268
|
+
if (rules.min !== undefined && coercedValue < rules.min) {
|
|
269
|
+
const _error = new Error(`Query parameter '${key}' must be at least ${rules.min}`);
|
|
270
|
+
_error.status = 400;
|
|
271
|
+
throw _error;
|
|
272
|
+
}
|
|
273
|
+
if (rules.max !== undefined && coercedValue > rules.max) {
|
|
274
|
+
const _error = new Error(`Query parameter '${key}' must be at most ${rules.max}`);
|
|
275
|
+
_error.status = 400;
|
|
276
|
+
throw _error;
|
|
277
|
+
}
|
|
278
|
+
validatedQuery[key] = coercedValue;
|
|
279
|
+
}
|
|
280
|
+
// Replace query with validated version
|
|
281
|
+
if (!config.stripUnknown) {
|
|
282
|
+
Object.assign(validatedQuery, req.query);
|
|
283
|
+
}
|
|
284
|
+
req.query = validatedQuery;
|
|
285
|
+
await next();
|
|
286
|
+
}
|
|
287
|
+
catch (_error) {
|
|
288
|
+
if (typeof next === 'function') {
|
|
289
|
+
next(_error);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
throw _error;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Database health check middleware
|
|
299
|
+
*
|
|
300
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
301
|
+
* @param {Object} [options={}] - Health check options
|
|
302
|
+
* @returns {Function} Middleware function
|
|
303
|
+
*
|
|
304
|
+
* @example
|
|
305
|
+
* router.get('/health', withHealthCheck(db), (req, res) => {
|
|
306
|
+
* res.json({ status: 'healthy', database: req.dbHealth });
|
|
307
|
+
* });
|
|
308
|
+
*/
|
|
309
|
+
export function withHealthCheck(db, options = {}) {
|
|
310
|
+
const config = {
|
|
311
|
+
timeout: 5000,
|
|
312
|
+
includeStats: true,
|
|
313
|
+
...options
|
|
314
|
+
};
|
|
315
|
+
return async (req, res, next) => {
|
|
316
|
+
try {
|
|
317
|
+
const startTime = Date.now();
|
|
318
|
+
// Test database connection
|
|
319
|
+
await Promise.race([
|
|
320
|
+
db.query('SELECT 1'),
|
|
321
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Health check timeout')), config.timeout))
|
|
322
|
+
]);
|
|
323
|
+
const responseTime = Date.now() - startTime;
|
|
324
|
+
req.dbHealth = {
|
|
325
|
+
status: 'healthy',
|
|
326
|
+
responseTime,
|
|
327
|
+
connected: db.isConnected
|
|
328
|
+
};
|
|
329
|
+
if (config.includeStats) {
|
|
330
|
+
req.dbHealth.stats = db.getStats();
|
|
331
|
+
}
|
|
332
|
+
await next();
|
|
333
|
+
}
|
|
334
|
+
catch (_error) {
|
|
335
|
+
req.dbHealth = {
|
|
336
|
+
status: 'unhealthy',
|
|
337
|
+
_error: _error.message,
|
|
338
|
+
connected: db.isConnected
|
|
339
|
+
};
|
|
340
|
+
await next();
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Connection pooling middleware for request-scoped connections
|
|
346
|
+
*
|
|
347
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
348
|
+
* @param {Object} [options={}] - Pool options
|
|
349
|
+
* @returns {Function} Middleware function
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* router.use(withConnectionPool(db, { acquireTimeout: 10000 }));
|
|
353
|
+
*/
|
|
354
|
+
export function withConnectionPool(db, options = {}) {
|
|
355
|
+
const config = {
|
|
356
|
+
acquireTimeout: 30000,
|
|
357
|
+
releaseOnResponse: true,
|
|
358
|
+
...options
|
|
359
|
+
};
|
|
360
|
+
return async (req, res, next) => {
|
|
361
|
+
let connection = null;
|
|
362
|
+
try {
|
|
363
|
+
// Acquire connection from pool
|
|
364
|
+
connection = await db.pool.acquire(config.acquireTimeout);
|
|
365
|
+
// Attach connection to request
|
|
366
|
+
req.dbConnection = connection;
|
|
367
|
+
// Override query method to use this connection
|
|
368
|
+
req.query = async (sql, params, queryOptions) => {
|
|
369
|
+
return await db.adapter.query(connection, sql, params, queryOptions);
|
|
370
|
+
};
|
|
371
|
+
// Release connection when response finishes
|
|
372
|
+
if (config.releaseOnResponse) {
|
|
373
|
+
res.on('finish', () => {
|
|
374
|
+
if (connection) {
|
|
375
|
+
db.pool.release(connection);
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
await next();
|
|
380
|
+
}
|
|
381
|
+
catch (_error) {
|
|
382
|
+
// Release connection on _error
|
|
383
|
+
if (connection) {
|
|
384
|
+
db.pool.release(connection);
|
|
385
|
+
}
|
|
386
|
+
throw _error;
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../src/database/middleware.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create migration instance
|
|
3
|
+
*
|
|
4
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
5
|
+
* @param {Object} [config={}] - Migration configuration
|
|
6
|
+
* @returns {Object} Migration instance
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const migration = createMigration(db, {
|
|
10
|
+
* directory: './migrations',
|
|
11
|
+
* tableName: 'coherent_migrations'
|
|
12
|
+
* });
|
|
13
|
+
*
|
|
14
|
+
* await migration.run();
|
|
15
|
+
*/
|
|
16
|
+
export function createMigration(db: DatabaseManager, config?: Object): Object;
|
|
17
|
+
/**
|
|
18
|
+
* Create schema builder instance
|
|
19
|
+
*/
|
|
20
|
+
export function createSchemaBuilder(db: any): {
|
|
21
|
+
createTable(tableName: any, callback: any): Promise<void>;
|
|
22
|
+
alterTable(tableName: any, callback: any): Promise<void>;
|
|
23
|
+
dropTable(tableName: any): Promise<void>;
|
|
24
|
+
raw(sql: any, params?: any[]): Promise<any>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Create table builder instance
|
|
28
|
+
*/
|
|
29
|
+
export function createTableBuilder(tableName: any): {
|
|
30
|
+
id(name?: string): /*elided*/ any;
|
|
31
|
+
string(name: any, length?: number): {
|
|
32
|
+
notNull(): /*elided*/ any;
|
|
33
|
+
unique(): /*elided*/ any;
|
|
34
|
+
default(value: any): /*elided*/ any;
|
|
35
|
+
};
|
|
36
|
+
text(name: any): {
|
|
37
|
+
notNull(): /*elided*/ any;
|
|
38
|
+
unique(): /*elided*/ any;
|
|
39
|
+
default(value: any): /*elided*/ any;
|
|
40
|
+
};
|
|
41
|
+
integer(name: any): {
|
|
42
|
+
notNull(): /*elided*/ any;
|
|
43
|
+
unique(): /*elided*/ any;
|
|
44
|
+
default(value: any): /*elided*/ any;
|
|
45
|
+
};
|
|
46
|
+
boolean(name: any): {
|
|
47
|
+
notNull(): /*elided*/ any;
|
|
48
|
+
unique(): /*elided*/ any;
|
|
49
|
+
default(value: any): /*elided*/ any;
|
|
50
|
+
};
|
|
51
|
+
datetime(name: any): {
|
|
52
|
+
notNull(): /*elided*/ any;
|
|
53
|
+
unique(): /*elided*/ any;
|
|
54
|
+
default(value: any): /*elided*/ any;
|
|
55
|
+
};
|
|
56
|
+
timestamps(): /*elided*/ any;
|
|
57
|
+
addColumn(name: any, type: any): /*elided*/ any;
|
|
58
|
+
dropColumn(name: any): /*elided*/ any;
|
|
59
|
+
toCreateSQL(): string;
|
|
60
|
+
toAlterSQL(): string[];
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../../src/database/migration.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;GAcG;AACH,oCAZW,eAAe,WACf,MAAM,GACJ,MAAM,CAqTlB;AAED;;GAEG;AACH;;;;;EA4BC;AAED;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0JC"}
|