ai-database 2.1.1 → 2.3.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.
Files changed (268) hide show
  1. package/CHANGELOG.md +47 -1
  2. package/README.md +1063 -186
  3. package/dist/actions.d.ts +2 -2
  4. package/dist/actions.d.ts.map +1 -1
  5. package/dist/actions.js +1 -1
  6. package/dist/actions.js.map +1 -1
  7. package/dist/ai-promise-db.d.ts +52 -23
  8. package/dist/ai-promise-db.d.ts.map +1 -1
  9. package/dist/ai-promise-db.js +185 -164
  10. package/dist/ai-promise-db.js.map +1 -1
  11. package/dist/authorization.d.ts.map +1 -1
  12. package/dist/authorization.js +38 -30
  13. package/dist/authorization.js.map +1 -1
  14. package/dist/cascade-orchestrator.d.ts +404 -0
  15. package/dist/cascade-orchestrator.d.ts.map +1 -0
  16. package/dist/cascade-orchestrator.js +828 -0
  17. package/dist/cascade-orchestrator.js.map +1 -0
  18. package/dist/cascade-write-strategy.d.ts +584 -0
  19. package/dist/cascade-write-strategy.d.ts.map +1 -0
  20. package/dist/cascade-write-strategy.js +590 -0
  21. package/dist/cascade-write-strategy.js.map +1 -0
  22. package/dist/ch-adapter.d.ts +358 -0
  23. package/dist/ch-adapter.d.ts.map +1 -0
  24. package/dist/ch-adapter.js +929 -0
  25. package/dist/ch-adapter.js.map +1 -0
  26. package/dist/client/index.d.ts +42 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +43 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client.d.ts +266 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +81 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/constants.d.ts +64 -1
  35. package/dist/constants.d.ts.map +1 -1
  36. package/dist/constants.js +52 -2
  37. package/dist/constants.js.map +1 -1
  38. package/dist/dataloader.d.ts +99 -0
  39. package/dist/dataloader.d.ts.map +1 -0
  40. package/dist/dataloader.js +225 -0
  41. package/dist/dataloader.js.map +1 -0
  42. package/dist/db-provider-port.d.ts +501 -0
  43. package/dist/db-provider-port.d.ts.map +1 -0
  44. package/dist/db-provider-port.js +113 -0
  45. package/dist/db-provider-port.js.map +1 -0
  46. package/dist/digital-objects-provider.d.ts +49 -0
  47. package/dist/digital-objects-provider.d.ts.map +1 -0
  48. package/dist/digital-objects-provider.js +55 -0
  49. package/dist/digital-objects-provider.js.map +1 -0
  50. package/dist/do-sqlite-adapter.d.ts +402 -0
  51. package/dist/do-sqlite-adapter.d.ts.map +1 -0
  52. package/dist/do-sqlite-adapter.js +745 -0
  53. package/dist/do-sqlite-adapter.js.map +1 -0
  54. package/dist/docs-rels/custom-types.d.ts +134 -0
  55. package/dist/docs-rels/custom-types.d.ts.map +1 -0
  56. package/dist/docs-rels/custom-types.js +70 -0
  57. package/dist/docs-rels/custom-types.js.map +1 -0
  58. package/dist/docs-rels/index.d.ts +16 -0
  59. package/dist/docs-rels/index.d.ts.map +1 -0
  60. package/dist/docs-rels/index.js +16 -0
  61. package/dist/docs-rels/index.js.map +1 -0
  62. package/dist/docs-rels/migrations/index.d.ts +30 -0
  63. package/dist/docs-rels/migrations/index.d.ts.map +1 -0
  64. package/dist/docs-rels/migrations/index.js +128 -0
  65. package/dist/docs-rels/migrations/index.js.map +1 -0
  66. package/dist/docs-rels/schema.d.ts +2961 -0
  67. package/dist/docs-rels/schema.d.ts.map +1 -0
  68. package/dist/docs-rels/schema.js +244 -0
  69. package/dist/docs-rels/schema.js.map +1 -0
  70. package/dist/durable-clickhouse.d.ts.map +1 -1
  71. package/dist/durable-clickhouse.js +16 -13
  72. package/dist/durable-clickhouse.js.map +1 -1
  73. package/dist/durable-promise.d.ts.map +1 -1
  74. package/dist/durable-promise.js +34 -15
  75. package/dist/durable-promise.js.map +1 -1
  76. package/dist/errors.d.ts +127 -0
  77. package/dist/errors.d.ts.map +1 -0
  78. package/dist/errors.js +210 -0
  79. package/dist/errors.js.map +1 -0
  80. package/dist/eventbridge.d.ts +117 -0
  81. package/dist/eventbridge.d.ts.map +1 -0
  82. package/dist/eventbridge.js +238 -0
  83. package/dist/eventbridge.js.map +1 -0
  84. package/dist/events.d.ts +2 -2
  85. package/dist/events.d.ts.map +1 -1
  86. package/dist/events.js +1 -1
  87. package/dist/events.js.map +1 -1
  88. package/dist/execution-queue.d.ts.map +1 -1
  89. package/dist/execution-queue.js +4 -5
  90. package/dist/execution-queue.js.map +1 -1
  91. package/dist/index.d.ts +37 -8
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +112 -6
  94. package/dist/index.js.map +1 -1
  95. package/dist/linguistic.d.ts +3 -108
  96. package/dist/linguistic.d.ts.map +1 -1
  97. package/dist/linguistic.js +3 -372
  98. package/dist/linguistic.js.map +1 -1
  99. package/dist/logger.d.ts +132 -0
  100. package/dist/logger.d.ts.map +1 -0
  101. package/dist/logger.js +137 -0
  102. package/dist/logger.js.map +1 -0
  103. package/dist/memory-provider.d.ts +129 -0
  104. package/dist/memory-provider.d.ts.map +1 -1
  105. package/dist/memory-provider.js +592 -257
  106. package/dist/memory-provider.js.map +1 -1
  107. package/dist/pg-adapter.d.ts +424 -0
  108. package/dist/pg-adapter.d.ts.map +1 -0
  109. package/dist/pg-adapter.js +921 -0
  110. package/dist/pg-adapter.js.map +1 -0
  111. package/dist/pipelines-iceberg-emitter.d.ts +327 -0
  112. package/dist/pipelines-iceberg-emitter.d.ts.map +1 -0
  113. package/dist/pipelines-iceberg-emitter.js +351 -0
  114. package/dist/pipelines-iceberg-emitter.js.map +1 -0
  115. package/dist/provider-capabilities.d.ts +146 -0
  116. package/dist/provider-capabilities.d.ts.map +1 -0
  117. package/dist/provider-capabilities.js +214 -0
  118. package/dist/provider-capabilities.js.map +1 -0
  119. package/dist/rdb-provider-adapter.d.ts +195 -0
  120. package/dist/rdb-provider-adapter.d.ts.map +1 -0
  121. package/dist/rdb-provider-adapter.js +291 -0
  122. package/dist/rdb-provider-adapter.js.map +1 -0
  123. package/dist/schema/cascade.d.ts +49 -10
  124. package/dist/schema/cascade.d.ts.map +1 -1
  125. package/dist/schema/cascade.js +491 -273
  126. package/dist/schema/cascade.js.map +1 -1
  127. package/dist/schema/definition-caches.d.ts +24 -0
  128. package/dist/schema/definition-caches.d.ts.map +1 -0
  129. package/dist/schema/definition-caches.js +26 -0
  130. package/dist/schema/definition-caches.js.map +1 -0
  131. package/dist/schema/dependency-graph.d.ts +45 -0
  132. package/dist/schema/dependency-graph.d.ts.map +1 -0
  133. package/dist/schema/dependency-graph.js +47 -0
  134. package/dist/schema/dependency-graph.js.map +1 -0
  135. package/dist/schema/diff.d.ts +103 -0
  136. package/dist/schema/diff.d.ts.map +1 -0
  137. package/dist/schema/diff.js +329 -0
  138. package/dist/schema/diff.js.map +1 -0
  139. package/dist/schema/entity-operations.d.ts +99 -0
  140. package/dist/schema/entity-operations.d.ts.map +1 -0
  141. package/dist/schema/entity-operations.js +818 -0
  142. package/dist/schema/entity-operations.js.map +1 -0
  143. package/dist/schema/generation-context.d.ts +202 -0
  144. package/dist/schema/generation-context.d.ts.map +1 -0
  145. package/dist/schema/generation-context.js +393 -0
  146. package/dist/schema/generation-context.js.map +1 -0
  147. package/dist/schema/index.d.ts +32 -34
  148. package/dist/schema/index.d.ts.map +1 -1
  149. package/dist/schema/index.js +462 -519
  150. package/dist/schema/index.js.map +1 -1
  151. package/dist/schema/migration.d.ts +205 -0
  152. package/dist/schema/migration.d.ts.map +1 -0
  153. package/dist/schema/migration.js +327 -0
  154. package/dist/schema/migration.js.map +1 -0
  155. package/dist/schema/nl-query-generator.d.ts +68 -0
  156. package/dist/schema/nl-query-generator.d.ts.map +1 -0
  157. package/dist/schema/nl-query-generator.js +362 -0
  158. package/dist/schema/nl-query-generator.js.map +1 -0
  159. package/dist/schema/nl-query.d.ts +65 -0
  160. package/dist/schema/nl-query.d.ts.map +1 -0
  161. package/dist/schema/nl-query.js +178 -0
  162. package/dist/schema/nl-query.js.map +1 -0
  163. package/dist/schema/parse.d.ts.map +1 -1
  164. package/dist/schema/parse.js +152 -89
  165. package/dist/schema/parse.js.map +1 -1
  166. package/dist/schema/provider.d.ts +38 -0
  167. package/dist/schema/provider.d.ts.map +1 -1
  168. package/dist/schema/provider.js +15 -7
  169. package/dist/schema/provider.js.map +1 -1
  170. package/dist/schema/resolve.d.ts +46 -5
  171. package/dist/schema/resolve.d.ts.map +1 -1
  172. package/dist/schema/resolve.js +334 -117
  173. package/dist/schema/resolve.js.map +1 -1
  174. package/dist/schema/search-utils.d.ts +76 -0
  175. package/dist/schema/search-utils.d.ts.map +1 -0
  176. package/dist/schema/search-utils.js +86 -0
  177. package/dist/schema/search-utils.js.map +1 -0
  178. package/dist/schema/seed.d.ts +53 -0
  179. package/dist/schema/seed.d.ts.map +1 -0
  180. package/dist/schema/seed.js +94 -0
  181. package/dist/schema/seed.js.map +1 -0
  182. package/dist/schema/semantic.d.ts +11 -0
  183. package/dist/schema/semantic.d.ts.map +1 -1
  184. package/dist/schema/semantic.js +262 -68
  185. package/dist/schema/semantic.js.map +1 -1
  186. package/dist/schema/sub-apis.d.ts +52 -0
  187. package/dist/schema/sub-apis.d.ts.map +1 -0
  188. package/dist/schema/sub-apis.js +216 -0
  189. package/dist/schema/sub-apis.js.map +1 -0
  190. package/dist/schema/system-entities.d.ts +42 -0
  191. package/dist/schema/system-entities.d.ts.map +1 -0
  192. package/dist/schema/system-entities.js +101 -0
  193. package/dist/schema/system-entities.js.map +1 -0
  194. package/dist/schema/types.d.ts +91 -9
  195. package/dist/schema/types.d.ts.map +1 -1
  196. package/dist/schema/union-fallback.d.ts +219 -0
  197. package/dist/schema/union-fallback.d.ts.map +1 -0
  198. package/dist/schema/union-fallback.js +331 -0
  199. package/dist/schema/union-fallback.js.map +1 -0
  200. package/dist/schema/value-generators/ai.d.ts +54 -0
  201. package/dist/schema/value-generators/ai.d.ts.map +1 -0
  202. package/dist/schema/value-generators/ai.js +136 -0
  203. package/dist/schema/value-generators/ai.js.map +1 -0
  204. package/dist/schema/value-generators/index.d.ts +126 -0
  205. package/dist/schema/value-generators/index.d.ts.map +1 -0
  206. package/dist/schema/value-generators/index.js +219 -0
  207. package/dist/schema/value-generators/index.js.map +1 -0
  208. package/dist/schema/value-generators/placeholder.d.ts +52 -0
  209. package/dist/schema/value-generators/placeholder.d.ts.map +1 -0
  210. package/dist/schema/value-generators/placeholder.js +328 -0
  211. package/dist/schema/value-generators/placeholder.js.map +1 -0
  212. package/dist/schema/value-generators/types.d.ts +116 -0
  213. package/dist/schema/value-generators/types.d.ts.map +1 -0
  214. package/dist/schema/value-generators/types.js +11 -0
  215. package/dist/schema/value-generators/types.js.map +1 -0
  216. package/dist/schema/verb-derivation.d.ts +167 -0
  217. package/dist/schema/verb-derivation.d.ts.map +1 -0
  218. package/dist/schema/verb-derivation.js +281 -0
  219. package/dist/schema/verb-derivation.js.map +1 -0
  220. package/dist/schema/version.d.ts +111 -0
  221. package/dist/schema/version.d.ts.map +1 -0
  222. package/dist/schema/version.js +190 -0
  223. package/dist/schema/version.js.map +1 -0
  224. package/dist/schema.d.ts +1095 -23
  225. package/dist/schema.d.ts.map +1 -1
  226. package/dist/schema.js +2854 -38
  227. package/dist/schema.js.map +1 -1
  228. package/dist/semantic-vectors.d.ts +39 -0
  229. package/dist/semantic-vectors.d.ts.map +1 -0
  230. package/dist/semantic-vectors.js +334 -0
  231. package/dist/semantic-vectors.js.map +1 -0
  232. package/dist/semantic.d.ts +29 -1
  233. package/dist/semantic.d.ts.map +1 -1
  234. package/dist/semantic.js +26 -16
  235. package/dist/semantic.js.map +1 -1
  236. package/dist/telemetry.d.ts +128 -0
  237. package/dist/telemetry.d.ts.map +1 -0
  238. package/dist/telemetry.js +305 -0
  239. package/dist/telemetry.js.map +1 -0
  240. package/dist/tests.d.ts.map +1 -1
  241. package/dist/tests.js +30 -22
  242. package/dist/tests.js.map +1 -1
  243. package/dist/type-guards.d.ts +212 -0
  244. package/dist/type-guards.d.ts.map +1 -0
  245. package/dist/type-guards.js +318 -0
  246. package/dist/type-guards.js.map +1 -0
  247. package/dist/types.d.ts +33 -245
  248. package/dist/types.d.ts.map +1 -1
  249. package/dist/types.js +62 -72
  250. package/dist/types.js.map +1 -1
  251. package/dist/validation.d.ts +165 -0
  252. package/dist/validation.d.ts.map +1 -0
  253. package/dist/validation.js +639 -0
  254. package/dist/validation.js.map +1 -0
  255. package/dist/worker/db-provider.d.ts +168 -0
  256. package/dist/worker/db-provider.d.ts.map +1 -0
  257. package/dist/worker/db-provider.js +277 -0
  258. package/dist/worker/db-provider.js.map +1 -0
  259. package/dist/worker/index.d.ts +35 -0
  260. package/dist/worker/index.d.ts.map +1 -0
  261. package/dist/worker/index.js +37 -0
  262. package/dist/worker/index.js.map +1 -0
  263. package/dist/worker.d.ts +779 -0
  264. package/dist/worker.d.ts.map +1 -0
  265. package/dist/worker.js +2786 -0
  266. package/dist/worker.js.map +1 -0
  267. package/package.json +38 -8
  268. package/src/docs-rels/migrations/0001-init.sql +125 -0
@@ -0,0 +1,327 @@
1
+ /**
2
+ * Schema Migration Executor
3
+ *
4
+ * Provides utilities for defining and executing schema migrations.
5
+ * Supports forward (up) and backward (down) migrations with operations
6
+ * for adding, removing, renaming fields, and transforming data.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { getSchemaVersion, setSchemaVersion } from './version.js';
11
+ // =============================================================================
12
+ // Migration Definition Helper
13
+ // =============================================================================
14
+ /**
15
+ * Define a migration with type safety
16
+ *
17
+ * This helper function ensures the migration object has the correct shape
18
+ * and provides type inference for the operations.
19
+ *
20
+ * @param migration - The migration definition
21
+ * @returns The same migration definition (for chaining)
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const migration = defineMigration({
26
+ * version: 2,
27
+ * description: 'Add email field to User',
28
+ * up: [
29
+ * { type: 'addField', entityName: 'User', fieldName: 'email', fieldType: 'string' }
30
+ * ],
31
+ * down: [
32
+ * { type: 'removeField', entityName: 'User', fieldName: 'email' }
33
+ * ]
34
+ * })
35
+ * ```
36
+ */
37
+ export function defineMigration(migration) {
38
+ // Validate migration structure
39
+ if (typeof migration.version !== 'number' || migration.version < 1) {
40
+ throw new Error(`Migration version must be a positive number, got: ${migration.version}`);
41
+ }
42
+ if (!migration.description || typeof migration.description !== 'string') {
43
+ throw new Error(`Migration version ${migration.version} must have a description`);
44
+ }
45
+ if (!Array.isArray(migration.up)) {
46
+ throw new Error(`Migration version ${migration.version} must have an 'up' operations array`);
47
+ }
48
+ if (!Array.isArray(migration.down)) {
49
+ throw new Error(`Migration version ${migration.version} must have a 'down' operations array`);
50
+ }
51
+ return migration;
52
+ }
53
+ // =============================================================================
54
+ // Operation Execution
55
+ // =============================================================================
56
+ /**
57
+ * Execute a single migration operation
58
+ *
59
+ * @param provider - The database provider
60
+ * @param operation - The operation to execute
61
+ */
62
+ async function executeOperation(provider, operation) {
63
+ switch (operation.type) {
64
+ case 'addEntity': {
65
+ // No action needed - the entity will be created when data is added
66
+ // This operation is primarily for documentation and down migration purposes
67
+ break;
68
+ }
69
+ case 'removeEntity': {
70
+ if (operation.deleteData) {
71
+ // Delete all entities of this type
72
+ const entities = await provider.list(operation.entityName);
73
+ for (const entity of entities) {
74
+ const id = entity['$id'] || entity['id'];
75
+ if (id) {
76
+ await provider.delete(operation.entityName, id);
77
+ }
78
+ }
79
+ }
80
+ break;
81
+ }
82
+ case 'addField': {
83
+ // Update existing entities with the default value
84
+ if (operation.defaultValue !== undefined) {
85
+ const entities = await provider.list(operation.entityName);
86
+ for (const entity of entities) {
87
+ const id = entity['$id'] || entity['id'];
88
+ if (id && entity[operation.fieldName] === undefined) {
89
+ await provider.update(operation.entityName, id, {
90
+ [operation.fieldName]: operation.defaultValue,
91
+ });
92
+ }
93
+ }
94
+ }
95
+ break;
96
+ }
97
+ case 'removeField': {
98
+ // Remove field from all entities
99
+ const entities = await provider.list(operation.entityName);
100
+ for (const entity of entities) {
101
+ const id = entity['$id'] || entity['id'];
102
+ if (id && entity[operation.fieldName] !== undefined) {
103
+ // Create update object without the removed field
104
+ const { [operation.fieldName]: _, ...rest } = entity;
105
+ await provider.update(operation.entityName, id, {
106
+ [operation.fieldName]: null, // Set to null to "remove"
107
+ });
108
+ }
109
+ }
110
+ break;
111
+ }
112
+ case 'renameField': {
113
+ const entities = await provider.list(operation.entityName);
114
+ for (const entity of entities) {
115
+ const id = entity['$id'] || entity['id'];
116
+ if (id && entity[operation.oldFieldName] !== undefined) {
117
+ await provider.update(operation.entityName, id, {
118
+ [operation.newFieldName]: entity[operation.oldFieldName],
119
+ [operation.oldFieldName]: null, // Remove old field
120
+ });
121
+ }
122
+ }
123
+ break;
124
+ }
125
+ case 'changeType': {
126
+ const entities = await provider.list(operation.entityName);
127
+ for (const entity of entities) {
128
+ const id = entity['$id'] || entity['id'];
129
+ if (id && entity[operation.fieldName] !== undefined) {
130
+ const oldValue = entity[operation.fieldName];
131
+ const newValue = operation.transform ? operation.transform(oldValue) : oldValue;
132
+ await provider.update(operation.entityName, id, {
133
+ [operation.fieldName]: newValue,
134
+ });
135
+ }
136
+ }
137
+ break;
138
+ }
139
+ case 'transformData': {
140
+ const entities = await provider.list(operation.entityName);
141
+ for (const entity of entities) {
142
+ // Apply filter if provided
143
+ if (operation.filter && !operation.filter(entity)) {
144
+ continue;
145
+ }
146
+ const id = entity['$id'] || entity['id'];
147
+ if (id) {
148
+ const transformed = operation.transform(entity);
149
+ // Extract only the changed fields for update
150
+ const updates = {};
151
+ for (const [key, value] of Object.entries(transformed)) {
152
+ if (key !== '$id' && key !== '$type' && value !== entity[key]) {
153
+ updates[key] = value;
154
+ }
155
+ }
156
+ if (Object.keys(updates).length > 0) {
157
+ await provider.update(operation.entityName, id, updates);
158
+ }
159
+ }
160
+ }
161
+ break;
162
+ }
163
+ default: {
164
+ // TypeScript exhaustiveness check
165
+ const _exhaustive = operation;
166
+ throw new Error(`Unknown operation type: ${_exhaustive.type}`);
167
+ }
168
+ }
169
+ }
170
+ // =============================================================================
171
+ // Migration Execution
172
+ // =============================================================================
173
+ /**
174
+ * Run pending migrations on the database
175
+ *
176
+ * This function:
177
+ * 1. Gets the current schema version from the database
178
+ * 2. Finds all migrations with version > current version
179
+ * 3. Applies them in order
180
+ * 4. Updates the schema version after each successful migration
181
+ *
182
+ * @param provider - The database provider
183
+ * @param migrations - Array of migration definitions
184
+ * @param targetVersion - Optional: specific version to migrate to
185
+ * @returns Result of the migration run
186
+ *
187
+ * @example
188
+ * ```ts
189
+ * const migrations = [
190
+ * defineMigration({
191
+ * version: 1,
192
+ * description: 'Initial schema',
193
+ * up: [],
194
+ * down: []
195
+ * }),
196
+ * defineMigration({
197
+ * version: 2,
198
+ * description: 'Add email to User',
199
+ * up: [
200
+ * { type: 'addField', entityName: 'User', fieldName: 'email', fieldType: 'string' }
201
+ * ],
202
+ * down: [
203
+ * { type: 'removeField', entityName: 'User', fieldName: 'email' }
204
+ * ]
205
+ * })
206
+ * ]
207
+ *
208
+ * const result = await runMigrations(provider, migrations)
209
+ * console.log(`Migrated from v${result.fromVersion} to v${result.toVersion}`)
210
+ * ```
211
+ */
212
+ export async function runMigrations(provider, migrations, targetVersion) {
213
+ // Sort migrations by version
214
+ const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);
215
+ // Validate version sequence
216
+ for (let i = 0; i < sortedMigrations.length; i++) {
217
+ if (sortedMigrations[i].version !== i + 1) {
218
+ throw new Error(`Migration versions must be sequential starting from 1. ` +
219
+ `Expected version ${i + 1}, got ${sortedMigrations[i].version}`);
220
+ }
221
+ }
222
+ // Get current version
223
+ const versionInfo = await getSchemaVersion(provider);
224
+ const currentVersion = versionInfo?.version ?? 0;
225
+ const finalTargetVersion = targetVersion ?? sortedMigrations[sortedMigrations.length - 1]?.version ?? 0;
226
+ const result = {
227
+ migrationsRun: false,
228
+ fromVersion: currentVersion === 0 ? null : currentVersion,
229
+ toVersion: currentVersion,
230
+ appliedMigrations: [],
231
+ errors: [],
232
+ };
233
+ // Determine direction
234
+ if (finalTargetVersion > currentVersion) {
235
+ // Forward migration
236
+ for (const migration of sortedMigrations) {
237
+ if (migration.version <= currentVersion)
238
+ continue;
239
+ if (migration.version > finalTargetVersion)
240
+ break;
241
+ try {
242
+ // Execute all up operations
243
+ for (const operation of migration.up) {
244
+ await executeOperation(provider, operation);
245
+ }
246
+ // Update version after successful migration
247
+ await setSchemaVersion(provider, migration.version, `v${migration.version}`, migration.description);
248
+ result.appliedMigrations.push(migration.version);
249
+ result.toVersion = migration.version;
250
+ result.migrationsRun = true;
251
+ }
252
+ catch (error) {
253
+ result.errors.push({
254
+ version: migration.version,
255
+ error: error instanceof Error ? error : new Error(String(error)),
256
+ });
257
+ // Stop on first error
258
+ break;
259
+ }
260
+ }
261
+ }
262
+ else if (finalTargetVersion < currentVersion) {
263
+ // Backward migration (rollback)
264
+ const reversedMigrations = [...sortedMigrations].reverse();
265
+ for (const migration of reversedMigrations) {
266
+ if (migration.version > currentVersion)
267
+ continue;
268
+ if (migration.version <= finalTargetVersion)
269
+ break;
270
+ try {
271
+ // Execute all down operations
272
+ for (const operation of migration.down) {
273
+ await executeOperation(provider, operation);
274
+ }
275
+ // Update version after successful rollback
276
+ const newVersion = migration.version - 1;
277
+ await setSchemaVersion(provider, newVersion, `v${newVersion}`, `Rolled back from v${migration.version}`);
278
+ result.appliedMigrations.push(migration.version);
279
+ result.toVersion = newVersion;
280
+ result.migrationsRun = true;
281
+ }
282
+ catch (error) {
283
+ result.errors.push({
284
+ version: migration.version,
285
+ error: error instanceof Error ? error : new Error(String(error)),
286
+ });
287
+ // Stop on first error
288
+ break;
289
+ }
290
+ }
291
+ }
292
+ return result;
293
+ }
294
+ /**
295
+ * Get pending migrations that need to be run
296
+ *
297
+ * @param provider - The database provider
298
+ * @param migrations - Array of migration definitions
299
+ * @returns Array of migrations that haven't been applied yet
300
+ */
301
+ export async function getPendingMigrations(provider, migrations) {
302
+ const versionInfo = await getSchemaVersion(provider);
303
+ const currentVersion = versionInfo?.version ?? 0;
304
+ return migrations.filter((m) => m.version > currentVersion).sort((a, b) => a.version - b.version);
305
+ }
306
+ /**
307
+ * Rollback the last applied migration
308
+ *
309
+ * @param provider - The database provider
310
+ * @param migrations - Array of migration definitions
311
+ * @returns Result of the rollback
312
+ */
313
+ export async function rollbackLastMigration(provider, migrations) {
314
+ const versionInfo = await getSchemaVersion(provider);
315
+ const currentVersion = versionInfo?.version ?? 0;
316
+ if (currentVersion === 0) {
317
+ return {
318
+ migrationsRun: false,
319
+ fromVersion: null,
320
+ toVersion: 0,
321
+ appliedMigrations: [],
322
+ errors: [],
323
+ };
324
+ }
325
+ return runMigrations(provider, migrations, currentVersion - 1);
326
+ }
327
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/schema/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Default Natural Language Query Generator
3
+ *
4
+ * Uses generateObject from ai-functions to convert natural language
5
+ * queries into structured query plans that can be executed against the database.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import type { NLQueryGenerator } from './types.js';
10
+ /**
11
+ * Create a default NL query generator that uses generateObject from ai-functions
12
+ *
13
+ * This generator converts natural language queries into structured query plans
14
+ * using the LLM configured via configureAIGeneration().
15
+ *
16
+ * @returns An NLQueryGenerator function
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { setNLQueryGenerator } from 'ai-database'
21
+ * import { createDefaultNLQueryGenerator } from 'ai-database/schema/nl-query-generator'
22
+ *
23
+ * // Configure the default generator
24
+ * const generator = createDefaultNLQueryGenerator()
25
+ * setNLQueryGenerator(generator)
26
+ *
27
+ * // Now NL queries will use the LLM
28
+ * const results = await db.Lead`find high scoring leads`
29
+ * ```
30
+ */
31
+ export declare function createDefaultNLQueryGenerator(): NLQueryGenerator;
32
+ /**
33
+ * Check if a value matches a MongoDB-style filter condition
34
+ *
35
+ * Supports the following operators:
36
+ * - `$eq` - Equal to
37
+ * - `$ne` - Not equal to
38
+ * - `$gt` - Greater than (works with numbers and dates)
39
+ * - `$gte` - Greater than or equal to
40
+ * - `$lt` - Less than
41
+ * - `$lte` - Less than or equal to
42
+ * - `$in` - Value is in array
43
+ * - `$nin` - Value is not in array
44
+ * - `$exists` - Field exists (or doesn't exist if false)
45
+ * - `$regex` - Regular expression match (string values only)
46
+ *
47
+ * @param value - The value to check
48
+ * @param condition - The filter condition (can be a value or operator object)
49
+ * @returns Whether the value matches the condition
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * matchesFilter(75, { $gt: 70 }) // true
54
+ * matchesFilter('active', 'active') // true
55
+ * matchesFilter(new Date('2024-01-15'), { $gt: new Date('2024-01-01') }) // true
56
+ * matchesFilter('enterprise', { $regex: 'enter' }) // true
57
+ * ```
58
+ */
59
+ export declare function matchesFilter(value: unknown, condition: unknown): boolean;
60
+ /**
61
+ * Apply filters to a list of entities
62
+ *
63
+ * @param entities - The entities to filter
64
+ * @param filters - The filter conditions to apply
65
+ * @returns The filtered entities
66
+ */
67
+ export declare function applyFilters<T extends Record<string, unknown>>(entities: T[], filters: Record<string, unknown> | undefined): T[];
68
+ //# sourceMappingURL=nl-query-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nl-query-generator.d.ts","sourceRoot":"","sources":["../../src/schema/nl-query-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAA+B,gBAAgB,EAAE,MAAM,YAAY,CAAA;AA8D/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,IAAI,gBAAgB,CA4HhE;AA+BD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAmFzE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,QAAQ,EAAE,CAAC,EAAE,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C,CAAC,EAAE,CAcL"}