@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.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +470 -0
  3. package/dist/cjs/adapters/base.d.ts +20 -0
  4. package/dist/cjs/adapters/base.d.ts.map +1 -0
  5. package/dist/cjs/adapters/base.js +13 -0
  6. package/dist/cjs/adapters/base.js.map +1 -0
  7. package/dist/cjs/adapters/index.d.ts +6 -0
  8. package/dist/cjs/adapters/index.d.ts.map +1 -0
  9. package/dist/cjs/adapters/index.js +24 -0
  10. package/dist/cjs/adapters/index.js.map +1 -0
  11. package/dist/cjs/adapters/postgres.d.ts +13 -0
  12. package/dist/cjs/adapters/postgres.d.ts.map +1 -0
  13. package/dist/cjs/adapters/postgres.js +51 -0
  14. package/dist/cjs/adapters/postgres.js.map +1 -0
  15. package/dist/cjs/adapters/sqlite.d.ts +13 -0
  16. package/dist/cjs/adapters/sqlite.d.ts.map +1 -0
  17. package/dist/cjs/adapters/sqlite.js +47 -0
  18. package/dist/cjs/adapters/sqlite.js.map +1 -0
  19. package/dist/cjs/adapters/types.d.ts +8 -0
  20. package/dist/cjs/adapters/types.d.ts.map +1 -0
  21. package/dist/cjs/adapters/types.js +3 -0
  22. package/dist/cjs/adapters/types.js.map +1 -0
  23. package/dist/cjs/database.d.ts +73 -0
  24. package/dist/cjs/database.d.ts.map +1 -0
  25. package/dist/cjs/database.js +673 -0
  26. package/dist/cjs/database.js.map +1 -0
  27. package/dist/cjs/errors.d.ts +37 -0
  28. package/dist/cjs/errors.d.ts.map +1 -0
  29. package/dist/cjs/errors.js +64 -0
  30. package/dist/cjs/errors.js.map +1 -0
  31. package/dist/cjs/index.d.ts +16 -0
  32. package/dist/cjs/index.d.ts.map +1 -0
  33. package/dist/cjs/index.js +31 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/kysely-hooks.d.ts +45 -0
  36. package/dist/cjs/kysely-hooks.d.ts.map +1 -0
  37. package/dist/cjs/kysely-hooks.js +93 -0
  38. package/dist/cjs/kysely-hooks.js.map +1 -0
  39. package/dist/cjs/libsql/example.d.ts +2 -0
  40. package/dist/cjs/libsql/example.d.ts.map +1 -0
  41. package/dist/cjs/libsql/example.js +44 -0
  42. package/dist/cjs/libsql/example.js.map +1 -0
  43. package/dist/cjs/libsql/index.d.ts +36 -0
  44. package/dist/cjs/libsql/index.d.ts.map +1 -0
  45. package/dist/cjs/libsql/index.js +155 -0
  46. package/dist/cjs/libsql/index.js.map +1 -0
  47. package/dist/cjs/permissionService.d.ts +20 -0
  48. package/dist/cjs/permissionService.d.ts.map +1 -0
  49. package/dist/cjs/permissionService.js +107 -0
  50. package/dist/cjs/permissionService.js.map +1 -0
  51. package/dist/cjs/rlsFunctionRegistry.d.ts +43 -0
  52. package/dist/cjs/rlsFunctionRegistry.d.ts.map +1 -0
  53. package/dist/cjs/rlsFunctionRegistry.js +63 -0
  54. package/dist/cjs/rlsFunctionRegistry.js.map +1 -0
  55. package/dist/cjs/rlsManager.d.ts +23 -0
  56. package/dist/cjs/rlsManager.d.ts.map +1 -0
  57. package/dist/cjs/rlsManager.js +371 -0
  58. package/dist/cjs/rlsManager.js.map +1 -0
  59. package/dist/cjs/schema.d.ts +15 -0
  60. package/dist/cjs/schema.d.ts.map +1 -0
  61. package/dist/cjs/schema.js +119 -0
  62. package/dist/cjs/schema.js.map +1 -0
  63. package/dist/cjs/sdk/client.d.ts +324 -0
  64. package/dist/cjs/sdk/client.d.ts.map +1 -0
  65. package/dist/cjs/sdk/client.js +554 -0
  66. package/dist/cjs/sdk/client.js.map +1 -0
  67. package/dist/cjs/sdk/examples.d.ts +68 -0
  68. package/dist/cjs/sdk/examples.d.ts.map +1 -0
  69. package/dist/cjs/sdk/examples.js +232 -0
  70. package/dist/cjs/sdk/examples.js.map +1 -0
  71. package/dist/cjs/sdk/server.d.ts +115 -0
  72. package/dist/cjs/sdk/server.d.ts.map +1 -0
  73. package/dist/cjs/sdk/server.js +140 -0
  74. package/dist/cjs/sdk/server.js.map +1 -0
  75. package/dist/cjs/types.d.ts +217 -0
  76. package/dist/cjs/types.d.ts.map +1 -0
  77. package/dist/cjs/types.js +5 -0
  78. package/dist/cjs/types.js.map +1 -0
  79. package/dist/cjs/utils/column-utils.d.ts +8 -0
  80. package/dist/cjs/utils/column-utils.d.ts.map +1 -0
  81. package/dist/cjs/utils/column-utils.js +131 -0
  82. package/dist/cjs/utils/column-utils.js.map +1 -0
  83. package/dist/cjs/utils/db.d.ts +2 -0
  84. package/dist/cjs/utils/db.d.ts.map +1 -0
  85. package/dist/cjs/utils/db.js +6 -0
  86. package/dist/cjs/utils/db.js.map +1 -0
  87. package/dist/cjs/utils/inspector.d.ts +39 -0
  88. package/dist/cjs/utils/inspector.d.ts.map +1 -0
  89. package/dist/cjs/utils/inspector.js +164 -0
  90. package/dist/cjs/utils/inspector.js.map +1 -0
  91. package/dist/cjs/utils/permission-initializer.d.ts +15 -0
  92. package/dist/cjs/utils/permission-initializer.d.ts.map +1 -0
  93. package/dist/cjs/utils/permission-initializer.js +173 -0
  94. package/dist/cjs/utils/permission-initializer.js.map +1 -0
  95. package/dist/cjs/websocket/RealtimeAdapter.d.ts +22 -0
  96. package/dist/cjs/websocket/RealtimeAdapter.d.ts.map +1 -0
  97. package/dist/cjs/websocket/RealtimeAdapter.js +3 -0
  98. package/dist/cjs/websocket/RealtimeAdapter.js.map +1 -0
  99. package/dist/cjs/websocket/SSEManager.d.ts +40 -0
  100. package/dist/cjs/websocket/SSEManager.d.ts.map +1 -0
  101. package/dist/cjs/websocket/SSEManager.js +268 -0
  102. package/dist/cjs/websocket/SSEManager.js.map +1 -0
  103. package/dist/cjs/websocket/WebSocketManager.d.ts +28 -0
  104. package/dist/cjs/websocket/WebSocketManager.d.ts.map +1 -0
  105. package/dist/cjs/websocket/WebSocketManager.js +156 -0
  106. package/dist/cjs/websocket/WebSocketManager.js.map +1 -0
  107. package/dist/cjs/websocket/index.d.ts +4 -0
  108. package/dist/cjs/websocket/index.d.ts.map +1 -0
  109. package/dist/cjs/websocket/index.js +20 -0
  110. package/dist/cjs/websocket/index.js.map +1 -0
  111. package/dist/esm/adapters/base.d.ts +20 -0
  112. package/dist/esm/adapters/base.d.ts.map +1 -0
  113. package/dist/esm/adapters/base.js +10 -0
  114. package/dist/esm/adapters/base.js.map +1 -0
  115. package/dist/esm/adapters/index.d.ts +6 -0
  116. package/dist/esm/adapters/index.d.ts.map +1 -0
  117. package/dist/esm/adapters/index.js +19 -0
  118. package/dist/esm/adapters/index.js.map +1 -0
  119. package/dist/esm/adapters/postgres.d.ts +13 -0
  120. package/dist/esm/adapters/postgres.d.ts.map +1 -0
  121. package/dist/esm/adapters/postgres.js +47 -0
  122. package/dist/esm/adapters/postgres.js.map +1 -0
  123. package/dist/esm/adapters/sqlite.d.ts +13 -0
  124. package/dist/esm/adapters/sqlite.d.ts.map +1 -0
  125. package/dist/esm/adapters/sqlite.js +43 -0
  126. package/dist/esm/adapters/sqlite.js.map +1 -0
  127. package/dist/esm/adapters/types.d.ts +8 -0
  128. package/dist/esm/adapters/types.d.ts.map +1 -0
  129. package/dist/esm/adapters/types.js +2 -0
  130. package/dist/esm/adapters/types.js.map +1 -0
  131. package/dist/esm/database.d.ts +73 -0
  132. package/dist/esm/database.d.ts.map +1 -0
  133. package/dist/esm/database.js +668 -0
  134. package/dist/esm/database.js.map +1 -0
  135. package/dist/esm/errors.d.ts +37 -0
  136. package/dist/esm/errors.d.ts.map +1 -0
  137. package/dist/esm/errors.js +55 -0
  138. package/dist/esm/errors.js.map +1 -0
  139. package/dist/esm/index.d.ts +16 -0
  140. package/dist/esm/index.d.ts.map +1 -0
  141. package/dist/esm/index.js +15 -0
  142. package/dist/esm/index.js.map +1 -0
  143. package/dist/esm/kysely-hooks.d.ts +45 -0
  144. package/dist/esm/kysely-hooks.d.ts.map +1 -0
  145. package/dist/esm/kysely-hooks.js +86 -0
  146. package/dist/esm/kysely-hooks.js.map +1 -0
  147. package/dist/esm/libsql/example.d.ts +2 -0
  148. package/dist/esm/libsql/example.d.ts.map +1 -0
  149. package/dist/esm/libsql/example.js +42 -0
  150. package/dist/esm/libsql/example.js.map +1 -0
  151. package/dist/esm/libsql/index.d.ts +36 -0
  152. package/dist/esm/libsql/index.d.ts.map +1 -0
  153. package/dist/esm/libsql/index.js +116 -0
  154. package/dist/esm/libsql/index.js.map +1 -0
  155. package/dist/esm/permissionService.d.ts +20 -0
  156. package/dist/esm/permissionService.d.ts.map +1 -0
  157. package/dist/esm/permissionService.js +103 -0
  158. package/dist/esm/permissionService.js.map +1 -0
  159. package/dist/esm/rlsFunctionRegistry.d.ts +43 -0
  160. package/dist/esm/rlsFunctionRegistry.d.ts.map +1 -0
  161. package/dist/esm/rlsFunctionRegistry.js +60 -0
  162. package/dist/esm/rlsFunctionRegistry.js.map +1 -0
  163. package/dist/esm/rlsManager.d.ts +23 -0
  164. package/dist/esm/rlsManager.d.ts.map +1 -0
  165. package/dist/esm/rlsManager.js +366 -0
  166. package/dist/esm/rlsManager.js.map +1 -0
  167. package/dist/esm/schema.d.ts +15 -0
  168. package/dist/esm/schema.d.ts.map +1 -0
  169. package/dist/esm/schema.js +113 -0
  170. package/dist/esm/schema.js.map +1 -0
  171. package/dist/esm/sdk/client.d.ts +324 -0
  172. package/dist/esm/sdk/client.d.ts.map +1 -0
  173. package/dist/esm/sdk/client.js +550 -0
  174. package/dist/esm/sdk/client.js.map +1 -0
  175. package/dist/esm/sdk/examples.d.ts +68 -0
  176. package/dist/esm/sdk/examples.d.ts.map +1 -0
  177. package/dist/esm/sdk/examples.js +229 -0
  178. package/dist/esm/sdk/examples.js.map +1 -0
  179. package/dist/esm/sdk/server.d.ts +115 -0
  180. package/dist/esm/sdk/server.d.ts.map +1 -0
  181. package/dist/esm/sdk/server.js +136 -0
  182. package/dist/esm/sdk/server.js.map +1 -0
  183. package/dist/esm/types.d.ts +217 -0
  184. package/dist/esm/types.d.ts.map +1 -0
  185. package/dist/esm/types.js +2 -0
  186. package/dist/esm/types.js.map +1 -0
  187. package/dist/esm/utils/column-utils.d.ts +8 -0
  188. package/dist/esm/utils/column-utils.d.ts.map +1 -0
  189. package/dist/esm/utils/column-utils.js +127 -0
  190. package/dist/esm/utils/column-utils.js.map +1 -0
  191. package/dist/esm/utils/db.d.ts +2 -0
  192. package/dist/esm/utils/db.d.ts.map +1 -0
  193. package/dist/esm/utils/db.js +3 -0
  194. package/dist/esm/utils/db.js.map +1 -0
  195. package/dist/esm/utils/inspector.d.ts +39 -0
  196. package/dist/esm/utils/inspector.d.ts.map +1 -0
  197. package/dist/esm/utils/inspector.js +160 -0
  198. package/dist/esm/utils/inspector.js.map +1 -0
  199. package/dist/esm/utils/permission-initializer.d.ts +15 -0
  200. package/dist/esm/utils/permission-initializer.d.ts.map +1 -0
  201. package/dist/esm/utils/permission-initializer.js +137 -0
  202. package/dist/esm/utils/permission-initializer.js.map +1 -0
  203. package/dist/esm/websocket/RealtimeAdapter.d.ts +22 -0
  204. package/dist/esm/websocket/RealtimeAdapter.d.ts.map +1 -0
  205. package/dist/esm/websocket/RealtimeAdapter.js +2 -0
  206. package/dist/esm/websocket/RealtimeAdapter.js.map +1 -0
  207. package/dist/esm/websocket/SSEManager.d.ts +40 -0
  208. package/dist/esm/websocket/SSEManager.d.ts.map +1 -0
  209. package/dist/esm/websocket/SSEManager.js +231 -0
  210. package/dist/esm/websocket/SSEManager.js.map +1 -0
  211. package/dist/esm/websocket/WebSocketManager.d.ts +28 -0
  212. package/dist/esm/websocket/WebSocketManager.d.ts.map +1 -0
  213. package/dist/esm/websocket/WebSocketManager.js +152 -0
  214. package/dist/esm/websocket/WebSocketManager.js.map +1 -0
  215. package/dist/esm/websocket/index.d.ts +4 -0
  216. package/dist/esm/websocket/index.d.ts.map +1 -0
  217. package/dist/esm/websocket/index.js +4 -0
  218. package/dist/esm/websocket/index.js.map +1 -0
  219. 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":"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"}
@@ -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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"}