@orchestr-sh/orchestr 1.0.1 → 1.1.0
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/Database/Adapters/DrizzleAdapter.d.ts +119 -0
- package/dist/Database/Adapters/DrizzleAdapter.d.ts.map +1 -0
- package/dist/Database/Adapters/DrizzleAdapter.js +384 -0
- package/dist/Database/Adapters/DrizzleAdapter.js.map +1 -0
- package/dist/Database/Connection.d.ts +103 -0
- package/dist/Database/Connection.d.ts.map +1 -0
- package/dist/Database/Connection.js +164 -0
- package/dist/Database/Connection.js.map +1 -0
- package/dist/Database/Contracts/DatabaseAdapter.d.ts +85 -0
- package/dist/Database/Contracts/DatabaseAdapter.d.ts.map +1 -0
- package/dist/Database/Contracts/DatabaseAdapter.js +9 -0
- package/dist/Database/Contracts/DatabaseAdapter.js.map +1 -0
- package/dist/Database/Contracts/QueryBuilderInterface.d.ts +196 -0
- package/dist/Database/Contracts/QueryBuilderInterface.d.ts.map +1 -0
- package/dist/Database/Contracts/QueryBuilderInterface.js +8 -0
- package/dist/Database/Contracts/QueryBuilderInterface.js.map +1 -0
- package/dist/Database/Contracts/Schema.d.ts +234 -0
- package/dist/Database/Contracts/Schema.d.ts.map +1 -0
- package/dist/Database/Contracts/Schema.js +8 -0
- package/dist/Database/Contracts/Schema.js.map +1 -0
- package/dist/Database/DatabaseManager.d.ts +61 -0
- package/dist/Database/DatabaseManager.d.ts.map +1 -0
- package/dist/Database/DatabaseManager.js +102 -0
- package/dist/Database/DatabaseManager.js.map +1 -0
- package/dist/Database/DatabaseServiceProvider.d.ts +17 -0
- package/dist/Database/DatabaseServiceProvider.d.ts.map +1 -0
- package/dist/Database/DatabaseServiceProvider.js +44 -0
- package/dist/Database/DatabaseServiceProvider.js.map +1 -0
- package/dist/Database/Eloquent/Builder.d.ts +76 -0
- package/dist/Database/Eloquent/Builder.d.ts.map +1 -0
- package/dist/Database/Eloquent/Builder.js +154 -0
- package/dist/Database/Eloquent/Builder.js.map +1 -0
- package/dist/Database/Eloquent/Collection.d.ts +137 -0
- package/dist/Database/Eloquent/Collection.d.ts.map +1 -0
- package/dist/Database/Eloquent/Collection.js +284 -0
- package/dist/Database/Eloquent/Collection.js.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts +44 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.js +8 -0
- package/dist/Database/Eloquent/Concerns/HasAttributes.js.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts +41 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts.map +1 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.js +14 -0
- package/dist/Database/Eloquent/Concerns/HasTimestamps.js.map +1 -0
- package/dist/Database/Eloquent/Model.d.ts +265 -0
- package/dist/Database/Eloquent/Model.d.ts.map +1 -0
- package/dist/Database/Eloquent/Model.js +523 -0
- package/dist/Database/Eloquent/Model.js.map +1 -0
- package/dist/Database/Eloquent/SoftDeletes.d.ts +41 -0
- package/dist/Database/Eloquent/SoftDeletes.d.ts.map +1 -0
- package/dist/Database/Eloquent/SoftDeletes.js +22 -0
- package/dist/Database/Eloquent/SoftDeletes.js.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.d.ts +44 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.d.ts.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.js +8 -0
- package/dist/Database/Ensemble/Concerns/HasAttributes.js.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.d.ts +41 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.d.ts.map +1 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.js +14 -0
- package/dist/Database/Ensemble/Concerns/HasTimestamps.js.map +1 -0
- package/dist/Database/Ensemble/Ensemble.d.ts +266 -0
- package/dist/Database/Ensemble/Ensemble.d.ts.map +1 -0
- package/dist/Database/Ensemble/Ensemble.js +524 -0
- package/dist/Database/Ensemble/Ensemble.js.map +1 -0
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts +76 -0
- package/dist/Database/Ensemble/EnsembleBuilder.d.ts.map +1 -0
- package/dist/Database/Ensemble/EnsembleBuilder.js +154 -0
- package/dist/Database/Ensemble/EnsembleBuilder.js.map +1 -0
- package/dist/Database/Ensemble/EnsembleCollection.d.ts +137 -0
- package/dist/Database/Ensemble/EnsembleCollection.d.ts.map +1 -0
- package/dist/Database/Ensemble/EnsembleCollection.js +284 -0
- package/dist/Database/Ensemble/EnsembleCollection.js.map +1 -0
- package/dist/Database/Ensemble/SoftDeletes.d.ts +41 -0
- package/dist/Database/Ensemble/SoftDeletes.d.ts.map +1 -0
- package/dist/Database/Ensemble/SoftDeletes.js +22 -0
- package/dist/Database/Ensemble/SoftDeletes.js.map +1 -0
- package/dist/Database/Query/Builder.d.ts +219 -0
- package/dist/Database/Query/Builder.d.ts.map +1 -0
- package/dist/Database/Query/Builder.js +554 -0
- package/dist/Database/Query/Builder.js.map +1 -0
- package/dist/Database/Query/Expression.d.ts +22 -0
- package/dist/Database/Query/Expression.d.ts.map +1 -0
- package/dist/Database/Query/Expression.js +35 -0
- package/dist/Database/Query/Expression.js.map +1 -0
- package/dist/Facades/DB.d.ts +7 -0
- package/dist/Facades/DB.d.ts.map +1 -0
- package/dist/Facades/DB.js +42 -0
- package/dist/Facades/DB.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/package.json +13 -5
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DrizzleAdapter
|
|
3
|
+
*
|
|
4
|
+
* Database adapter implementation using Drizzle ORM
|
|
5
|
+
*/
|
|
6
|
+
import { DatabaseAdapter, DatabaseConfig, QueryResult } from '../Contracts/DatabaseAdapter';
|
|
7
|
+
export declare class DrizzleAdapter implements DatabaseAdapter {
|
|
8
|
+
protected config: DatabaseConfig;
|
|
9
|
+
protected client: any;
|
|
10
|
+
protected connected: boolean;
|
|
11
|
+
protected inTransaction: boolean;
|
|
12
|
+
protected transactionClient: any;
|
|
13
|
+
constructor(config: DatabaseConfig);
|
|
14
|
+
/**
|
|
15
|
+
* Connect to the database
|
|
16
|
+
*/
|
|
17
|
+
connect(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Connect to PostgreSQL
|
|
20
|
+
*/
|
|
21
|
+
protected connectPostgres(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Connect to MySQL
|
|
24
|
+
*/
|
|
25
|
+
protected connectMySQL(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Connect to SQLite
|
|
28
|
+
*/
|
|
29
|
+
protected connectSQLite(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Disconnect from the database
|
|
32
|
+
*/
|
|
33
|
+
disconnect(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Execute a raw SQL query
|
|
36
|
+
*/
|
|
37
|
+
query<T = any>(sql: string, bindings?: any[]): Promise<QueryResult<T>>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute a SELECT query
|
|
40
|
+
*/
|
|
41
|
+
select<T = any>(sql: string, bindings?: any[]): Promise<T[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Execute an INSERT query
|
|
44
|
+
*/
|
|
45
|
+
insert(sql: string, bindings?: any[]): Promise<any>;
|
|
46
|
+
/**
|
|
47
|
+
* Execute an UPDATE query
|
|
48
|
+
*/
|
|
49
|
+
update(sql: string, bindings?: any[]): Promise<number>;
|
|
50
|
+
/**
|
|
51
|
+
* Execute a DELETE query
|
|
52
|
+
*/
|
|
53
|
+
delete(sql: string, bindings?: any[]): Promise<number>;
|
|
54
|
+
/**
|
|
55
|
+
* Begin a transaction
|
|
56
|
+
*/
|
|
57
|
+
beginTransaction(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Commit a transaction
|
|
60
|
+
*/
|
|
61
|
+
commit(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Rollback a transaction
|
|
64
|
+
*/
|
|
65
|
+
rollback(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Execute a callback within a transaction
|
|
68
|
+
*/
|
|
69
|
+
transaction<T>(callback: (adapter: DatabaseAdapter) => Promise<T>): Promise<T>;
|
|
70
|
+
/**
|
|
71
|
+
* Check if adapter is connected
|
|
72
|
+
*/
|
|
73
|
+
isConnected(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Get the underlying driver instance
|
|
76
|
+
*/
|
|
77
|
+
getDriver(): any;
|
|
78
|
+
/**
|
|
79
|
+
* Get table information
|
|
80
|
+
*/
|
|
81
|
+
getTableInfo(tableName: string): Promise<any>;
|
|
82
|
+
/**
|
|
83
|
+
* Get PostgreSQL table info
|
|
84
|
+
*/
|
|
85
|
+
protected getPostgresTableInfo(tableName: string): Promise<any>;
|
|
86
|
+
/**
|
|
87
|
+
* Get MySQL table info
|
|
88
|
+
*/
|
|
89
|
+
protected getMySQLTableInfo(tableName: string): Promise<any>;
|
|
90
|
+
/**
|
|
91
|
+
* Get SQLite table info
|
|
92
|
+
*/
|
|
93
|
+
protected getSQLiteTableInfo(tableName: string): Promise<any>;
|
|
94
|
+
/**
|
|
95
|
+
* Get all table names
|
|
96
|
+
*/
|
|
97
|
+
getTables(): Promise<string[]>;
|
|
98
|
+
/**
|
|
99
|
+
* Get PostgreSQL tables
|
|
100
|
+
*/
|
|
101
|
+
protected getPostgresTables(): Promise<string[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Get MySQL tables
|
|
104
|
+
*/
|
|
105
|
+
protected getMySQLTables(): Promise<string[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Get SQLite tables
|
|
108
|
+
*/
|
|
109
|
+
protected getSQLiteTables(): Promise<string[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Bind parameters to SQL query
|
|
112
|
+
*/
|
|
113
|
+
protected bindParameters(sql: string, bindings?: any[]): string;
|
|
114
|
+
/**
|
|
115
|
+
* Ensure the adapter is connected
|
|
116
|
+
*/
|
|
117
|
+
protected ensureConnected(): void;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=DrizzleAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrizzleAdapter.d.ts","sourceRoot":"","sources":["../../../src/Database/Adapters/DrizzleAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DrizzleAdapter
|
|
4
|
+
*
|
|
5
|
+
* Database adapter implementation using Drizzle ORM
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.DrizzleAdapter = void 0;
|
|
42
|
+
class DrizzleAdapter {
|
|
43
|
+
config;
|
|
44
|
+
client;
|
|
45
|
+
connected = false;
|
|
46
|
+
inTransaction = false;
|
|
47
|
+
transactionClient;
|
|
48
|
+
constructor(config) {
|
|
49
|
+
this.config = config;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Connect to the database
|
|
53
|
+
*/
|
|
54
|
+
async connect() {
|
|
55
|
+
if (this.connected) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
// Dynamically import the appropriate Drizzle driver
|
|
60
|
+
switch (this.config.driver) {
|
|
61
|
+
case 'postgres':
|
|
62
|
+
await this.connectPostgres();
|
|
63
|
+
break;
|
|
64
|
+
case 'mysql':
|
|
65
|
+
case 'mysql2':
|
|
66
|
+
await this.connectMySQL();
|
|
67
|
+
break;
|
|
68
|
+
case 'better-sqlite3':
|
|
69
|
+
case 'sqlite':
|
|
70
|
+
await this.connectSQLite();
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
throw new Error(`Unsupported database driver: ${this.config.driver}`);
|
|
74
|
+
}
|
|
75
|
+
this.connected = true;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new Error(`Failed to connect to database: ${error?.message || error}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Connect to PostgreSQL
|
|
83
|
+
*/
|
|
84
|
+
async connectPostgres() {
|
|
85
|
+
const { drizzle } = await Promise.resolve().then(() => __importStar(require('drizzle-orm/postgres-js')));
|
|
86
|
+
const postgres = await Promise.resolve().then(() => __importStar(require('postgres')));
|
|
87
|
+
const client = postgres.default({
|
|
88
|
+
host: this.config.host,
|
|
89
|
+
port: this.config.port,
|
|
90
|
+
database: this.config.database,
|
|
91
|
+
username: this.config.username,
|
|
92
|
+
password: this.config.password,
|
|
93
|
+
max: this.config.poolMax || 10,
|
|
94
|
+
});
|
|
95
|
+
this.client = drizzle(client);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Connect to MySQL
|
|
99
|
+
*/
|
|
100
|
+
async connectMySQL() {
|
|
101
|
+
const { drizzle } = await Promise.resolve().then(() => __importStar(require('drizzle-orm/mysql2')));
|
|
102
|
+
const mysql = await Promise.resolve().then(() => __importStar(require('mysql2/promise')));
|
|
103
|
+
const connection = await mysql.createPool({
|
|
104
|
+
host: this.config.host,
|
|
105
|
+
port: this.config.port,
|
|
106
|
+
database: this.config.database,
|
|
107
|
+
user: this.config.username,
|
|
108
|
+
password: this.config.password,
|
|
109
|
+
connectionLimit: this.config.poolMax || 10,
|
|
110
|
+
});
|
|
111
|
+
this.client = drizzle(connection);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Connect to SQLite
|
|
115
|
+
*/
|
|
116
|
+
async connectSQLite() {
|
|
117
|
+
const { drizzle } = await Promise.resolve().then(() => __importStar(require('drizzle-orm/better-sqlite3')));
|
|
118
|
+
const Database = await Promise.resolve().then(() => __importStar(require('better-sqlite3')));
|
|
119
|
+
const client = new Database.default(this.config.database);
|
|
120
|
+
this.client = drizzle(client);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Disconnect from the database
|
|
124
|
+
*/
|
|
125
|
+
async disconnect() {
|
|
126
|
+
if (!this.connected) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// Drizzle doesn't require explicit disconnection
|
|
130
|
+
// But we'll mark as disconnected
|
|
131
|
+
this.connected = false;
|
|
132
|
+
this.client = null;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Execute a raw SQL query
|
|
136
|
+
*/
|
|
137
|
+
async query(sql, bindings = []) {
|
|
138
|
+
this.ensureConnected();
|
|
139
|
+
try {
|
|
140
|
+
const client = this.inTransaction ? this.transactionClient : this.client;
|
|
141
|
+
// Use the underlying SQL query capability
|
|
142
|
+
const result = await client.execute(this.bindParameters(sql, bindings));
|
|
143
|
+
return {
|
|
144
|
+
rows: Array.isArray(result) ? result : result.rows || [],
|
|
145
|
+
rowCount: Array.isArray(result) ? result.length : result.rowCount || 0,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
throw new Error(`Query failed: ${error?.message || error}\nSQL: ${sql}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Execute a SELECT query
|
|
154
|
+
*/
|
|
155
|
+
async select(sql, bindings = []) {
|
|
156
|
+
const result = await this.query(sql, bindings);
|
|
157
|
+
return result.rows;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Execute an INSERT query
|
|
161
|
+
*/
|
|
162
|
+
async insert(sql, bindings = []) {
|
|
163
|
+
this.ensureConnected();
|
|
164
|
+
try {
|
|
165
|
+
const client = this.inTransaction ? this.transactionClient : this.client;
|
|
166
|
+
const result = await client.execute(this.bindParameters(sql, bindings));
|
|
167
|
+
// Return the inserted ID
|
|
168
|
+
return result.insertId || result.lastInsertRowid || result.rows?.[0]?.id;
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
throw new Error(`Insert failed: ${error?.message || error}\nSQL: ${sql}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Execute an UPDATE query
|
|
176
|
+
*/
|
|
177
|
+
async update(sql, bindings = []) {
|
|
178
|
+
const result = await this.query(sql, bindings);
|
|
179
|
+
return result.rowCount;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Execute a DELETE query
|
|
183
|
+
*/
|
|
184
|
+
async delete(sql, bindings = []) {
|
|
185
|
+
const result = await this.query(sql, bindings);
|
|
186
|
+
return result.rowCount;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Begin a transaction
|
|
190
|
+
*/
|
|
191
|
+
async beginTransaction() {
|
|
192
|
+
this.ensureConnected();
|
|
193
|
+
if (this.inTransaction) {
|
|
194
|
+
throw new Error('Transaction already in progress');
|
|
195
|
+
}
|
|
196
|
+
this.inTransaction = true;
|
|
197
|
+
// For now, we'll use simple BEGIN/COMMIT/ROLLBACK
|
|
198
|
+
// In a more sophisticated implementation, we'd use Drizzle's transaction API
|
|
199
|
+
await this.query('BEGIN');
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Commit a transaction
|
|
203
|
+
*/
|
|
204
|
+
async commit() {
|
|
205
|
+
if (!this.inTransaction) {
|
|
206
|
+
throw new Error('No transaction in progress');
|
|
207
|
+
}
|
|
208
|
+
await this.query('COMMIT');
|
|
209
|
+
this.inTransaction = false;
|
|
210
|
+
this.transactionClient = null;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Rollback a transaction
|
|
214
|
+
*/
|
|
215
|
+
async rollback() {
|
|
216
|
+
if (!this.inTransaction) {
|
|
217
|
+
throw new Error('No transaction in progress');
|
|
218
|
+
}
|
|
219
|
+
await this.query('ROLLBACK');
|
|
220
|
+
this.inTransaction = false;
|
|
221
|
+
this.transactionClient = null;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Execute a callback within a transaction
|
|
225
|
+
*/
|
|
226
|
+
async transaction(callback) {
|
|
227
|
+
await this.beginTransaction();
|
|
228
|
+
try {
|
|
229
|
+
const result = await callback(this);
|
|
230
|
+
await this.commit();
|
|
231
|
+
return result;
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
await this.rollback();
|
|
235
|
+
throw error;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Check if adapter is connected
|
|
240
|
+
*/
|
|
241
|
+
isConnected() {
|
|
242
|
+
return this.connected;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get the underlying driver instance
|
|
246
|
+
*/
|
|
247
|
+
getDriver() {
|
|
248
|
+
return this.client;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Get table information
|
|
252
|
+
*/
|
|
253
|
+
async getTableInfo(tableName) {
|
|
254
|
+
this.ensureConnected();
|
|
255
|
+
// Implementation varies by driver
|
|
256
|
+
switch (this.config.driver) {
|
|
257
|
+
case 'postgres':
|
|
258
|
+
return this.getPostgresTableInfo(tableName);
|
|
259
|
+
case 'mysql':
|
|
260
|
+
case 'mysql2':
|
|
261
|
+
return this.getMySQLTableInfo(tableName);
|
|
262
|
+
case 'better-sqlite3':
|
|
263
|
+
case 'sqlite':
|
|
264
|
+
return this.getSQLiteTableInfo(tableName);
|
|
265
|
+
default:
|
|
266
|
+
throw new Error('Table info not supported for this driver');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get PostgreSQL table info
|
|
271
|
+
*/
|
|
272
|
+
async getPostgresTableInfo(tableName) {
|
|
273
|
+
const sql = `
|
|
274
|
+
SELECT column_name, data_type, is_nullable, column_default
|
|
275
|
+
FROM information_schema.columns
|
|
276
|
+
WHERE table_name = ?
|
|
277
|
+
ORDER BY ordinal_position
|
|
278
|
+
`;
|
|
279
|
+
return this.select(sql, [tableName]);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get MySQL table info
|
|
283
|
+
*/
|
|
284
|
+
async getMySQLTableInfo(tableName) {
|
|
285
|
+
const sql = `DESCRIBE ${tableName}`;
|
|
286
|
+
return this.select(sql);
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get SQLite table info
|
|
290
|
+
*/
|
|
291
|
+
async getSQLiteTableInfo(tableName) {
|
|
292
|
+
const sql = `PRAGMA table_info(${tableName})`;
|
|
293
|
+
return this.select(sql);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Get all table names
|
|
297
|
+
*/
|
|
298
|
+
async getTables() {
|
|
299
|
+
this.ensureConnected();
|
|
300
|
+
switch (this.config.driver) {
|
|
301
|
+
case 'postgres':
|
|
302
|
+
return this.getPostgresTables();
|
|
303
|
+
case 'mysql':
|
|
304
|
+
case 'mysql2':
|
|
305
|
+
return this.getMySQLTables();
|
|
306
|
+
case 'better-sqlite3':
|
|
307
|
+
case 'sqlite':
|
|
308
|
+
return this.getSQLiteTables();
|
|
309
|
+
default:
|
|
310
|
+
throw new Error('Get tables not supported for this driver');
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get PostgreSQL tables
|
|
315
|
+
*/
|
|
316
|
+
async getPostgresTables() {
|
|
317
|
+
const sql = `
|
|
318
|
+
SELECT table_name
|
|
319
|
+
FROM information_schema.tables
|
|
320
|
+
WHERE table_schema = 'public'
|
|
321
|
+
AND table_type = 'BASE TABLE'
|
|
322
|
+
`;
|
|
323
|
+
const result = await this.select(sql);
|
|
324
|
+
return result.map((row) => row.table_name);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Get MySQL tables
|
|
328
|
+
*/
|
|
329
|
+
async getMySQLTables() {
|
|
330
|
+
const sql = 'SHOW TABLES';
|
|
331
|
+
const result = await this.select(sql);
|
|
332
|
+
return result.map((row) => Object.values(row)[0]);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Get SQLite tables
|
|
336
|
+
*/
|
|
337
|
+
async getSQLiteTables() {
|
|
338
|
+
const sql = `
|
|
339
|
+
SELECT name
|
|
340
|
+
FROM sqlite_master
|
|
341
|
+
WHERE type = 'table'
|
|
342
|
+
AND name NOT LIKE 'sqlite_%'
|
|
343
|
+
`;
|
|
344
|
+
const result = await this.select(sql);
|
|
345
|
+
return result.map((row) => row.name);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Bind parameters to SQL query
|
|
349
|
+
*/
|
|
350
|
+
bindParameters(sql, bindings = []) {
|
|
351
|
+
if (bindings.length === 0) {
|
|
352
|
+
return sql;
|
|
353
|
+
}
|
|
354
|
+
// Replace ? placeholders with actual values
|
|
355
|
+
// Note: This is a simple implementation. In production, use parameterized queries
|
|
356
|
+
let index = 0;
|
|
357
|
+
return sql.replace(/\?/g, () => {
|
|
358
|
+
const value = bindings[index++];
|
|
359
|
+
if (value === null || value === undefined) {
|
|
360
|
+
return 'NULL';
|
|
361
|
+
}
|
|
362
|
+
if (typeof value === 'string') {
|
|
363
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
364
|
+
}
|
|
365
|
+
if (typeof value === 'boolean') {
|
|
366
|
+
return value ? '1' : '0';
|
|
367
|
+
}
|
|
368
|
+
if (value instanceof Date) {
|
|
369
|
+
return `'${value.toISOString()}'`;
|
|
370
|
+
}
|
|
371
|
+
return String(value);
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Ensure the adapter is connected
|
|
376
|
+
*/
|
|
377
|
+
ensureConnected() {
|
|
378
|
+
if (!this.connected) {
|
|
379
|
+
throw new Error('Database not connected. Call connect() first.');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
exports.DrizzleAdapter = DrizzleAdapter;
|
|
384
|
+
//# sourceMappingURL=DrizzleAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrizzleAdapter.js","sourceRoot":"","sources":["../../../src/Database/Adapters/DrizzleAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Class
|
|
3
|
+
*
|
|
4
|
+
* Represents a database connection
|
|
5
|
+
*/
|
|
6
|
+
import { DatabaseAdapter, DatabaseConfig } from './Contracts/DatabaseAdapter';
|
|
7
|
+
import { Builder } from './Query/Builder';
|
|
8
|
+
export declare class Connection {
|
|
9
|
+
protected adapter: DatabaseAdapter;
|
|
10
|
+
protected config: DatabaseConfig;
|
|
11
|
+
protected queryLog: Array<{
|
|
12
|
+
query: string;
|
|
13
|
+
bindings: any[];
|
|
14
|
+
time: number;
|
|
15
|
+
}>;
|
|
16
|
+
protected loggingEnabled: boolean;
|
|
17
|
+
constructor(adapter: DatabaseAdapter, config: DatabaseConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Get a query builder instance
|
|
20
|
+
*/
|
|
21
|
+
table(tableName: string): Builder;
|
|
22
|
+
/**
|
|
23
|
+
* Execute a raw SQL query
|
|
24
|
+
*/
|
|
25
|
+
query(sql: string, bindings?: any[]): Promise<any>;
|
|
26
|
+
/**
|
|
27
|
+
* Execute a SELECT query
|
|
28
|
+
*/
|
|
29
|
+
select(sql: string, bindings?: any[]): Promise<any[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Execute an INSERT query
|
|
32
|
+
*/
|
|
33
|
+
insert(sql: string, bindings?: any[]): Promise<any>;
|
|
34
|
+
/**
|
|
35
|
+
* Execute an UPDATE query
|
|
36
|
+
*/
|
|
37
|
+
update(sql: string, bindings?: any[]): Promise<number>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute a DELETE query
|
|
40
|
+
*/
|
|
41
|
+
delete(sql: string, bindings?: any[]): Promise<number>;
|
|
42
|
+
/**
|
|
43
|
+
* Begin a transaction
|
|
44
|
+
*/
|
|
45
|
+
beginTransaction(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Commit a transaction
|
|
48
|
+
*/
|
|
49
|
+
commit(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Rollback a transaction
|
|
52
|
+
*/
|
|
53
|
+
rollback(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Execute a callback within a transaction
|
|
56
|
+
*/
|
|
57
|
+
transaction<T>(callback: (connection: Connection) => Promise<T>): Promise<T>;
|
|
58
|
+
/**
|
|
59
|
+
* Connect to the database
|
|
60
|
+
*/
|
|
61
|
+
connect(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Disconnect from the database
|
|
64
|
+
*/
|
|
65
|
+
disconnect(): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Check if connected
|
|
68
|
+
*/
|
|
69
|
+
isConnected(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get the underlying adapter
|
|
72
|
+
*/
|
|
73
|
+
getAdapter(): DatabaseAdapter;
|
|
74
|
+
/**
|
|
75
|
+
* Get the configuration
|
|
76
|
+
*/
|
|
77
|
+
getConfig(): DatabaseConfig;
|
|
78
|
+
/**
|
|
79
|
+
* Enable query logging
|
|
80
|
+
*/
|
|
81
|
+
enableQueryLog(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Disable query logging
|
|
84
|
+
*/
|
|
85
|
+
disableQueryLog(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Get the query log
|
|
88
|
+
*/
|
|
89
|
+
getQueryLog(): Array<{
|
|
90
|
+
query: string;
|
|
91
|
+
bindings: any[];
|
|
92
|
+
time: number;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* Clear the query log
|
|
96
|
+
*/
|
|
97
|
+
flushQueryLog(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Run a query with logging
|
|
100
|
+
*/
|
|
101
|
+
protected runQueryWithLogging<T>(query: string, bindings: any[], callback: () => Promise<T>): Promise<T>;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=Connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../src/Database/Connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,qBAAa,UAAU;IAKnB,SAAS,CAAC,OAAO,EAAE,eAAe;IAClC,SAAS,CAAC,MAAM,EAAE,cAAc;IALlC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACjF,SAAS,CAAC,cAAc,EAAE,OAAO,CAAS;gBAG9B,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc;IAGlC;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAI5D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7D;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAalF;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,UAAU,IAAI,eAAe;IAI7B;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAItE;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;cACa,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,GAAG,EAAE,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC;CAoBd"}
|