@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,229 @@
1
+ import { DatabaseSDK } from './client';
2
+ // Initialize SDK
3
+ const db = new DatabaseSDK('http://localhost:3000');
4
+ // Helper function to run examples
5
+ async function runExample(name, fn) {
6
+ console.log(`\n=== Running ${name} ===`);
7
+ try {
8
+ const result = await fn();
9
+ console.log(`✅ ${name} completed successfully`);
10
+ displayResults(name, result);
11
+ }
12
+ catch (error) {
13
+ console.error(`❌ ${name} failed:`, error);
14
+ }
15
+ }
16
+ // Function to display results
17
+ function displayResults(name, data) {
18
+ console.log(`\n📋 Results for ${name}:`);
19
+ console.log(JSON.stringify(data, null, 2));
20
+ }
21
+ // Main function to run examples
22
+ async function main() {
23
+ // await runExample("Basic Queries", basicQueries);
24
+ // await runExample("Advanced Filtering", advancedFiltering);
25
+ // await runExample("Aggregations and Grouping", aggregationsAndGrouping);
26
+ // await runExample("Window Functions", windowFunctions);
27
+ await runExample('CTEs', cteExamples);
28
+ // await runExample("Transformations", transformations);
29
+ // await runExample("Complex Real-World Examples", realWorldExamples);
30
+ }
31
+ // Basic Queries
32
+ async function basicQueries() {
33
+ const results = {
34
+ activeUsers: await db
35
+ .table('users')
36
+ .where('status', 'active')
37
+ .execute(),
38
+ seniorManagers: await db
39
+ .table('users')
40
+ .where('role', 'manager')
41
+ .where('experience', '>=', 5)
42
+ .execute(),
43
+ sortedUsers: await db
44
+ .table('users')
45
+ .orderBy('lastName', 'asc')
46
+ .orderBy({ field: 'salary', direction: 'desc', nulls: 'first' })
47
+ .execute(),
48
+ pagedResults: await db.table('users').offset(20).limit(10).execute(),
49
+ userEmails: await db
50
+ .table('users')
51
+ .select('id', 'email')
52
+ .where('status', 'active')
53
+ .execute(),
54
+ rankedSalaries: await db
55
+ .table('users')
56
+ .select('firstName', 'department', 'salary')
57
+ .window('rank', 'salary_rank', {
58
+ partitionBy: ['department'],
59
+ orderBy: [{ field: 'salary', direction: 'desc' }],
60
+ })
61
+ .execute(),
62
+ departmentStats: await db
63
+ .table('users')
64
+ .select('department')
65
+ .groupBy('department')
66
+ .count('id', 'total_employees')
67
+ .avg('salary', 'avg_salary')
68
+ .execute(),
69
+ };
70
+ return results;
71
+ }
72
+ // Aggregations and Grouping
73
+ async function aggregationsAndGrouping() {
74
+ // Basic aggregation
75
+ const orderStats = await db
76
+ .table('orders')
77
+ .groupBy('status')
78
+ .count('id', 'order_count')
79
+ .sum('total', 'total_amount')
80
+ .avg('total', 'average_amount')
81
+ .execute();
82
+ // Having clause
83
+ const highValueOrderGroups = await db
84
+ .table('orders')
85
+ .groupBy('userId')
86
+ .having('total_amount', '>', 1000)
87
+ .sum('total', 'total_amount')
88
+ .execute();
89
+ // Multiple aggregations with complex grouping
90
+ const detailedStats = await db
91
+ .table('orders')
92
+ .groupBy('department', 'status')
93
+ .count('id', 'order_count')
94
+ .sum('total', 'revenue')
95
+ .avg('total', 'avg_order_value')
96
+ .min('total', 'min_order')
97
+ .max('total', 'max_order')
98
+ .having('order_count', '>', 1)
99
+ .orderBy('revenue', 'desc')
100
+ .execute();
101
+ return { orderStats, highValueOrderGroups, detailedStats };
102
+ }
103
+ // Window Functions
104
+ async function windowFunctions() {
105
+ // Row number
106
+ const rankedUsers = await db
107
+ .table('users')
108
+ .select('firstName', 'department', 'salary')
109
+ .rowNumber('rank', ['department'], [{ field: 'salary', direction: 'desc' }])
110
+ .execute();
111
+ // Multiple window functions
112
+ const analyzedSalaries = await db
113
+ .table('users')
114
+ .select('firstName', 'department', 'salary')
115
+ .window('rank', 'salary_rank', {
116
+ partitionBy: ['department'],
117
+ orderBy: [{ field: 'salary', direction: 'desc' }],
118
+ })
119
+ .window('lag', 'prev_salary', {
120
+ field: 'salary',
121
+ partitionBy: ['department'],
122
+ orderBy: [{ field: 'hireDate', direction: 'asc' }],
123
+ })
124
+ .execute();
125
+ // Advanced window function
126
+ const advancedAnalysis = await db
127
+ .table('users')
128
+ .select('id', 'firstName', 'lastName', 'department', 'salary', 'hireDate')
129
+ .windowAdvanced('sum', 'running_total', {
130
+ field: 'salary',
131
+ over: {
132
+ partitionBy: ['department'],
133
+ orderBy: [{ field: 'hireDate', direction: 'asc' }],
134
+ frame: {
135
+ type: 'ROWS',
136
+ start: 'UNBOUNDED PRECEDING',
137
+ end: 'CURRENT ROW',
138
+ },
139
+ },
140
+ })
141
+ .orderBy('department', 'asc')
142
+ .orderBy('hireDate', 'asc')
143
+ .execute();
144
+ return { advancedAnalysis, rankedUsers, analyzedSalaries };
145
+ }
146
+ // Advanced Filtering
147
+ async function advancedFiltering() {
148
+ // Complex grouped conditions
149
+ const filteredUsers = await db
150
+ .table('users')
151
+ .where('status', 'active')
152
+ .andWhere((query) => {
153
+ query.where('role', 'admin').orWhere((subQuery) => {
154
+ subQuery.where('role', 'manager').where('department', 'IT');
155
+ });
156
+ })
157
+ .execute();
158
+ // Where between
159
+ const salaryRange = await db
160
+ .table('users')
161
+ .whereBetween('salary', [50000, 100000])
162
+ .execute();
163
+ // Where in
164
+ const specificDepts = await db
165
+ .table('users')
166
+ .whereIn('department', ['IT', 'HR', 'Finance'])
167
+ .execute();
168
+ // Where exists
169
+ // TODO: needs fixing in the sdk to prevent SQL injection
170
+ // const usersWithOrders = await db
171
+ // .table<User>("users")
172
+ // .whereExists(
173
+ // "SELECT 1 FROM orders WHERE orders.user_id = users.id AND total > ?",
174
+ // [1000]
175
+ // )
176
+ // .execute();
177
+ return { filteredUsers, salaryRange, specificDepts };
178
+ }
179
+ // CTEs (Common Table Expressions)
180
+ //TODO: not yet working well on the server side
181
+ async function cteExamples() {
182
+ // Simple CTE
183
+ const highPaidUsers = db.table('users').where('salary', '>', 100000);
184
+ const result = await db
185
+ .table('users')
186
+ .with('high_paid', highPaidUsers)
187
+ .execute();
188
+ // Recursive CTE
189
+ const initialQuery = db
190
+ .table('products')
191
+ .where('category', 'Electronics');
192
+ const recursiveQuery = db
193
+ .table('products')
194
+ .where('price', '>', 1000);
195
+ const recursiveResult = await db
196
+ .table('products')
197
+ .withRecursive('product_hierarchy', initialQuery, recursiveQuery, {
198
+ unionAll: true,
199
+ })
200
+ .execute();
201
+ return { result, recursiveResult };
202
+ }
203
+ async function transformations() {
204
+ // Implement transformations example
205
+ return [];
206
+ }
207
+ async function realWorldExamples() {
208
+ // Implement complex real-world example
209
+ return [];
210
+ }
211
+ // // Update the module execution check for ES modules
212
+ // const isMainModule = import.meta.url === `file://${process.argv[1]}`;
213
+ // if (isMainModule) {
214
+ // main().catch((error) => {
215
+ // console.error("Error running examples:", error);
216
+ // process.exit(1);
217
+ // });
218
+ // }
219
+ // Export the examples for individual running
220
+ export const examples = {
221
+ basicQueries,
222
+ advancedFiltering,
223
+ aggregationsAndGrouping,
224
+ windowFunctions,
225
+ cteExamples,
226
+ transformations,
227
+ realWorldExamples,
228
+ };
229
+ //# sourceMappingURL=examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/sdk/examples.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { Kysely } from 'kysely';
2
+ type WhereOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'like' | 'in' | 'not in' | 'between' | 'is null' | 'is not null';
3
+ interface WhereClause {
4
+ field: string;
5
+ operator: WhereOperator;
6
+ value: any;
7
+ boolean?: GroupOperator;
8
+ }
9
+ interface WhereBetweenClause {
10
+ field: string;
11
+ operator: 'between';
12
+ value: [any, any];
13
+ boolean?: GroupOperator;
14
+ }
15
+ export interface OrderByClause {
16
+ field: string;
17
+ direction?: 'asc' | 'desc';
18
+ nulls?: 'first' | 'last';
19
+ }
20
+ export interface WindowFunction {
21
+ type: 'row_number' | 'rank' | 'dense_rank' | 'lag' | 'lead' | 'first_value' | 'last_value' | 'sum' | 'avg' | 'count' | 'min' | 'max' | 'nth_value' | 'ntile';
22
+ field?: string;
23
+ alias: string;
24
+ partitionBy?: string[];
25
+ orderBy?: OrderByClause[];
26
+ frameClause?: string;
27
+ }
28
+ interface CTE {
29
+ name: string;
30
+ query: any;
31
+ columns?: string[];
32
+ }
33
+ interface RecursiveCTE extends CTE {
34
+ isRecursive: true;
35
+ initialQuery: any;
36
+ recursiveQuery: any;
37
+ unionAll?: boolean;
38
+ }
39
+ interface TransformConfig {
40
+ groupBy?: string[];
41
+ pivot?: {
42
+ column: string;
43
+ values: string[];
44
+ aggregate: AggregateOptions;
45
+ };
46
+ flatten?: boolean;
47
+ select?: string[];
48
+ compute?: Record<string, (row: any) => any>;
49
+ }
50
+ interface AggregateOptions {
51
+ type: 'count' | 'sum' | 'avg' | 'min' | 'max';
52
+ field: string;
53
+ alias?: string;
54
+ }
55
+ interface SubQueryConfig {
56
+ tableName: string;
57
+ params: QueryParams;
58
+ joinCondition?: {
59
+ leftField: string;
60
+ operator: WhereOperator;
61
+ rightField: string;
62
+ };
63
+ }
64
+ type GroupOperator = 'AND' | 'OR';
65
+ interface HavingClause {
66
+ field: string;
67
+ operator: WhereOperator;
68
+ value: any;
69
+ }
70
+ interface WindowFunctionAdvanced extends WindowFunction {
71
+ over?: {
72
+ partitionBy?: string[];
73
+ orderBy?: OrderByClause[];
74
+ frame?: {
75
+ type: 'ROWS' | 'RANGE';
76
+ start: 'UNBOUNDED PRECEDING' | 'CURRENT ROW' | number;
77
+ end?: 'UNBOUNDED FOLLOWING' | 'CURRENT ROW' | number;
78
+ };
79
+ };
80
+ filter?: WhereClause[];
81
+ }
82
+ export interface QueryParams {
83
+ filter?: Record<string, any>;
84
+ whereRaw?: WhereClause[];
85
+ whereBetween?: WhereBetweenClause[];
86
+ whereNull?: string[];
87
+ whereNotNull?: string[];
88
+ whereIn?: Record<string, any[]>;
89
+ whereNotIn?: Record<string, any[]>;
90
+ whereExists?: SubQueryConfig[];
91
+ whereGroups?: Array<{
92
+ type: 'AND' | 'OR';
93
+ clauses: WhereClause[];
94
+ }>;
95
+ orderBy?: OrderByClause[];
96
+ groupBy?: string[];
97
+ having?: HavingClause[];
98
+ aggregates?: AggregateOptions[];
99
+ limit?: number;
100
+ offset?: number;
101
+ windowFunctions?: WindowFunction[];
102
+ ctes?: CTE[];
103
+ transforms?: TransformConfig;
104
+ recursiveCtes?: RecursiveCTE[];
105
+ advancedWindows?: WindowFunctionAdvanced[];
106
+ select?: string[];
107
+ }
108
+ export declare class KyselyQueryHandler {
109
+ private db;
110
+ private adapter;
111
+ constructor(db: Kysely<any>);
112
+ buildQuery(params: QueryParams, query: any): any;
113
+ }
114
+ export {};
115
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/sdk/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { sql } from 'kysely';
2
+ import { getAdapter } from '../adapters/index';
3
+ export class KyselyQueryHandler {
4
+ constructor(db) {
5
+ this.db = db;
6
+ this.adapter = getAdapter(db);
7
+ }
8
+ buildQuery(params, query) {
9
+ // Add select handling at the start of query building
10
+ // Only apply select/selectAll for SELECT queries (not UPDATE/DELETE builders)
11
+ if (typeof query.selectAll === 'function') {
12
+ if (params.select?.length) {
13
+ query = query.select(params.select);
14
+ }
15
+ else if (!params.aggregates?.length &&
16
+ !params.windowFunctions?.length) {
17
+ query = query.selectAll();
18
+ }
19
+ }
20
+ // Handle Window Functions
21
+ if (params.windowFunctions?.length) {
22
+ const windowSelections = params.windowFunctions.map((wf) => sql.raw(this.adapter.buildWindowFunction(wf)));
23
+ query = query.select(windowSelections);
24
+ }
25
+ // 1. CTEs and Window Functions (must come first)
26
+ // Handle CTEs first
27
+ if (params.ctes?.length) {
28
+ params.ctes.forEach((cte) => {
29
+ // Assuming cte.query.params describes the subquery
30
+ // We need a base query to build upon for the CTE.
31
+ // Likely we need to start a new query builder for the CTE.
32
+ // For now, we assume simple recursive calls are supported if `query` structure allows `with`.
33
+ // query.with(name, cb)
34
+ query = query.with(cte.name, (qb) => this.buildQuery(cte.query.params, qb));
35
+ });
36
+ }
37
+ // Apply basic filters
38
+ if (params.filter) {
39
+ Object.entries(params.filter).forEach(([key, value]) => {
40
+ query = query.where(key, '=', value);
41
+ });
42
+ }
43
+ // Apply raw where clauses
44
+ if (params.whereRaw) {
45
+ params.whereRaw.forEach((clause) => {
46
+ query = query.where(clause.field, clause.operator, clause.value);
47
+ });
48
+ }
49
+ // Apply where between clauses
50
+ if (params.whereBetween) {
51
+ params.whereBetween.forEach((clause) => {
52
+ query = query.where((eb) => eb(clause.field, '>=', clause.value[0]).and(clause.field, '<=', clause.value[1]));
53
+ });
54
+ }
55
+ // Apply where null/not null
56
+ if (params.whereNull) {
57
+ params.whereNull.forEach((field) => {
58
+ query = query.where(field, 'is', null);
59
+ });
60
+ }
61
+ if (params.whereNotNull) {
62
+ params.whereNotNull.forEach((field) => {
63
+ query = query.where(field, 'is not', null);
64
+ });
65
+ }
66
+ // Apply where in/not in
67
+ if (params.whereIn) {
68
+ Object.entries(params.whereIn).forEach(([field, values]) => {
69
+ query = query.where(field, 'in', values);
70
+ });
71
+ }
72
+ if (params.whereNotIn) {
73
+ Object.entries(params.whereNotIn).forEach(([field, values]) => {
74
+ query = query.where(field, 'not in', values);
75
+ });
76
+ }
77
+ // Apply grouped where clauses
78
+ if (params.whereGroups) {
79
+ params.whereGroups.forEach((group) => {
80
+ if (group.type === 'AND') {
81
+ query = query.where((eb) => {
82
+ let expr = eb.and([]);
83
+ group.clauses.forEach((clause) => {
84
+ if (clause.type) {
85
+ // Nested group - simplifying for now, would need recursion
86
+ }
87
+ else {
88
+ expr = expr.and(clause.field, clause.operator, clause.value);
89
+ }
90
+ });
91
+ return expr;
92
+ });
93
+ }
94
+ else {
95
+ query = query.where((eb) => {
96
+ let expr = eb.or([]);
97
+ group.clauses.forEach((clause) => {
98
+ if (clause.type) {
99
+ // Nested
100
+ }
101
+ else {
102
+ expr = expr.or(clause.field, clause.operator, clause.value);
103
+ }
104
+ });
105
+ return expr;
106
+ });
107
+ }
108
+ });
109
+ }
110
+ // Apply group by
111
+ if (params.groupBy) {
112
+ query = query.groupBy(params.groupBy);
113
+ }
114
+ // Apply having
115
+ if (params.having) {
116
+ params.having.forEach((clause) => {
117
+ query = query.having(clause.field, clause.operator, clause.value);
118
+ });
119
+ }
120
+ // Apply sorting
121
+ if (params.orderBy) {
122
+ params.orderBy.forEach((clause) => {
123
+ query = query.orderBy(clause.field, clause.direction || 'asc');
124
+ });
125
+ }
126
+ // Apply pagination
127
+ if (params.limit) {
128
+ query = query.limit(params.limit);
129
+ }
130
+ if (params.offset) {
131
+ query = query.offset(params.offset);
132
+ }
133
+ return query;
134
+ }
135
+ }
136
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/sdk/server.ts"],"names":[],"mappings":"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"}