@coherent.js/core 1.0.0-beta.2 → 1.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/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 +1 -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,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Object-based Query Builder for Coherent.js Database Layer
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview Provides pure JavaScript object structure for building database queries
|
|
5
|
+
* with a declarative, object-based approach.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates a database query configuration object
|
|
9
|
+
*
|
|
10
|
+
* @typedef {Object} QueryConfig
|
|
11
|
+
* @property {string} [table] - The table to query
|
|
12
|
+
* @property {string|string[]} [select] - Columns to select
|
|
13
|
+
* @property {Object} [where] - Query conditions
|
|
14
|
+
* @property {Object} [orderBy] - Sort configuration
|
|
15
|
+
* @property {number} [limit] - Maximum number of results
|
|
16
|
+
* @property {number} [offset] - Number of rows to skip
|
|
17
|
+
* @property {Object} [insert] - Data to insert
|
|
18
|
+
* @property {Object} [update] - Data to update
|
|
19
|
+
* @property {boolean} [delete] - Whether to delete
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Creates a query configuration object
|
|
23
|
+
*
|
|
24
|
+
* @param {QueryConfig} config - Query configuration
|
|
25
|
+
* @returns {QueryConfig} The query configuration object
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Basic select
|
|
29
|
+
* const userQuery = createQuery({
|
|
30
|
+
* table: 'users',
|
|
31
|
+
* select: ['id', 'name', 'email'],
|
|
32
|
+
* where: { active: true },
|
|
33
|
+
* orderBy: { created_at: 'DESC' },
|
|
34
|
+
* limit: 10
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Insert
|
|
38
|
+
* const insertQuery = createQuery({
|
|
39
|
+
* table: 'users',
|
|
40
|
+
* insert: { name: 'John', email: 'john@example.com' }
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Update
|
|
44
|
+
* const updateQuery = createQuery({
|
|
45
|
+
* table: 'users',
|
|
46
|
+
* update: { last_login: new Date() },
|
|
47
|
+
* where: { id: 1 }
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Delete
|
|
51
|
+
* const deleteQuery = createQuery({
|
|
52
|
+
* table: 'users',
|
|
53
|
+
* where: { inactive_days: { '>': 365 } },
|
|
54
|
+
* delete: true
|
|
55
|
+
* });
|
|
56
|
+
*/
|
|
57
|
+
export function createQuery(config: QueryConfig): QueryConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Executes a query using the provided configuration
|
|
60
|
+
*
|
|
61
|
+
* @param {Object} db - Database connection/manager
|
|
62
|
+
* @param {QueryConfig} query - Query configuration
|
|
63
|
+
* @returns {Promise<*>} Query result
|
|
64
|
+
*/
|
|
65
|
+
export function executeQuery(db: Object, query: QueryConfig): Promise<any>;
|
|
66
|
+
export namespace QueryBuilder {
|
|
67
|
+
export { createQuery as create };
|
|
68
|
+
export { executeQuery as execute };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Creates a database query configuration object
|
|
72
|
+
*/
|
|
73
|
+
export type QueryConfig = {
|
|
74
|
+
/**
|
|
75
|
+
* - The table to query
|
|
76
|
+
*/
|
|
77
|
+
table?: string | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* - Columns to select
|
|
80
|
+
*/
|
|
81
|
+
select?: string | string[] | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* - Query conditions
|
|
84
|
+
*/
|
|
85
|
+
where?: Object | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* - Sort configuration
|
|
88
|
+
*/
|
|
89
|
+
orderBy?: Object | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* - Maximum number of results
|
|
92
|
+
*/
|
|
93
|
+
limit?: number | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* - Number of rows to skip
|
|
96
|
+
*/
|
|
97
|
+
offset?: number | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* - Data to insert
|
|
100
|
+
*/
|
|
101
|
+
insert?: Object | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* - Data to update
|
|
104
|
+
*/
|
|
105
|
+
update?: Object | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* - Whether to delete
|
|
108
|
+
*/
|
|
109
|
+
delete?: boolean | undefined;
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../../src/database/query-builder.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,oCAjCW,WAAW,GACT,WAAW,CAkCvB;AAED;;;;;;GAMG;AACH,iCAJW,MAAM,SACN,WAAW,GACT,OAAO,CAAC,GAAC,CAAC,CAKtB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Object-based Query Builder for Coherent.js Database Layer
|
|
3
|
+
*
|
|
4
|
+
* @fileoverview Provides pure JavaScript object structure for building database queries
|
|
5
|
+
* with a declarative, object-based approach.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates a database query configuration object
|
|
9
|
+
*
|
|
10
|
+
* @typedef {Object} QueryConfig
|
|
11
|
+
* @property {string} [table] - The table to query
|
|
12
|
+
* @property {string|string[]} [select] - Columns to select
|
|
13
|
+
* @property {Object} [where] - Query conditions
|
|
14
|
+
* @property {Object} [orderBy] - Sort configuration
|
|
15
|
+
* @property {number} [limit] - Maximum number of results
|
|
16
|
+
* @property {number} [offset] - Number of rows to skip
|
|
17
|
+
* @property {Object} [insert] - Data to insert
|
|
18
|
+
* @property {Object} [update] - Data to update
|
|
19
|
+
* @property {boolean} [delete] - Whether to delete
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Creates a query configuration object
|
|
23
|
+
*
|
|
24
|
+
* @param {QueryConfig} config - Query configuration
|
|
25
|
+
* @returns {QueryConfig} The query configuration object
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Basic select
|
|
29
|
+
* const userQuery = createQuery({
|
|
30
|
+
* table: 'users',
|
|
31
|
+
* select: ['id', 'name', 'email'],
|
|
32
|
+
* where: { active: true },
|
|
33
|
+
* orderBy: { created_at: 'DESC' },
|
|
34
|
+
* limit: 10
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Insert
|
|
38
|
+
* const insertQuery = createQuery({
|
|
39
|
+
* table: 'users',
|
|
40
|
+
* insert: { name: 'John', email: 'john@example.com' }
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Update
|
|
44
|
+
* const updateQuery = createQuery({
|
|
45
|
+
* table: 'users',
|
|
46
|
+
* update: { last_login: new Date() },
|
|
47
|
+
* where: { id: 1 }
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Delete
|
|
51
|
+
* const deleteQuery = createQuery({
|
|
52
|
+
* table: 'users',
|
|
53
|
+
* where: { inactive_days: { '>': 365 } },
|
|
54
|
+
* delete: true
|
|
55
|
+
* });
|
|
56
|
+
*/
|
|
57
|
+
export function createQuery(config) {
|
|
58
|
+
return { ...config };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Executes a query using the provided configuration
|
|
62
|
+
*
|
|
63
|
+
* @param {Object} db - Database connection/manager
|
|
64
|
+
* @param {QueryConfig} query - Query configuration
|
|
65
|
+
* @returns {Promise<*>} Query result
|
|
66
|
+
*/
|
|
67
|
+
export async function executeQuery(db, query) {
|
|
68
|
+
const { sql, params } = buildSQL(query);
|
|
69
|
+
return await db.query(sql, params);
|
|
70
|
+
}
|
|
71
|
+
// Internal SQL building functions
|
|
72
|
+
function buildSQL(query) {
|
|
73
|
+
const params = [];
|
|
74
|
+
let sql = '';
|
|
75
|
+
if (query.insert) {
|
|
76
|
+
sql = buildInsertSQL(query, params);
|
|
77
|
+
}
|
|
78
|
+
else if (query.update) {
|
|
79
|
+
sql = buildUpdateSQL(query, params);
|
|
80
|
+
}
|
|
81
|
+
else if (query.delete) {
|
|
82
|
+
sql = buildDeleteSQL(query, params);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
sql = buildSelectSQL(query, params);
|
|
86
|
+
}
|
|
87
|
+
return { sql, params };
|
|
88
|
+
}
|
|
89
|
+
function buildSelectSQL(query, params) {
|
|
90
|
+
const columns = Array.isArray(query.select)
|
|
91
|
+
? query.select.join(', ')
|
|
92
|
+
: (query.select || '*');
|
|
93
|
+
let sql = `SELECT ${columns} FROM ${query.table}`;
|
|
94
|
+
if (query.where) {
|
|
95
|
+
const whereClause = buildWhereClause(query.where, params);
|
|
96
|
+
if (whereClause)
|
|
97
|
+
sql += ` WHERE ${whereClause}`;
|
|
98
|
+
}
|
|
99
|
+
if (query.orderBy) {
|
|
100
|
+
sql += ' ORDER BY ' + Object.entries(query.orderBy)
|
|
101
|
+
.map(([col, dir]) => `${col} ${dir.toUpperCase()}`)
|
|
102
|
+
.join(', ');
|
|
103
|
+
}
|
|
104
|
+
if (query.limit)
|
|
105
|
+
sql += ` LIMIT ${query.limit}`;
|
|
106
|
+
if (query.offset)
|
|
107
|
+
sql += ` OFFSET ${query.offset}`;
|
|
108
|
+
return sql;
|
|
109
|
+
}
|
|
110
|
+
function buildInsertSQL(query, params) {
|
|
111
|
+
const columns = Object.keys(query.insert);
|
|
112
|
+
const placeholders = columns.map(() => '?').join(', ');
|
|
113
|
+
params.push(...Object.values(query.insert));
|
|
114
|
+
return `INSERT INTO ${query.table} (${columns.join(', ')}) VALUES (${placeholders})`;
|
|
115
|
+
}
|
|
116
|
+
function buildUpdateSQL(query, params) {
|
|
117
|
+
const setClause = Object.entries(query.update)
|
|
118
|
+
.map(([col]) => `${col} = ?`)
|
|
119
|
+
.join(', ');
|
|
120
|
+
params.push(...Object.values(query.update));
|
|
121
|
+
let sql = `UPDATE ${query.table} SET ${setClause}`;
|
|
122
|
+
if (query.where) {
|
|
123
|
+
const whereClause = buildWhereClause(query.where, params);
|
|
124
|
+
if (whereClause)
|
|
125
|
+
sql += ` WHERE ${whereClause}`;
|
|
126
|
+
}
|
|
127
|
+
return sql;
|
|
128
|
+
}
|
|
129
|
+
function buildDeleteSQL(query, params) {
|
|
130
|
+
let sql = `DELETE FROM ${query.table}`;
|
|
131
|
+
if (query.where) {
|
|
132
|
+
const whereClause = buildWhereClause(query.where, params);
|
|
133
|
+
if (whereClause)
|
|
134
|
+
sql += ` WHERE ${whereClause}`;
|
|
135
|
+
}
|
|
136
|
+
return sql;
|
|
137
|
+
}
|
|
138
|
+
function buildWhereClause(conditions, params, operator = 'AND') {
|
|
139
|
+
if (!conditions)
|
|
140
|
+
return '';
|
|
141
|
+
const clauses = [];
|
|
142
|
+
for (const [key, value] of Object.entries(conditions)) {
|
|
143
|
+
if (value === undefined)
|
|
144
|
+
continue;
|
|
145
|
+
// Handle logical operators at the top level
|
|
146
|
+
if (key === '$or' && Array.isArray(value)) {
|
|
147
|
+
const orClauses = value.map(c => `(${buildWhereClause(c, params)})`);
|
|
148
|
+
clauses.push(`(${orClauses.join(' OR ')})`);
|
|
149
|
+
}
|
|
150
|
+
else if (key === '$and' && Array.isArray(value)) {
|
|
151
|
+
const andClauses = value.map(c => `(${buildWhereClause(c, params)})`);
|
|
152
|
+
clauses.push(`(${andClauses.join(' AND ')})`);
|
|
153
|
+
}
|
|
154
|
+
else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
155
|
+
// Handle field operators like { '>': 10 } or { 'in': [1, 2, 3] }
|
|
156
|
+
for (const [op, val] of Object.entries(value)) {
|
|
157
|
+
if (op === 'in' && Array.isArray(val)) {
|
|
158
|
+
const placeholders = val.map(() => '?').join(', ');
|
|
159
|
+
clauses.push(`${key} IN (${placeholders})`);
|
|
160
|
+
params.push(...val);
|
|
161
|
+
}
|
|
162
|
+
else if (op === 'between' && Array.isArray(val) && val.length === 2) {
|
|
163
|
+
clauses.push(`${key} BETWEEN ? AND ?`);
|
|
164
|
+
params.push(...val);
|
|
165
|
+
}
|
|
166
|
+
else if (['>', '>=', '<', '<=', '!=', '<>', 'LIKE'].includes(op)) {
|
|
167
|
+
clauses.push(`${key} ${op} ?`);
|
|
168
|
+
params.push(val);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else if (value === null) {
|
|
173
|
+
clauses.push(`${key} IS NULL`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
clauses.push(`${key} = ?`);
|
|
177
|
+
params.push(value);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return clauses.join(` ${operator} `);
|
|
181
|
+
}
|
|
182
|
+
// For backwards compatibility
|
|
183
|
+
export const QueryBuilder = {
|
|
184
|
+
create: createQuery,
|
|
185
|
+
execute: executeQuery
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=query-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../../../src/database/query-builder.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,WAAW,CAAC,MAAM;IAChC,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAE,EAAE,KAAK;IAC1C,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,kCAAkC;AAClC,SAAS,QAAQ,CAAC,KAAK;IACrB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;IAE1B,IAAI,GAAG,GAAG,UAAU,OAAO,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC;IAElD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,WAAW;YAAE,GAAG,IAAI,UAAU,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,GAAG,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;aAChD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;aAClD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QAAE,GAAG,IAAI,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC;IAChD,IAAI,KAAK,CAAC,MAAM;QAAE,GAAG,IAAI,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC;IAEnD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,OAAO,eAAe,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,YAAY,GAAG,CAAC;AACvF,CAAC;AAED,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM;IACnC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC;SAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,IAAI,GAAG,GAAG,UAAU,KAAK,CAAC,KAAK,QAAQ,SAAS,EAAE,CAAC;IAEnD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,WAAW;YAAE,GAAG,IAAI,UAAU,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM;IACnC,IAAI,GAAG,GAAG,eAAe,KAAK,CAAC,KAAK,EAAE,CAAC;IAEvC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,WAAW;YAAE,GAAG,IAAI,UAAU,WAAW,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK;IAC5D,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAElC,4CAA4C;QAC5C,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChF,iEAAiE;YACjE,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,YAAY,GAAG,CAAC,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACtB,CAAC;qBAAM,IAAI,EAAE,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACtB,CAAC;qBAAM,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBACnE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,YAAY;CACtB,CAAC"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create database connection with configuration
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} config - Database configuration
|
|
5
|
+
* @returns {Promise<DatabaseManager>} Database manager instance
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const db = await createConnection({
|
|
9
|
+
* type: 'postgresql',
|
|
10
|
+
* host: 'localhost',
|
|
11
|
+
* database: 'myapp',
|
|
12
|
+
* username: 'user',
|
|
13
|
+
* password: 'pass'
|
|
14
|
+
* });
|
|
15
|
+
*/
|
|
16
|
+
export function createConnection(config: Object): Promise<DatabaseManager>;
|
|
17
|
+
/**
|
|
18
|
+
|
|
19
|
+
// Add custom methods if provided
|
|
20
|
+
if (definition.methods) {
|
|
21
|
+
Object.entries(definition.methods).forEach(([methodName, method]) => {
|
|
22
|
+
DynamicModel.prototype[methodName] = method;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Add custom static methods if provided
|
|
27
|
+
if (definition.staticMethods) {
|
|
28
|
+
Object.entries(definition.staticMethods).forEach(([methodName, method]) => {
|
|
29
|
+
DynamicModel[methodName] = method;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Register the model
|
|
34
|
+
registerModel(name, DynamicModel);
|
|
35
|
+
|
|
36
|
+
return DynamicModel;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Register a model class
|
|
41
|
+
*
|
|
42
|
+
* @param {string} name - Model name
|
|
43
|
+
* @param {Function} ModelClass - Model class
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* registerModel('User', UserModel);
|
|
47
|
+
*/
|
|
48
|
+
export function registerModel(name: string, ModelClass: Function): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get registered model by name
|
|
51
|
+
*
|
|
52
|
+
* @param {string} name - Model name
|
|
53
|
+
* @returns {Function|null} Model class or null if not found
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* const User = getModel('User');
|
|
57
|
+
*/
|
|
58
|
+
export function getModel(name: string): Function | null;
|
|
59
|
+
/**
|
|
60
|
+
* Get all registered models
|
|
61
|
+
*
|
|
62
|
+
* @returns {Map<string, Function>} Map of model names to classes
|
|
63
|
+
*/
|
|
64
|
+
export function getAllModels(): Map<string, Function>;
|
|
65
|
+
/**
|
|
66
|
+
* Run database migrations
|
|
67
|
+
*
|
|
68
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
69
|
+
* @param {Object} [config={}] - Migration configuration
|
|
70
|
+
* @returns {Promise<Array<string>>} Applied migration names
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* const applied = await runMigrations(db, {
|
|
74
|
+
* directory: './migrations'
|
|
75
|
+
* });
|
|
76
|
+
*/
|
|
77
|
+
export function runMigrations(db: DatabaseManager, config?: Object): Promise<Array<string>>;
|
|
78
|
+
/**
|
|
79
|
+
* Rollback database migrations
|
|
80
|
+
*
|
|
81
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
82
|
+
* @param {number} [steps=1] - Number of batches to rollback
|
|
83
|
+
* @param {Object} [config={}] - Migration configuration
|
|
84
|
+
* @returns {Promise<Array<string>>} Rolled back migration names
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* const rolledBack = await rollbackMigrations(db, 2);
|
|
88
|
+
*/
|
|
89
|
+
export function rollbackMigrations(db: DatabaseManager, steps?: number, config?: Object): Promise<Array<string>>;
|
|
90
|
+
/**
|
|
91
|
+
* Create a new migration file
|
|
92
|
+
*
|
|
93
|
+
* @param {string} name - Migration name
|
|
94
|
+
* @param {Object} [config={}] - Migration configuration
|
|
95
|
+
* @returns {Promise<string>} Created file path
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* const filePath = await createMigration('create_users_table');
|
|
99
|
+
*/
|
|
100
|
+
export function createMigrationFile(name: string, config?: Object): Promise<string>;
|
|
101
|
+
/**
|
|
102
|
+
* Seed database with initial data
|
|
103
|
+
*
|
|
104
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
105
|
+
* @param {Function|Array<Function>} seeders - Seeder functions
|
|
106
|
+
* @returns {Promise<void>}
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* await seedDatabase(db, [
|
|
110
|
+
* async (db) => {
|
|
111
|
+
* await User.create({ name: 'Admin', email: 'admin@example.com' });
|
|
112
|
+
* }
|
|
113
|
+
* ]);
|
|
114
|
+
*/
|
|
115
|
+
export function seedDatabase(db: DatabaseManager, seeders: Function | Array<Function>): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Validate database configuration
|
|
118
|
+
*
|
|
119
|
+
* @param {Object} config - Database configuration
|
|
120
|
+
* @returns {Object} Validation result
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* const validation = validateConfig(config);
|
|
124
|
+
* if (!validation.valid) {
|
|
125
|
+
* console.error('Config errors:', validation.errors);
|
|
126
|
+
* }
|
|
127
|
+
*/
|
|
128
|
+
export function validateConfig(config: Object): Object;
|
|
129
|
+
/**
|
|
130
|
+
* Create database backup
|
|
131
|
+
*
|
|
132
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
133
|
+
* @param {Object} [options={}] - Backup options
|
|
134
|
+
* @returns {Promise<string>} Backup file path or data
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* const backupPath = await createBackup(db, {
|
|
138
|
+
* format: 'sql',
|
|
139
|
+
* outputPath: './backups'
|
|
140
|
+
* });
|
|
141
|
+
*/
|
|
142
|
+
export function createBackup(db: DatabaseManager, options?: Object): Promise<string>;
|
|
143
|
+
/**
|
|
144
|
+
* Restore database from backup
|
|
145
|
+
*
|
|
146
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
147
|
+
* @param {string} backupPath - Path to backup file
|
|
148
|
+
* @param {Object} [options={}] - Restore options
|
|
149
|
+
* @returns {Promise<void>}
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* await restoreBackup(db, './backups/backup_2023-12-01.sql');
|
|
153
|
+
*/
|
|
154
|
+
export function restoreBackup(db: DatabaseManager, backupPath: string): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* Generate database schema documentation
|
|
157
|
+
*
|
|
158
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
159
|
+
* @param {Object} [options={}] - Documentation options
|
|
160
|
+
* @returns {Promise<Object>} Schema documentation
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* const docs = await generateSchemaDocs(db, {
|
|
164
|
+
* includeIndexes: true,
|
|
165
|
+
* includeRelationships: true
|
|
166
|
+
* });
|
|
167
|
+
*/
|
|
168
|
+
export function generateSchemaDocs(db: DatabaseManager): Promise<Object>;
|
|
169
|
+
/**
|
|
170
|
+
* Database health check utility
|
|
171
|
+
*
|
|
172
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
173
|
+
* @returns {Promise<Object>} Health check result
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* const health = await checkDatabaseHealth(db);
|
|
177
|
+
* console.log(`Database is ${health.status}`);
|
|
178
|
+
*/
|
|
179
|
+
export function checkDatabaseHealth(db: DatabaseManager): Promise<Object>;
|
|
180
|
+
/**
|
|
181
|
+
* Batch operation utility
|
|
182
|
+
*
|
|
183
|
+
* @param {DatabaseManager} db - Database manager instance
|
|
184
|
+
* @param {Array} operations - Array of operations to execute
|
|
185
|
+
* @param {Object} [options={}] - Batch options
|
|
186
|
+
* @returns {Promise<Array>} Results array
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* const results = await batchOperations(db, [
|
|
190
|
+
* { sql: 'INSERT INTO users (name) VALUES (?)', params: ['John'] },
|
|
191
|
+
* { sql: 'INSERT INTO users (name) VALUES (?)', params: ['Jane'] }
|
|
192
|
+
* ]);
|
|
193
|
+
*/
|
|
194
|
+
export function batchOperations(db: DatabaseManager, operations: any[], options?: Object): Promise<any[]>;
|
|
195
|
+
import { DatabaseManager } from './connection-manager.js';
|
|
196
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/database/utils.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;GAcG;AACH,yCAZW,MAAM,GACJ,OAAO,CAAC,eAAe,CAAC,CAepC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,oCANW,MAAM,8BAahB;AAED;;;;;;;;GAQG;AACH,+BANW,MAAM,GACJ,WAAS,IAAI,CAOzB;AAED;;;;GAIG;AACH,gCAFa,GAAG,CAAC,MAAM,WAAW,CAIjC;AAED;;;;;;;;;;;GAWG;AACH,kCATW,eAAe,WACf,MAAM,GACJ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAWlC;AAED;;;;;;;;;;GAUG;AACH,uCARW,eAAe,UACf,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CASlC;AAED;;;;;;;;;GASG;AACH,0CAPW,MAAM,WACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAS3B;AAED;;;;;;;;;;;;;GAaG;AACH,iCAXW,eAAe,WACf,WAAS,KAAK,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAiBzB;AAED;;;;;;;;;;;GAWG;AACH,uCATW,MAAM,GACJ,MAAM,CA6ClB;AAED;;;;;;;;;;;;GAYG;AACH,iCAVW,eAAe,YACf,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAwB3B;AAED;;;;;;;;;;GAUG;AACH,kCARW,eAAe,cACf,MAAM,GAEJ,OAAO,CAAC,IAAI,CAAC,CAQzB;AAED;;;;;;;;;;;;GAYG;AACH,uCAVW,eAAe,GAEb,OAAO,CAAC,MAAM,CAAC,CA6B3B;AAED;;;;;;;;;GASG;AACH,wCAPW,eAAe,GACb,OAAO,CAAC,MAAM,CAAC,CA8B3B;AAED;;;;;;;;;;;;;GAaG;AACH,oCAXW,eAAe,+BAEf,MAAM,GACJ,OAAO,OAAO,CAyD1B;gCA/Y+B,yBAAyB"}
|