@forgebase/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 +470 -0
- package/dist/cjs/adapters/base.d.ts +20 -0
- package/dist/cjs/adapters/base.d.ts.map +1 -0
- package/dist/cjs/adapters/base.js +13 -0
- package/dist/cjs/adapters/base.js.map +1 -0
- package/dist/cjs/adapters/index.d.ts +6 -0
- package/dist/cjs/adapters/index.d.ts.map +1 -0
- package/dist/cjs/adapters/index.js +24 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/adapters/postgres.d.ts +13 -0
- package/dist/cjs/adapters/postgres.d.ts.map +1 -0
- package/dist/cjs/adapters/postgres.js +51 -0
- package/dist/cjs/adapters/postgres.js.map +1 -0
- package/dist/cjs/adapters/sqlite.d.ts +13 -0
- package/dist/cjs/adapters/sqlite.d.ts.map +1 -0
- package/dist/cjs/adapters/sqlite.js +47 -0
- package/dist/cjs/adapters/sqlite.js.map +1 -0
- package/dist/cjs/adapters/types.d.ts +8 -0
- package/dist/cjs/adapters/types.d.ts.map +1 -0
- package/dist/cjs/adapters/types.js +3 -0
- package/dist/cjs/adapters/types.js.map +1 -0
- package/dist/cjs/database.d.ts +73 -0
- package/dist/cjs/database.d.ts.map +1 -0
- package/dist/cjs/database.js +673 -0
- package/dist/cjs/database.js.map +1 -0
- package/dist/cjs/errors.d.ts +37 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +64 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/kysely-hooks.d.ts +45 -0
- package/dist/cjs/kysely-hooks.d.ts.map +1 -0
- package/dist/cjs/kysely-hooks.js +93 -0
- package/dist/cjs/kysely-hooks.js.map +1 -0
- package/dist/cjs/libsql/example.d.ts +2 -0
- package/dist/cjs/libsql/example.d.ts.map +1 -0
- package/dist/cjs/libsql/example.js +44 -0
- package/dist/cjs/libsql/example.js.map +1 -0
- package/dist/cjs/libsql/index.d.ts +36 -0
- package/dist/cjs/libsql/index.d.ts.map +1 -0
- package/dist/cjs/libsql/index.js +155 -0
- package/dist/cjs/libsql/index.js.map +1 -0
- package/dist/cjs/permissionService.d.ts +20 -0
- package/dist/cjs/permissionService.d.ts.map +1 -0
- package/dist/cjs/permissionService.js +107 -0
- package/dist/cjs/permissionService.js.map +1 -0
- package/dist/cjs/rlsFunctionRegistry.d.ts +43 -0
- package/dist/cjs/rlsFunctionRegistry.d.ts.map +1 -0
- package/dist/cjs/rlsFunctionRegistry.js +63 -0
- package/dist/cjs/rlsFunctionRegistry.js.map +1 -0
- package/dist/cjs/rlsManager.d.ts +23 -0
- package/dist/cjs/rlsManager.d.ts.map +1 -0
- package/dist/cjs/rlsManager.js +371 -0
- package/dist/cjs/rlsManager.js.map +1 -0
- package/dist/cjs/schema.d.ts +15 -0
- package/dist/cjs/schema.d.ts.map +1 -0
- package/dist/cjs/schema.js +119 -0
- package/dist/cjs/schema.js.map +1 -0
- package/dist/cjs/sdk/client.d.ts +324 -0
- package/dist/cjs/sdk/client.d.ts.map +1 -0
- package/dist/cjs/sdk/client.js +554 -0
- package/dist/cjs/sdk/client.js.map +1 -0
- package/dist/cjs/sdk/examples.d.ts +68 -0
- package/dist/cjs/sdk/examples.d.ts.map +1 -0
- package/dist/cjs/sdk/examples.js +232 -0
- package/dist/cjs/sdk/examples.js.map +1 -0
- package/dist/cjs/sdk/server.d.ts +115 -0
- package/dist/cjs/sdk/server.d.ts.map +1 -0
- package/dist/cjs/sdk/server.js +140 -0
- package/dist/cjs/sdk/server.js.map +1 -0
- package/dist/cjs/types.d.ts +217 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/column-utils.d.ts +8 -0
- package/dist/cjs/utils/column-utils.d.ts.map +1 -0
- package/dist/cjs/utils/column-utils.js +131 -0
- package/dist/cjs/utils/column-utils.js.map +1 -0
- package/dist/cjs/utils/db.d.ts +2 -0
- package/dist/cjs/utils/db.d.ts.map +1 -0
- package/dist/cjs/utils/db.js +6 -0
- package/dist/cjs/utils/db.js.map +1 -0
- package/dist/cjs/utils/inspector.d.ts +39 -0
- package/dist/cjs/utils/inspector.d.ts.map +1 -0
- package/dist/cjs/utils/inspector.js +164 -0
- package/dist/cjs/utils/inspector.js.map +1 -0
- package/dist/cjs/utils/permission-initializer.d.ts +15 -0
- package/dist/cjs/utils/permission-initializer.d.ts.map +1 -0
- package/dist/cjs/utils/permission-initializer.js +173 -0
- package/dist/cjs/utils/permission-initializer.js.map +1 -0
- package/dist/cjs/websocket/RealtimeAdapter.d.ts +22 -0
- package/dist/cjs/websocket/RealtimeAdapter.d.ts.map +1 -0
- package/dist/cjs/websocket/RealtimeAdapter.js +3 -0
- package/dist/cjs/websocket/RealtimeAdapter.js.map +1 -0
- package/dist/cjs/websocket/SSEManager.d.ts +40 -0
- package/dist/cjs/websocket/SSEManager.d.ts.map +1 -0
- package/dist/cjs/websocket/SSEManager.js +268 -0
- package/dist/cjs/websocket/SSEManager.js.map +1 -0
- package/dist/cjs/websocket/WebSocketManager.d.ts +28 -0
- package/dist/cjs/websocket/WebSocketManager.d.ts.map +1 -0
- package/dist/cjs/websocket/WebSocketManager.js +156 -0
- package/dist/cjs/websocket/WebSocketManager.js.map +1 -0
- package/dist/cjs/websocket/index.d.ts +4 -0
- package/dist/cjs/websocket/index.d.ts.map +1 -0
- package/dist/cjs/websocket/index.js +20 -0
- package/dist/cjs/websocket/index.js.map +1 -0
- package/dist/esm/adapters/base.d.ts +20 -0
- package/dist/esm/adapters/base.d.ts.map +1 -0
- package/dist/esm/adapters/base.js +10 -0
- package/dist/esm/adapters/base.js.map +1 -0
- package/dist/esm/adapters/index.d.ts +6 -0
- package/dist/esm/adapters/index.d.ts.map +1 -0
- package/dist/esm/adapters/index.js +19 -0
- package/dist/esm/adapters/index.js.map +1 -0
- package/dist/esm/adapters/postgres.d.ts +13 -0
- package/dist/esm/adapters/postgres.d.ts.map +1 -0
- package/dist/esm/adapters/postgres.js +47 -0
- package/dist/esm/adapters/postgres.js.map +1 -0
- package/dist/esm/adapters/sqlite.d.ts +13 -0
- package/dist/esm/adapters/sqlite.d.ts.map +1 -0
- package/dist/esm/adapters/sqlite.js +43 -0
- package/dist/esm/adapters/sqlite.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +8 -0
- package/dist/esm/adapters/types.d.ts.map +1 -0
- package/dist/esm/adapters/types.js +2 -0
- package/dist/esm/adapters/types.js.map +1 -0
- package/dist/esm/database.d.ts +73 -0
- package/dist/esm/database.d.ts.map +1 -0
- package/dist/esm/database.js +668 -0
- package/dist/esm/database.js.map +1 -0
- package/dist/esm/errors.d.ts +37 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +55 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/kysely-hooks.d.ts +45 -0
- package/dist/esm/kysely-hooks.d.ts.map +1 -0
- package/dist/esm/kysely-hooks.js +86 -0
- package/dist/esm/kysely-hooks.js.map +1 -0
- package/dist/esm/libsql/example.d.ts +2 -0
- package/dist/esm/libsql/example.d.ts.map +1 -0
- package/dist/esm/libsql/example.js +42 -0
- package/dist/esm/libsql/example.js.map +1 -0
- package/dist/esm/libsql/index.d.ts +36 -0
- package/dist/esm/libsql/index.d.ts.map +1 -0
- package/dist/esm/libsql/index.js +116 -0
- package/dist/esm/libsql/index.js.map +1 -0
- package/dist/esm/permissionService.d.ts +20 -0
- package/dist/esm/permissionService.d.ts.map +1 -0
- package/dist/esm/permissionService.js +103 -0
- package/dist/esm/permissionService.js.map +1 -0
- package/dist/esm/rlsFunctionRegistry.d.ts +43 -0
- package/dist/esm/rlsFunctionRegistry.d.ts.map +1 -0
- package/dist/esm/rlsFunctionRegistry.js +60 -0
- package/dist/esm/rlsFunctionRegistry.js.map +1 -0
- package/dist/esm/rlsManager.d.ts +23 -0
- package/dist/esm/rlsManager.d.ts.map +1 -0
- package/dist/esm/rlsManager.js +366 -0
- package/dist/esm/rlsManager.js.map +1 -0
- package/dist/esm/schema.d.ts +15 -0
- package/dist/esm/schema.d.ts.map +1 -0
- package/dist/esm/schema.js +113 -0
- package/dist/esm/schema.js.map +1 -0
- package/dist/esm/sdk/client.d.ts +324 -0
- package/dist/esm/sdk/client.d.ts.map +1 -0
- package/dist/esm/sdk/client.js +550 -0
- package/dist/esm/sdk/client.js.map +1 -0
- package/dist/esm/sdk/examples.d.ts +68 -0
- package/dist/esm/sdk/examples.d.ts.map +1 -0
- package/dist/esm/sdk/examples.js +229 -0
- package/dist/esm/sdk/examples.js.map +1 -0
- package/dist/esm/sdk/server.d.ts +115 -0
- package/dist/esm/sdk/server.d.ts.map +1 -0
- package/dist/esm/sdk/server.js +136 -0
- package/dist/esm/sdk/server.js.map +1 -0
- package/dist/esm/types.d.ts +217 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/column-utils.d.ts +8 -0
- package/dist/esm/utils/column-utils.d.ts.map +1 -0
- package/dist/esm/utils/column-utils.js +127 -0
- package/dist/esm/utils/column-utils.js.map +1 -0
- package/dist/esm/utils/db.d.ts +2 -0
- package/dist/esm/utils/db.d.ts.map +1 -0
- package/dist/esm/utils/db.js +3 -0
- package/dist/esm/utils/db.js.map +1 -0
- package/dist/esm/utils/inspector.d.ts +39 -0
- package/dist/esm/utils/inspector.d.ts.map +1 -0
- package/dist/esm/utils/inspector.js +160 -0
- package/dist/esm/utils/inspector.js.map +1 -0
- package/dist/esm/utils/permission-initializer.d.ts +15 -0
- package/dist/esm/utils/permission-initializer.d.ts.map +1 -0
- package/dist/esm/utils/permission-initializer.js +137 -0
- package/dist/esm/utils/permission-initializer.js.map +1 -0
- package/dist/esm/websocket/RealtimeAdapter.d.ts +22 -0
- package/dist/esm/websocket/RealtimeAdapter.d.ts.map +1 -0
- package/dist/esm/websocket/RealtimeAdapter.js +2 -0
- package/dist/esm/websocket/RealtimeAdapter.js.map +1 -0
- package/dist/esm/websocket/SSEManager.d.ts +40 -0
- package/dist/esm/websocket/SSEManager.d.ts.map +1 -0
- package/dist/esm/websocket/SSEManager.js +231 -0
- package/dist/esm/websocket/SSEManager.js.map +1 -0
- package/dist/esm/websocket/WebSocketManager.d.ts +28 -0
- package/dist/esm/websocket/WebSocketManager.d.ts.map +1 -0
- package/dist/esm/websocket/WebSocketManager.js +152 -0
- package/dist/esm/websocket/WebSocketManager.js.map +1 -0
- package/dist/esm/websocket/index.d.ts +4 -0
- package/dist/esm/websocket/index.d.ts.map +1 -0
- package/dist/esm/websocket/index.js +4 -0
- package/dist/esm/websocket/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { sql, } from 'kysely';
|
|
2
|
+
import { createColumn, updateColumn } from './utils/column-utils';
|
|
3
|
+
export async function addForeignKey(params, db, trx) {
|
|
4
|
+
const { tableName, column, foreignTableName, foreignColumn } = params;
|
|
5
|
+
const executor = trx || db;
|
|
6
|
+
await executor.schema
|
|
7
|
+
.alterTable(tableName)
|
|
8
|
+
.addForeignKeyConstraint(`fk_${tableName}_${column}`, [column], foreignTableName, [foreignColumn])
|
|
9
|
+
.execute();
|
|
10
|
+
return {
|
|
11
|
+
message: 'Foreign key added successfully',
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export async function dropForeignKey(params, db, trx) {
|
|
15
|
+
const { tableName, column } = params;
|
|
16
|
+
const executor = trx || db;
|
|
17
|
+
// Kysely drops constraint by name. We typically need the constraint name.
|
|
18
|
+
// We can try to guess it if we used standard naming, or we just rely on user knowing "column" here implies we find the constraint for it?
|
|
19
|
+
// The knex implementation dropped foreign key by *column name*.
|
|
20
|
+
// Postgres: ALTER TABLE table DROP CONSTRAINT constraint_name
|
|
21
|
+
// Kysely: dropConstraint(constraintName)
|
|
22
|
+
// We might need to introspect to find the constraint name for this column if it's not provided or standard.
|
|
23
|
+
// For now, assuming standard naming `fk_tableName_column` which we used in addForeignKey above
|
|
24
|
+
const constraintName = `fk_${tableName}_${column}`;
|
|
25
|
+
await executor.schema
|
|
26
|
+
.alterTable(tableName)
|
|
27
|
+
.dropConstraint(constraintName)
|
|
28
|
+
.execute();
|
|
29
|
+
return {
|
|
30
|
+
message: 'Foreign key dropped successfully',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export async function modifySchema(db, params, trx) {
|
|
34
|
+
const { tableName, action, columns } = params;
|
|
35
|
+
try {
|
|
36
|
+
const executor = trx || db;
|
|
37
|
+
switch (action) {
|
|
38
|
+
case 'addColumn':
|
|
39
|
+
// Chain adds? Kysely alterTable builds one query.
|
|
40
|
+
// We can execute multiple alter table statements or try to chain if supported.
|
|
41
|
+
// `createColumn` now returns the builder.
|
|
42
|
+
// We can chain:
|
|
43
|
+
// let builder = executor.schema.alterTable(tableName);
|
|
44
|
+
// columns.forEach(c => builder = createColumn(builder, c, db));
|
|
45
|
+
// await builder.execute();
|
|
46
|
+
// Wait, `createColumn` calls `builder.addColumn`. `addColumn` returns `AlterTableBuilder`.
|
|
47
|
+
// So yes, chaining works.
|
|
48
|
+
if (columns.length > 0) {
|
|
49
|
+
let builder = executor.schema.alterTable(tableName);
|
|
50
|
+
columns.forEach((col) => {
|
|
51
|
+
builder = createColumn(builder, col, db);
|
|
52
|
+
});
|
|
53
|
+
if ('execute' in builder) {
|
|
54
|
+
await builder.execute();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
message: 'Columns added successfully',
|
|
59
|
+
};
|
|
60
|
+
case 'deleteColumn':
|
|
61
|
+
if (columns.length > 0) {
|
|
62
|
+
let builder = executor.schema.alterTable(tableName);
|
|
63
|
+
columns.forEach((col) => {
|
|
64
|
+
builder = builder.dropColumn(col.name);
|
|
65
|
+
});
|
|
66
|
+
if ('execute' in builder) {
|
|
67
|
+
await builder.execute();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
message: 'Columns deleted successfully',
|
|
72
|
+
};
|
|
73
|
+
case 'updateColumn':
|
|
74
|
+
// Handle each column update sequentially
|
|
75
|
+
for (const col of columns) {
|
|
76
|
+
await updateColumn(db, tableName, col, trx);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
message: 'Columns updated successfully',
|
|
80
|
+
};
|
|
81
|
+
default:
|
|
82
|
+
throw new Error('Invalid action');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error('Error modifying schema:', error);
|
|
87
|
+
throw error; // Re-throw the error to be handled by the caller
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export async function truncateTable(tableName, db, trx) {
|
|
91
|
+
const executor = trx || db;
|
|
92
|
+
const adapter = db.getExecutor().adapter;
|
|
93
|
+
const adapterName = adapter.constructor.name;
|
|
94
|
+
if (adapterName.includes('Postgres')) {
|
|
95
|
+
await sql `TRUNCATE TABLE ${sql.table(tableName)} CASCADE`.execute(executor);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
await executor.deleteFrom(tableName).execute();
|
|
99
|
+
// Optional: Try to reset sequence for SQLite
|
|
100
|
+
if (adapterName.includes('Sqlite')) {
|
|
101
|
+
try {
|
|
102
|
+
await sql `DELETE FROM sqlite_sequence WHERE name = ${tableName}`.execute(executor);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Ignore
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
message: 'Table truncated',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,GAKJ,MAAM,QAAQ,CAAC;AAOhB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAA2B,EAC3B,EAAe,EACf,GAAsB;IAEtB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAEtE,MAAM,QAAQ,GAAG,GAAG,IAAI,EAAE,CAAC;IAE3B,MAAM,QAAQ,CAAC,MAAM;SAClB,UAAU,CAAC,SAAS,CAAC;SACrB,uBAAuB,CACtB,MAAM,SAAS,IAAI,MAAM,EAAE,EAC3B,CAAC,MAAM,CAAC,EACR,gBAAgB,EAChB,CAAC,aAAa,CAAC,CAChB;SACA,OAAO,EAAE,CAAC;IAEb,OAAO;QACL,OAAO,EAAE,gCAAgC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAA4B,EAC5B,EAAe,EACf,GAAsB;IAEtB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAErC,MAAM,QAAQ,GAAG,GAAG,IAAI,EAAE,CAAC;IAE3B,0EAA0E;IAC1E,0IAA0I;IAC1I,gEAAgE;IAChE,8DAA8D;IAC9D,yCAAyC;IACzC,4GAA4G;IAC5G,+FAA+F;IAE/F,MAAM,cAAc,GAAG,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;IAEnD,MAAM,QAAQ,CAAC,MAAM;SAClB,UAAU,CAAC,SAAS,CAAC;SACrB,cAAc,CAAC,cAAc,CAAC;SAC9B,OAAO,EAAE,CAAC;IAEb,OAAO;QACL,OAAO,EAAE,kCAAkC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAe,EACf,MAA0B,EAC1B,GAAsB;IAEtB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,IAAI,EAAE,CAAC;QAE3B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,WAAW;gBACd,kDAAkD;gBAClD,+EAA+E;gBAC/E,0CAA0C;gBAC1C,gBAAgB;gBAChB,uDAAuD;gBACvD,gEAAgE;gBAChE,2BAA2B;gBAE3B,2FAA2F;gBAC3F,0BAA0B;gBAC1B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,OAAO,GACT,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;oBACxC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;wBAC3B,OAAO,GAAG,YAAY,CACpB,OAAO,EACP,GAAG,EACH,EAAE,CACgC,CAAC;oBACvC,CAAC,CAAC,CAAC;oBACH,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;wBACzB,MACE,OACD,CAAC,OAAO,EAAE,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,4BAA4B;iBACtC,CAAC;YAEJ,KAAK,cAAc;gBACjB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,IAAI,OAAO,GACT,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;oBACxC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;wBAC3B,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC;oBACH,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;wBACzB,MACE,OACD,CAAC,OAAO,EAAE,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,8BAA8B;iBACxC,CAAC;YAEJ,KAAK,cAAc;gBACjB,yCAAyC;gBACzC,KAAK,MAAM,GAAG,IAAI,OAAmC,EAAE,CAAC;oBACtD,MAAM,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,8BAA8B;iBACxC,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC,CAAC,iDAAiD;IAChE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,EAAe,EACf,GAAsB;IAEtB,MAAM,QAAQ,GAAG,GAAG,IAAI,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IAE7C,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,CAAA,kBAAkB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAE/C,6CAA6C;QAC7C,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,CAAA,4CAA4C,SAAS,EAAE,CAAC,OAAO,CACtE,QAAQ,CACT,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,iBAAiB;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
type FieldKeys<T> = keyof T;
|
|
2
|
+
export type WhereOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'like' | 'in' | 'not in' | 'between' | 'is null' | 'is not null';
|
|
3
|
+
export type GroupOperator = 'AND' | 'OR';
|
|
4
|
+
export interface WhereClause<T> {
|
|
5
|
+
field: FieldKeys<T>;
|
|
6
|
+
operator: WhereOperator;
|
|
7
|
+
value: any;
|
|
8
|
+
boolean?: GroupOperator;
|
|
9
|
+
}
|
|
10
|
+
export interface WhereGroup<T> {
|
|
11
|
+
type: GroupOperator;
|
|
12
|
+
clauses: (WhereClause<T> | WhereGroup<T>)[];
|
|
13
|
+
}
|
|
14
|
+
export interface WhereBetweenClause<T> {
|
|
15
|
+
field: FieldKeys<T>;
|
|
16
|
+
operator: 'between';
|
|
17
|
+
value: [any, any];
|
|
18
|
+
boolean?: GroupOperator;
|
|
19
|
+
}
|
|
20
|
+
export interface OrderByClause<T> {
|
|
21
|
+
field: FieldKeys<T>;
|
|
22
|
+
direction?: 'asc' | 'desc';
|
|
23
|
+
nulls?: 'first' | 'last';
|
|
24
|
+
}
|
|
25
|
+
export interface RawExpression {
|
|
26
|
+
sql: string;
|
|
27
|
+
bindings?: any[];
|
|
28
|
+
}
|
|
29
|
+
export interface HavingClause<T> {
|
|
30
|
+
field: FieldKeys<T>;
|
|
31
|
+
operator: WhereOperator;
|
|
32
|
+
value: any;
|
|
33
|
+
}
|
|
34
|
+
export interface AggregateOptions<T> {
|
|
35
|
+
type: 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
36
|
+
field: FieldKeys<T>;
|
|
37
|
+
alias?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface WindowFunction<T> {
|
|
40
|
+
type: 'row_number' | 'rank' | 'dense_rank' | 'lag' | 'lead' | 'first_value' | 'last_value' | 'sum' | 'avg' | 'count' | 'min' | 'max' | 'nth_value' | 'ntile';
|
|
41
|
+
field?: FieldKeys<T>;
|
|
42
|
+
alias: string;
|
|
43
|
+
partitionBy?: FieldKeys<T>[];
|
|
44
|
+
orderBy?: OrderByClause<T>[];
|
|
45
|
+
frameClause?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface CTE<T extends Record<string, any>> {
|
|
48
|
+
name: string;
|
|
49
|
+
query: QueryBuilder<T>;
|
|
50
|
+
columns?: FieldKeys<T>[];
|
|
51
|
+
}
|
|
52
|
+
export interface TransformConfig<T> {
|
|
53
|
+
groupBy?: string[];
|
|
54
|
+
pivot?: {
|
|
55
|
+
column: string;
|
|
56
|
+
values: string[];
|
|
57
|
+
aggregate: AggregateOptions<T>;
|
|
58
|
+
};
|
|
59
|
+
flatten?: boolean;
|
|
60
|
+
select?: FieldKeys<T>[];
|
|
61
|
+
compute?: Record<string, (row: any) => any>;
|
|
62
|
+
}
|
|
63
|
+
export interface ExplainOptions {
|
|
64
|
+
analyze?: boolean;
|
|
65
|
+
verbose?: boolean;
|
|
66
|
+
format?: 'text' | 'json';
|
|
67
|
+
}
|
|
68
|
+
export interface RecursiveCTE<T extends Record<string, any>> extends CTE<T> {
|
|
69
|
+
isRecursive: true;
|
|
70
|
+
initialQuery: QueryBuilder<T>;
|
|
71
|
+
recursiveQuery: QueryBuilder<T>;
|
|
72
|
+
unionAll?: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface WindowFunctionAdvanced<T> extends WindowFunction<T> {
|
|
75
|
+
over?: {
|
|
76
|
+
partitionBy?: FieldKeys<T>[];
|
|
77
|
+
orderBy?: OrderByClause<T>[];
|
|
78
|
+
frame?: {
|
|
79
|
+
type: 'ROWS' | 'RANGE';
|
|
80
|
+
start: 'UNBOUNDED PRECEDING' | 'CURRENT ROW' | number;
|
|
81
|
+
end?: 'UNBOUNDED FOLLOWING' | 'CURRENT ROW' | number;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
filter?: WhereClause<T>[];
|
|
85
|
+
}
|
|
86
|
+
export interface CacheConfig<T extends Record<string, any>> {
|
|
87
|
+
ttl: number;
|
|
88
|
+
key?: string;
|
|
89
|
+
tags?: string[];
|
|
90
|
+
condition?: (params: QueryParams<T>) => boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface QueryValidation {
|
|
93
|
+
rules: {
|
|
94
|
+
maxLimit?: number;
|
|
95
|
+
requiredFields?: string[];
|
|
96
|
+
disallowedFields?: string[];
|
|
97
|
+
maxComplexity?: number;
|
|
98
|
+
};
|
|
99
|
+
suggestions?: boolean;
|
|
100
|
+
}
|
|
101
|
+
export interface QueryParams<T extends Record<string, any>> {
|
|
102
|
+
filter?: Partial<T>;
|
|
103
|
+
whereRaw?: WhereClause<T>[];
|
|
104
|
+
whereBetween?: WhereBetweenClause<T>[];
|
|
105
|
+
whereNull?: FieldKeys<T>[];
|
|
106
|
+
whereNotNull?: FieldKeys<T>[];
|
|
107
|
+
whereIn?: {
|
|
108
|
+
[K in FieldKeys<T>]?: any[];
|
|
109
|
+
};
|
|
110
|
+
whereNotIn?: {
|
|
111
|
+
[K in FieldKeys<T>]?: any[];
|
|
112
|
+
};
|
|
113
|
+
whereExists?: RawExpression[];
|
|
114
|
+
whereGroups?: WhereGroup<T>[];
|
|
115
|
+
orderBy?: OrderByClause<T>[];
|
|
116
|
+
groupBy?: FieldKeys<T>[];
|
|
117
|
+
having?: HavingClause<T>[];
|
|
118
|
+
aggregates?: AggregateOptions<T>[];
|
|
119
|
+
limit?: number;
|
|
120
|
+
offset?: number;
|
|
121
|
+
windowFunctions?: WindowFunction<T>[];
|
|
122
|
+
ctes?: CTE<T>[];
|
|
123
|
+
transforms?: TransformConfig<T>;
|
|
124
|
+
explain?: ExplainOptions;
|
|
125
|
+
recursiveCtes?: RecursiveCTE<T>[];
|
|
126
|
+
advancedWindows?: WindowFunctionAdvanced<T>[];
|
|
127
|
+
select?: FieldKeys<T>[];
|
|
128
|
+
}
|
|
129
|
+
export interface QueryOptions {
|
|
130
|
+
execute?: boolean;
|
|
131
|
+
}
|
|
132
|
+
export interface ApiResponse<T extends Record<string, any>> {
|
|
133
|
+
records?: T[];
|
|
134
|
+
params?: QueryParams<T>;
|
|
135
|
+
message?: string;
|
|
136
|
+
error?: string;
|
|
137
|
+
id?: number;
|
|
138
|
+
}
|
|
139
|
+
export declare class DatabaseSDK {
|
|
140
|
+
private baseUrl;
|
|
141
|
+
constructor(baseUrl: string);
|
|
142
|
+
/**
|
|
143
|
+
* Fetches records from a specified table with filtering and pagination
|
|
144
|
+
* @param tableName The name of the table to query
|
|
145
|
+
* @param params Query parameters including filters and pagination
|
|
146
|
+
* @returns Promise containing the fetched records
|
|
147
|
+
*/
|
|
148
|
+
getRecords<T extends Record<string, any>>(tableName: string, params?: QueryParams<T>, options?: QueryOptions): Promise<ApiResponse<T>>;
|
|
149
|
+
private serializeQueryParams;
|
|
150
|
+
/**
|
|
151
|
+
* Creates a new record in the specified table
|
|
152
|
+
*/
|
|
153
|
+
createRecord<T extends Record<string, any>>(tableName: string, data: T): Promise<ApiResponse<T>>;
|
|
154
|
+
/**
|
|
155
|
+
* Updates a record by ID in the specified table
|
|
156
|
+
*/
|
|
157
|
+
updateRecord<T extends Record<string, any>>(tableName: string, id: number | string, data: Partial<T>): Promise<ApiResponse<T>>;
|
|
158
|
+
/**
|
|
159
|
+
* Deletes a record by ID from the specified table
|
|
160
|
+
*/
|
|
161
|
+
deleteRecord(tableName: string, id: number | string): Promise<ApiResponse<never>>;
|
|
162
|
+
/**
|
|
163
|
+
* Helper method to create a query builder for fluent API usage
|
|
164
|
+
* @param tableName The name of the table to query
|
|
165
|
+
*/
|
|
166
|
+
table<T extends Record<string, any>>(tableName: string): QueryBuilder<T>;
|
|
167
|
+
/**
|
|
168
|
+
* Validates data object
|
|
169
|
+
*/
|
|
170
|
+
private validateData;
|
|
171
|
+
/**
|
|
172
|
+
* Generic API fetch method with error handling
|
|
173
|
+
*/
|
|
174
|
+
private fetchApi;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Query builder class for more fluent API usage
|
|
178
|
+
*/
|
|
179
|
+
declare class QueryBuilder<T extends Record<string, any>> {
|
|
180
|
+
private sdk;
|
|
181
|
+
private tableName;
|
|
182
|
+
private params;
|
|
183
|
+
private currentGroup?;
|
|
184
|
+
private ctes;
|
|
185
|
+
constructor(sdk: DatabaseSDK, tableName: string);
|
|
186
|
+
/**
|
|
187
|
+
* Add a recursive CTE
|
|
188
|
+
*/
|
|
189
|
+
withRecursive(name: string, initialQuery: QueryBuilder<T>, recursiveQuery: QueryBuilder<T>, options?: {
|
|
190
|
+
unionAll?: boolean;
|
|
191
|
+
columns?: string[];
|
|
192
|
+
}): this;
|
|
193
|
+
/**
|
|
194
|
+
* Advanced window function
|
|
195
|
+
*/
|
|
196
|
+
windowAdvanced(type: WindowFunction<T>['type'], alias: string, config: Partial<WindowFunctionAdvanced<T>>): this;
|
|
197
|
+
/**
|
|
198
|
+
* Add a window function
|
|
199
|
+
*/
|
|
200
|
+
window(type: WindowFunction<T>['type'], alias: string, config?: Partial<Omit<WindowFunction<T>, 'type' | 'alias'>>): this;
|
|
201
|
+
/**
|
|
202
|
+
* Add common window functions
|
|
203
|
+
*/
|
|
204
|
+
rowNumber(alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
|
|
205
|
+
rank(alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
|
|
206
|
+
lag(field: string, alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
|
|
207
|
+
lead(field: string, alias: string, partitionBy?: string[], orderBy?: OrderByClause<T>[]): this;
|
|
208
|
+
/**
|
|
209
|
+
* Add a CTE (WITH clause)
|
|
210
|
+
*/
|
|
211
|
+
with(name: string, queryOrCallback: QueryBuilder<T> | ((query: QueryBuilder<T>) => void), columns?: FieldKeys<T>[]): this;
|
|
212
|
+
/**
|
|
213
|
+
* Transform the result set
|
|
214
|
+
*/
|
|
215
|
+
transform(config: TransformConfig<T>): this;
|
|
216
|
+
/**
|
|
217
|
+
* Pivot the result set
|
|
218
|
+
*/
|
|
219
|
+
pivot(column: string, values: string[], aggregate: AggregateOptions<T>): this;
|
|
220
|
+
/**
|
|
221
|
+
* Compute new fields from existing ones
|
|
222
|
+
*/
|
|
223
|
+
compute(computations: Record<string, (row: T) => any>): this;
|
|
224
|
+
/**
|
|
225
|
+
* Add a where clause
|
|
226
|
+
* @param field The field to filter on
|
|
227
|
+
* @param operator The comparison operator
|
|
228
|
+
* @param value The value to compare against
|
|
229
|
+
* @returns The query builder instance
|
|
230
|
+
* @example
|
|
231
|
+
* db.table<User>("users").where("status", "active").execute();
|
|
232
|
+
* db.table<User>("users").where("age", ">", 18).execute();
|
|
233
|
+
* db.table<User>("users").where("role", "in", ["admin", "manager"]).execute();
|
|
234
|
+
* db.table<User>("users").where("created_at", "is not null").execute();
|
|
235
|
+
* db.table<User>("users").where("name", "like", "%doe%").execute();
|
|
236
|
+
* db.table<User>("users").where("id", 1).execute();
|
|
237
|
+
* db.table<User>("users").where({ status: "active", role: "admin" }).execute();
|
|
238
|
+
* db.table<User>("users").where("age", ">=", 18).where("role", "manager").execute();
|
|
239
|
+
* db.table<User>("users").where("age", ">=", 18).orWhere((query) => {
|
|
240
|
+
* query.where("role", "manager").where("department", "IT");
|
|
241
|
+
* }).execute();
|
|
242
|
+
*/
|
|
243
|
+
where(field: FieldKeys<T>, operator: WhereOperator, value: any): this;
|
|
244
|
+
where(field: FieldKeys<T>, value: any): this;
|
|
245
|
+
where(conditions: Record<FieldKeys<T>, any>): this;
|
|
246
|
+
whereBetween(field: FieldKeys<T>, range: [any, any]): this;
|
|
247
|
+
whereIn(field: FieldKeys<T>, values: any[]): this;
|
|
248
|
+
whereNotIn(field: FieldKeys<T>, values: any[]): this;
|
|
249
|
+
whereNull(field: FieldKeys<T>): this;
|
|
250
|
+
whereNotNull(field: FieldKeys<T>): this;
|
|
251
|
+
orderBy(field: FieldKeys<T>, direction?: 'asc' | 'desc', nulls?: 'first' | 'last'): this;
|
|
252
|
+
orderBy(options: OrderByClause<T>): this;
|
|
253
|
+
limit(limit: number): this;
|
|
254
|
+
offset(offset: number): this;
|
|
255
|
+
/**
|
|
256
|
+
* Start an OR where group
|
|
257
|
+
*/
|
|
258
|
+
orWhere(callback: (query: QueryBuilder<T>) => void): this;
|
|
259
|
+
/**
|
|
260
|
+
* Start an AND where group
|
|
261
|
+
*/
|
|
262
|
+
andWhere(callback: (query: QueryBuilder<T>) => void): this;
|
|
263
|
+
/**
|
|
264
|
+
* Create a where group with the specified operator
|
|
265
|
+
*/
|
|
266
|
+
private whereGroup;
|
|
267
|
+
/**
|
|
268
|
+
* Add a where exists clause
|
|
269
|
+
*/
|
|
270
|
+
/**
|
|
271
|
+
* Group by clause
|
|
272
|
+
*/
|
|
273
|
+
groupBy(...fields: string[]): this;
|
|
274
|
+
/**
|
|
275
|
+
* Having clause for grouped queries
|
|
276
|
+
*/
|
|
277
|
+
having(field: string, operator: WhereOperator, value: any): this;
|
|
278
|
+
/**
|
|
279
|
+
* Add an aggregate function
|
|
280
|
+
*/
|
|
281
|
+
aggregate(type: AggregateOptions<T>['type'], field: FieldKeys<T>, alias?: string): this;
|
|
282
|
+
/**
|
|
283
|
+
* Shorthand for count aggregate
|
|
284
|
+
*/
|
|
285
|
+
count(field?: FieldKeys<T>, alias?: string): this;
|
|
286
|
+
/**
|
|
287
|
+
* Shorthand for sum aggregate
|
|
288
|
+
*/
|
|
289
|
+
sum(field: FieldKeys<T>, alias?: string): this;
|
|
290
|
+
/**
|
|
291
|
+
* Shorthand for average aggregate
|
|
292
|
+
*/
|
|
293
|
+
avg(field: FieldKeys<T>, alias?: string): this;
|
|
294
|
+
/**
|
|
295
|
+
* Shorthand for minimum aggregate
|
|
296
|
+
*/
|
|
297
|
+
min(field: FieldKeys<T>, alias?: string): this;
|
|
298
|
+
/**
|
|
299
|
+
* Shorthand for maximum aggregate
|
|
300
|
+
*/
|
|
301
|
+
max(field: FieldKeys<T>, alias?: string): this;
|
|
302
|
+
toParams(): Promise<QueryParams<T>>;
|
|
303
|
+
/**
|
|
304
|
+
* Execute with transformations
|
|
305
|
+
*/
|
|
306
|
+
execute(): Promise<ApiResponse<T>>;
|
|
307
|
+
create(data: T): Promise<ApiResponse<T>>;
|
|
308
|
+
update(id: number | string, data: Partial<T>): Promise<ApiResponse<T>>;
|
|
309
|
+
delete(id: number | string): Promise<ApiResponse<never>>;
|
|
310
|
+
private applyTransformations;
|
|
311
|
+
private groupResults;
|
|
312
|
+
private pivotResults;
|
|
313
|
+
/**
|
|
314
|
+
* Select specific fields from the table
|
|
315
|
+
* @param fields Fields to select
|
|
316
|
+
* @example
|
|
317
|
+
* db.table("users")
|
|
318
|
+
* .select("id", "name", "email")
|
|
319
|
+
* .execute();
|
|
320
|
+
*/
|
|
321
|
+
select(...fields: string[]): this;
|
|
322
|
+
}
|
|
323
|
+
export {};
|
|
324
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/sdk/client.ts"],"names":[],"mappings":"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"}
|