@fragno-dev/db 0.1.0 → 0.1.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.
@@ -1,7 +1,7 @@
1
1
  $ tsdown
2
2
  ℹ tsdown v0.15.9 powered by rolldown v1.0.0-beta.44
3
3
  ℹ Using tsdown config: /home/runner/work/fragno/fragno/packages/fragno-db/tsdown.config.ts
4
- ℹ entry: src/fragment.ts, src/id.ts, src/mod.ts, src/query/cursor.ts, src/query/query.ts, src/query/unit-of-work.ts, src/schema/create.ts, src/adapters/drizzle/drizzle-adapter.ts, src/adapters/kysely/kysely-adapter.ts
4
+ ℹ entry: src/fragment.ts, src/id.ts, src/mod.ts, src/query/cursor.ts, src/query/query.ts, src/query/unit-of-work.ts, src/schema/create.ts, src/adapters/kysely/kysely-adapter.ts, src/adapters/drizzle/drizzle-adapter.ts
5
5
  ℹ tsconfig: tsconfig.json
6
6
  ℹ Build start
7
7
  ℹ dist/schema/create.js 17.16 kB │ gzip: 4.51 kB
@@ -22,7 +22,7 @@ $ tsdown
22
22
  ℹ dist/adapters/kysely/migration/execute.js.map 16.41 kB │ gzip: 4.67 kB
23
23
  ℹ dist/adapters/drizzle/drizzle-uow-compiler.js 13.37 kB │ gzip: 3.43 kB
24
24
  ℹ dist/adapters/kysely/kysely-uow-compiler.js.map 13.33 kB │ gzip: 3.78 kB
25
- ℹ dist/adapters/kysely/kysely-query.js.map 12.65 kB │ gzip: 3.41 kB
25
+ ℹ dist/adapters/kysely/kysely-query.js.map 12.66 kB │ gzip: 3.40 kB
26
26
  ℹ dist/schema/create.d.ts.map 12.26 kB │ gzip: 4.66 kB
27
27
  ℹ dist/adapters/kysely/kysely-query-builder.js 12.02 kB │ gzip: 3.47 kB
28
28
  ℹ dist/schema/serialize.js.map 11.74 kB │ gzip: 2.73 kB
@@ -43,7 +43,7 @@ $ tsdown
43
43
  ℹ dist/adapters/kysely/kysely-uow-executor.js.map  7.10 kB │ gzip: 2.53 kB
44
44
  ℹ dist/adapters/drizzle/drizzle-uow-decoder.js.map  7.00 kB │ gzip: 2.58 kB
45
45
  ℹ dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/conditions.js.map  6.92 kB │ gzip: 1.53 kB
46
- ℹ dist/query/query.d.ts.map  6.49 kB │ gzip: 2.43 kB
46
+ ℹ dist/query/query.d.ts.map  6.51 kB │ gzip: 2.43 kB
47
47
  ℹ dist/adapters/kysely/kysely-query-compiler.js.map  6.10 kB │ gzip: 1.48 kB
48
48
  ℹ dist/adapters/kysely/kysely-query.js  5.92 kB │ gzip: 1.65 kB
49
49
  ℹ dist/adapters/kysely/kysely-uow-compiler.js  5.84 kB │ gzip: 1.77 kB
@@ -120,7 +120,7 @@ $ tsdown
120
120
  ℹ dist/shared/providers.d.ts.map  0.15 kB │ gzip: 0.13 kB
121
121
  ℹ dist/query/unit-of-work.d.ts 17.49 kB │ gzip: 4.26 kB
122
122
  ℹ dist/schema/create.d.ts 17.28 kB │ gzip: 4.20 kB
123
- ℹ dist/query/query.d.ts  6.17 kB │ gzip: 1.59 kB
123
+ ℹ dist/query/query.d.ts  6.19 kB │ gzip: 1.59 kB
124
124
  ℹ dist/query/cursor.d.ts  2.57 kB │ gzip: 0.93 kB
125
125
  ℹ dist/fragment.d.ts  2.39 kB │ gzip: 0.75 kB
126
126
  ℹ dist/mod.d.ts  2.38 kB │ gzip: 0.78 kB
@@ -137,5 +137,5 @@ $ tsdown
137
137
  ℹ dist/shared/providers.d.ts  0.26 kB │ gzip: 0.19 kB
138
138
  ℹ dist/util/types.d.ts  0.26 kB │ gzip: 0.21 kB
139
139
  ℹ dist/adapters/drizzle/drizzle-uow-compiler.d.ts  0.22 kB │ gzip: 0.17 kB
140
- ℹ 133 files, total: 687.07 kB
141
- ✔ Build complete in 13054ms
140
+ ℹ 133 files, total: 687.12 kB
141
+ ✔ Build complete in 12650ms
@@ -3,34 +3,35 @@ $ vitest run
3
3
   RUN  v3.2.4 /home/runner/work/fragno/fragno/packages/fragno-db
4
4
  Coverage enabled with istanbul
5
5
 
6
- ✓ src/adapters/kysely/kysely-query-builder.test.ts (83 tests) 530ms
7
- ✓ src/adapters/kysely/migration/execute-postgres.test.ts (50 tests) 597ms
8
- ✓ src/adapters/kysely/kysely-uow-joins.test.ts (26 tests) 301ms
9
- ✓ src/adapters/kysely/kysely-uow-compiler.test.ts (42 tests) 487ms
10
- ✓ src/schema/create.test.ts (28 tests) 171ms
11
- ✓ src/adapters/kysely/migration/execute-mysql.test.ts (36 tests) 439ms
6
+ ✓ src/adapters/kysely/migration/execute-postgres.test.ts (50 tests) 779ms
7
+ ✓ src/adapters/kysely/kysely-query-builder.test.ts (83 tests) 575ms
8
+ ✓ src/adapters/kysely/kysely-uow-joins.test.ts (26 tests) 422ms
9
+ ✓ src/adapters/kysely/kysely-uow-compiler.test.ts (42 tests) 467ms
10
+ ✓ src/schema/create.test.ts (28 tests) 208ms
11
+ ✓ src/adapters/kysely/migration/execute-mysql.test.ts (36 tests) 331ms
12
12
  ✓ src/query/unit-of-work.test.ts (30 tests) 262ms
13
- ✓ src/adapters/drizzle/generate.test.ts (13 tests) 190ms
14
- ✓ src/query/result-transform.test.ts (47 tests) 122ms
15
- ✓ src/schema/serialize.test.ts (86 tests) 151ms
16
- ✓ src/adapters/drizzle/drizzle-uow-compiler.test.ts (45 tests) 13722ms
17
- ✓ src/adapters/kysely/kysely-adapter-pglite.test.ts (7 tests) 6116ms
18
- ✓ KyselyAdapter PGLite > should run migrations and basic queries  425ms
19
- ✓ src/query/query-type.test.ts (29 tests) 25ms
20
- ✓ src/query/condition-builder.test.ts (20 tests) 15ms
21
- ✓ src/migration-engine/create.test.ts (20 tests) 83ms
22
- ✓ src/migration-engine/auto-from-schema.test.ts (13 tests) 104ms
23
- ✓ src/adapters/drizzle/drizzle-adapter-pglite.test.ts (5 tests) 6048ms
24
- ✓ src/fragment.test.ts (11 tests) 21ms
25
- ✓ src/adapters/drizzle/migrate-drizzle.test.ts (1 test) 450ms
26
- ✓ src/query/cursor.test.ts (18 tests) 21ms
27
- ✓ src/query/unit-of-work-types.test.ts (5 tests) 19ms
28
- ✓ src/adapters/kysely/migration/kysely-migrator.test.ts (9 tests) 154ms
29
- ✓ src/adapters/drizzle/drizzle-adapter.test.ts (4 tests) 42ms
30
- ✓ src/adapters/drizzle/join-column-utils.test.ts (8 tests) 13ms
13
+ ✓ src/adapters/drizzle/generate.test.ts (13 tests) 154ms
14
+ ✓ src/query/result-transform.test.ts (47 tests) 173ms
15
+ ✓ src/schema/serialize.test.ts (86 tests) 206ms
16
+ ✓ src/adapters/drizzle/drizzle-uow-compiler.test.ts (45 tests) 24852ms
17
+ ✓ src/adapters/kysely/kysely-adapter-pglite.test.ts (7 tests) 10686ms
18
+ ✓ KyselyAdapter PGLite > should run migrations and basic queries  623ms
19
+ ✓ KyselyAdapter PGLite > should support many-to-many queries through junction table  343ms
20
+ ✓ src/query/query-type.test.ts (29 tests) 29ms
21
+ ✓ src/query/condition-builder.test.ts (20 tests) 34ms
22
+ ✓ src/migration-engine/create.test.ts (20 tests) 56ms
23
+ ✓ src/migration-engine/auto-from-schema.test.ts (13 tests) 76ms
24
+ ✓ src/adapters/drizzle/drizzle-adapter-pglite.test.ts (5 tests) 8905ms
25
+ ✓ src/adapters/drizzle/migrate-drizzle.test.ts (1 test) 491ms
26
+ ✓ src/fragment.test.ts (11 tests) 57ms
27
+ ✓ src/query/cursor.test.ts (18 tests) 41ms
28
+ ✓ src/query/unit-of-work-types.test.ts (5 tests) 37ms
29
+ ✓ src/adapters/kysely/migration/kysely-migrator.test.ts (9 tests) 142ms
30
+ ✓ src/adapters/drizzle/drizzle-adapter.test.ts (4 tests) 53ms
31
+ ✓ src/adapters/drizzle/join-column-utils.test.ts (8 tests) 23ms
31
32
 
32
33
   Test Files  24 passed (24)
33
34
   Tests  636 passed (636)
34
-  Start at  20:04:34
35
-  Duration  38.12s (transform 17.92s, setup 0ms, collect 44.60s, tests 30.08s, environment 18ms, prepare 11.45s)
35
+  Start at  12:33:42
36
+  Duration  47.25s (transform 20.15s, setup 0ms, collect 51.86s, tests 49.06s, environment 119ms, prepare 11.76s)
36
37
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @fragno-dev/db
2
2
 
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 4c1c806: Support tree shaking Fragno database dependencies from frontend bundle
8
+
3
9
  ## 0.1.0
4
10
 
5
11
  ### Minor Changes
@@ -2,12 +2,12 @@ import { Column } from "../../schema/create.js";
2
2
  import { serialize } from "../../schema/serialize.js";
3
3
  import { decodeCursor, serializeCursorValues } from "../../query/cursor.js";
4
4
  import { buildCondition } from "../../query/condition-builder.js";
5
+ import { ReferenceSubquery, encodeValues } from "../../query/result-transform.js";
5
6
  import { sql } from "../../node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/sql.js";
6
7
  import { and, eq, gt, gte, inArray, isNotNull, isNull, like, lt, lte, ne, not, notInArray, notLike, or } from "../../node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/conditions.js";
7
8
  import { asc, desc } from "../../node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js";
8
9
  import { count } from "../../node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js";
9
10
  import { parseDrizzle } from "./shared.js";
10
- import { ReferenceSubquery, encodeValues } from "../../query/result-transform.js";
11
11
  import { getOrderedJoinColumns } from "./join-column-utils.js";
12
12
 
13
13
  //#region src/adapters/drizzle/drizzle-uow-compiler.ts
@@ -1 +1 @@
1
- {"version":3,"file":"kysely-query.js","names":["executor: UOWExecutor<CompiledQuery, unknown>","decoder: UOWDecoder<T>","whereConfig: { indexName?: string; condition?: unknown }","setValues: unknown"],"sources":["../../../src/adapters/kysely/kysely-query.ts"],"sourcesContent":["import type { AbstractQuery } from \"../../query/query\";\nimport type { AnySchema } from \"../../schema/create\";\nimport type { KyselyConfig } from \"./kysely-adapter\";\nimport type { CompiledMutation, UOWDecoder, UOWExecutor } from \"../../query/unit-of-work\";\nimport { decodeResult } from \"../../query/result-transform\";\nimport { createKyselyUOWCompiler } from \"./kysely-uow-compiler\";\nimport { executeKyselyRetrievalPhase, executeKyselyMutationPhase } from \"./kysely-uow-executor\";\nimport { UnitOfWork } from \"../../query/unit-of-work\";\nimport type { CompiledQuery } from \"kysely\";\n\n/**\n * Creates a Kysely-based query engine for the given schema.\n *\n * This is the main entry point for creating a database query interface using Kysely.\n * It uses a compiler-based architecture where queries are compiled to SQL and then executed,\n * enabling features like SQL snapshot testing.\n *\n * @param schema - The database schema definition\n * @param config - Kysely configuration containing the database instance and provider\n * @returns An AbstractQuery instance for performing database operations\n *\n * @example\n * ```ts\n * const queryEngine = fromKysely(mySchema, {\n * db: kysely,\n * provider: 'postgresql'\n * });\n *\n * const users = await queryEngine.findMany('users', {\n * where: (b) => b('age', '>', 18),\n * orderBy: [['name', 'asc']]\n * });\n * ```\n */\nexport function fromKysely<T extends AnySchema>(schema: T, config: KyselyConfig): AbstractQuery<T> {\n const { db: kysely, provider } = config;\n const uowCompiler = createKyselyUOWCompiler(schema, config);\n\n function createUOW(name?: string): UnitOfWork<T, []> {\n const executor: UOWExecutor<CompiledQuery, unknown> = {\n executeRetrievalPhase: (retrievalBatch: CompiledQuery[]) =>\n executeKyselyRetrievalPhase(kysely, retrievalBatch),\n executeMutationPhase: (mutationBatch: CompiledMutation<CompiledQuery>[]) =>\n executeKyselyMutationPhase(kysely, mutationBatch),\n };\n\n // Create a decoder function to transform raw results into application format\n const decoder: UOWDecoder<T> = (rawResults, ops) => {\n if (rawResults.length !== ops.length) {\n throw new Error(\"rawResults and ops must have the same length\");\n }\n\n return rawResults.map((rows, index) => {\n const op = ops[index];\n if (!op) {\n throw new Error(\"op must be defined\");\n }\n\n // Handle count operations differently - return the count number directly\n if (op.type === \"count\") {\n const rowArray = rows as Record<string, unknown>[];\n const firstRow = rowArray[0];\n if (!firstRow) {\n return 0;\n }\n const count = Number(firstRow[\"count\"]);\n if (Number.isNaN(count)) {\n throw new Error(`Unexpected result for count, received: ${count}`);\n }\n return count;\n }\n\n // Each result is an array of rows - decode each row\n const rowArray = rows as Record<string, unknown>[];\n return rowArray.map((row) => decodeResult(row, op.table, provider));\n });\n };\n\n return new UnitOfWork(schema, uowCompiler, executor, decoder, name);\n }\n\n return {\n async find(tableName, builderFn) {\n const uow = createUOW();\n uow.find(tableName, builderFn);\n // executeRetrieve returns an array of results (one per find operation)\n // Since we only have one find, unwrap the first result\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result ?? [];\n },\n\n async findFirst(tableName, builderFn) {\n const uow = createUOW();\n if (builderFn) {\n uow.find(tableName, (b) => builderFn(b as never).pageSize(1));\n } else {\n uow.find(tableName, (b) => b.whereIndex(\"primary\").pageSize(1));\n }\n // executeRetrieve runs an array of `find` operation results, which each return an array of rows\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result?.[0] ?? null;\n },\n\n async create(tableName, values) {\n const uow = createUOW();\n uow.create(tableName, values);\n const { success } = await uow.executeMutations();\n if (!success) {\n // This should not happen because we don't `.check()` this call.\n // TODO: Verify what happens when there are unique constraints\n throw new Error(\"Failed to create record\");\n }\n\n const [createdId] = uow.getCreatedIds();\n if (!createdId) {\n throw new Error(\"Failed to get created ID\");\n }\n return createdId;\n },\n\n async createMany(tableName, valuesArray) {\n const uow = createUOW();\n for (const values of valuesArray) {\n uow.create(tableName, values);\n }\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create records\");\n }\n\n return uow.getCreatedIds();\n },\n\n async update(tableName, id, builderFn) {\n const uow = createUOW();\n uow.update(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update record (version conflict or record not found)\");\n }\n },\n\n async updateMany(tableName, builderFn) {\n // Create a special builder that captures both where and set operations\n let whereConfig: { indexName?: string; condition?: unknown } = {};\n let setValues: unknown;\n\n const specialBuilder = {\n whereIndex(indexName: string, condition?: unknown) {\n whereConfig = { indexName, condition };\n return this;\n },\n set(values: unknown) {\n setValues = values;\n return this;\n },\n };\n\n builderFn(specialBuilder);\n\n if (!whereConfig.indexName) {\n throw new Error(\"whereIndex() must be called in updateMany\");\n }\n if (!setValues) {\n throw new Error(\"set() must be called in updateMany\");\n }\n\n // First, find all matching records\n const findUow = createUOW();\n findUow.find(tableName, (b) => {\n if (whereConfig.condition) {\n return b.whereIndex(whereConfig.indexName as never, whereConfig.condition as never);\n }\n return b.whereIndex(whereConfig.indexName as never);\n });\n const findResults: unknown[][] = await findUow.executeRetrieve();\n const records = findResults[0];\n\n if (!records || records.length === 0) {\n return;\n }\n\n // Now update all found records\n const updateUow = createUOW();\n for (const record of records as never as Array<{ id: unknown }>) {\n updateUow.update(tableName as string, record.id as string, (b) =>\n b.set(setValues as never),\n );\n }\n const { success } = await updateUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update records (version conflict)\");\n }\n },\n\n async delete(tableName, id, builderFn) {\n const uow = createUOW();\n uow.delete(tableName, id, builderFn as never);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete record (version conflict or record not found)\");\n }\n },\n\n async deleteMany(tableName, builderFn) {\n // Create a special builder that captures where configuration\n let whereConfig: { indexName?: string; condition?: unknown } = {};\n\n const specialBuilder = {\n whereIndex(indexName: string, condition?: unknown) {\n whereConfig = { indexName, condition };\n return this;\n },\n };\n\n // Safe: Call builderFn to capture the configuration\n builderFn(specialBuilder as never);\n\n if (!whereConfig.indexName) {\n throw new Error(\"whereIndex() must be called in deleteMany\");\n }\n\n // First, find all matching records\n const findUow = createUOW();\n findUow.find(tableName as string, (b) => {\n if (whereConfig.condition) {\n return b.whereIndex(whereConfig.indexName as never, whereConfig.condition as never);\n }\n return b.whereIndex(whereConfig.indexName as never);\n });\n const findResults2 = await findUow.executeRetrieve();\n const records = (findResults2 as unknown as [unknown])[0];\n\n // @ts-expect-error - Type narrowing doesn't work through unknown cast\n if (!records || records.length === 0) {\n return;\n }\n\n // Now delete all found records\n const deleteUow = createUOW();\n for (const record of records as never as Array<{ id: unknown }>) {\n deleteUow.delete(tableName as string, record.id as string);\n }\n const { success } = await deleteUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete records (version conflict)\");\n }\n },\n\n createUnitOfWork(name) {\n return createUOW(name);\n },\n } as AbstractQuery<T>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"kysely-query.js","names":["executor: UOWExecutor<CompiledQuery, unknown>","decoder: UOWDecoder<T>","whereConfig: { indexName?: string; condition?: unknown }","setValues: unknown"],"sources":["../../../src/adapters/kysely/kysely-query.ts"],"sourcesContent":["import type { AbstractQuery } from \"../../query/query\";\nimport type { AnySchema } from \"../../schema/create\";\nimport type { KyselyConfig } from \"./kysely-adapter\";\nimport type { CompiledMutation, UOWDecoder, UOWExecutor } from \"../../query/unit-of-work\";\nimport { decodeResult } from \"../../query/result-transform\";\nimport { createKyselyUOWCompiler } from \"./kysely-uow-compiler\";\nimport { executeKyselyRetrievalPhase, executeKyselyMutationPhase } from \"./kysely-uow-executor\";\nimport { UnitOfWork } from \"../../query/unit-of-work\";\nimport type { CompiledQuery } from \"kysely\";\n\n/**\n * Creates a Kysely-based query engine for the given schema.\n *\n * This is the main entry point for creating a database query interface using Kysely.\n * It uses a compiler-based architecture where queries are compiled to SQL and then executed,\n * enabling features like SQL snapshot testing.\n *\n * @param schema - The database schema definition\n * @param config - Kysely configuration containing the database instance and provider\n * @returns An AbstractQuery instance for performing database operations\n *\n * @example\n * ```ts\n * const queryEngine = fromKysely(mySchema, {\n * db: kysely,\n * provider: 'postgresql'\n * });\n *\n * const users = await queryEngine.findMany('users', {\n * where: (b) => b('age', '>', 18),\n * orderBy: [['name', 'asc']]\n * });\n * ```\n */\nexport function fromKysely<T extends AnySchema>(schema: T, config: KyselyConfig): AbstractQuery<T> {\n const { db: kysely, provider } = config;\n const uowCompiler = createKyselyUOWCompiler(schema, config);\n\n function createUOW(name?: string): UnitOfWork<T, []> {\n const executor: UOWExecutor<CompiledQuery, unknown> = {\n executeRetrievalPhase: (retrievalBatch: CompiledQuery[]) =>\n executeKyselyRetrievalPhase(kysely, retrievalBatch),\n executeMutationPhase: (mutationBatch: CompiledMutation<CompiledQuery>[]) =>\n executeKyselyMutationPhase(kysely, mutationBatch),\n };\n\n // Create a decoder function to transform raw results into application format\n const decoder: UOWDecoder<T> = (rawResults, ops) => {\n if (rawResults.length !== ops.length) {\n throw new Error(\"rawResults and ops must have the same length\");\n }\n\n return rawResults.map((rows, index) => {\n const op = ops[index];\n if (!op) {\n throw new Error(\"op must be defined\");\n }\n\n // Handle count operations differently - return the count number directly\n if (op.type === \"count\") {\n const rowArray = rows as Record<string, unknown>[];\n const firstRow = rowArray[0];\n if (!firstRow) {\n return 0;\n }\n const count = Number(firstRow[\"count\"]);\n if (Number.isNaN(count)) {\n throw new Error(`Unexpected result for count, received: ${count}`);\n }\n return count;\n }\n\n // Each result is an array of rows - decode each row\n const rowArray = rows as Record<string, unknown>[];\n return rowArray.map((row) => decodeResult(row, op.table, provider));\n });\n };\n\n return new UnitOfWork(schema, uowCompiler, executor, decoder, name);\n }\n\n return {\n async find(tableName, builderFn) {\n const uow = createUOW();\n uow.find(tableName, builderFn);\n // executeRetrieve returns an array of results (one per find operation)\n // Since we only have one find, unwrap the first result\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result ?? [];\n },\n\n async findFirst(tableName, builderFn) {\n const uow = createUOW();\n if (builderFn) {\n uow.find(tableName, (b) => builderFn(b as never).pageSize(1));\n } else {\n uow.find(tableName, (b) => b.whereIndex(\"primary\").pageSize(1));\n }\n // executeRetrieve runs an array of `find` operation results, which each return an array of rows\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result?.[0] ?? null;\n },\n\n async create(tableName, values) {\n const uow = createUOW();\n uow.create(tableName, values);\n const { success } = await uow.executeMutations();\n if (!success) {\n // This should not happen because we don't `.check()` this call.\n // TODO: Verify what happens when there are unique constraints\n throw new Error(\"Failed to create record\");\n }\n\n const [createdId] = uow.getCreatedIds();\n if (!createdId) {\n throw new Error(\"Failed to get created ID\");\n }\n return createdId;\n },\n\n async createMany(tableName, valuesArray) {\n const uow = createUOW();\n for (const values of valuesArray) {\n uow.create(tableName, values);\n }\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create records\");\n }\n\n return uow.getCreatedIds();\n },\n\n async update(tableName, id, builderFn) {\n const uow = createUOW();\n uow.update(tableName, id, builderFn as never);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update record (version conflict or record not found)\");\n }\n },\n\n async updateMany(tableName, builderFn) {\n // Create a special builder that captures both where and set operations\n let whereConfig: { indexName?: string; condition?: unknown } = {};\n let setValues: unknown;\n\n const specialBuilder = {\n whereIndex(indexName: string, condition?: unknown) {\n whereConfig = { indexName, condition };\n return this;\n },\n set(values: unknown) {\n setValues = values;\n return this;\n },\n };\n\n builderFn(specialBuilder);\n\n if (!whereConfig.indexName) {\n throw new Error(\"whereIndex() must be called in updateMany\");\n }\n if (!setValues) {\n throw new Error(\"set() must be called in updateMany\");\n }\n\n // First, find all matching records\n const findUow = createUOW();\n findUow.find(tableName, (b) => {\n if (whereConfig.condition) {\n return b.whereIndex(whereConfig.indexName as never, whereConfig.condition as never);\n }\n return b.whereIndex(whereConfig.indexName as never);\n });\n const findResults: unknown[][] = await findUow.executeRetrieve();\n const records = findResults[0];\n\n if (!records || records.length === 0) {\n return;\n }\n\n // Now update all found records\n const updateUow = createUOW();\n for (const record of records as never as Array<{ id: unknown }>) {\n updateUow.update(tableName as string, record.id as string, (b) =>\n b.set(setValues as never),\n );\n }\n const { success } = await updateUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update records (version conflict)\");\n }\n },\n\n async delete(tableName, id, builderFn) {\n const uow = createUOW();\n uow.delete(tableName, id, builderFn as never);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete record (version conflict or record not found)\");\n }\n },\n\n async deleteMany(tableName, builderFn) {\n // Create a special builder that captures where configuration\n let whereConfig: { indexName?: string; condition?: unknown } = {};\n\n const specialBuilder = {\n whereIndex(indexName: string, condition?: unknown) {\n whereConfig = { indexName, condition };\n return this;\n },\n };\n\n // Safe: Call builderFn to capture the configuration\n builderFn(specialBuilder as never);\n\n if (!whereConfig.indexName) {\n throw new Error(\"whereIndex() must be called in deleteMany\");\n }\n\n // First, find all matching records\n const findUow = createUOW();\n findUow.find(tableName as string, (b) => {\n if (whereConfig.condition) {\n return b.whereIndex(whereConfig.indexName as never, whereConfig.condition as never);\n }\n return b.whereIndex(whereConfig.indexName as never);\n });\n const findResults2 = await findUow.executeRetrieve();\n const records = (findResults2 as unknown as [unknown])[0];\n\n // @ts-expect-error - Type narrowing doesn't work through unknown cast\n if (!records || records.length === 0) {\n return;\n }\n\n // Now delete all found records\n const deleteUow = createUOW();\n for (const record of records as never as Array<{ id: unknown }>) {\n deleteUow.delete(tableName as string, record.id as string);\n }\n const { success } = await deleteUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete records (version conflict)\");\n }\n },\n\n createUnitOfWork(name) {\n return createUOW(name);\n },\n } as AbstractQuery<T>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,SAAgB,WAAgC,QAAW,QAAwC;CACjG,MAAM,EAAE,IAAI,QAAQ,aAAa;CACjC,MAAM,cAAc,wBAAwB,QAAQ,OAAO;CAE3D,SAAS,UAAU,MAAkC;EACnD,MAAMA,WAAgD;GACpD,wBAAwB,mBACtB,4BAA4B,QAAQ,eAAe;GACrD,uBAAuB,kBACrB,2BAA2B,QAAQ,cAAc;GACpD;EAGD,MAAMC,WAA0B,YAAY,QAAQ;AAClD,OAAI,WAAW,WAAW,IAAI,OAC5B,OAAM,IAAI,MAAM,+CAA+C;AAGjE,UAAO,WAAW,KAAK,MAAM,UAAU;IACrC,MAAM,KAAK,IAAI;AACf,QAAI,CAAC,GACH,OAAM,IAAI,MAAM,qBAAqB;AAIvC,QAAI,GAAG,SAAS,SAAS;KAEvB,MAAM,WADW,KACS;AAC1B,SAAI,CAAC,SACH,QAAO;KAET,MAAM,QAAQ,OAAO,SAAS,SAAS;AACvC,SAAI,OAAO,MAAM,MAAM,CACrB,OAAM,IAAI,MAAM,0CAA0C,QAAQ;AAEpE,YAAO;;AAKT,WADiB,KACD,KAAK,QAAQ,aAAa,KAAK,GAAG,OAAO,SAAS,CAAC;KACnE;;AAGJ,SAAO,IAAI,WAAW,QAAQ,aAAa,UAAU,SAAS,KAAK;;AAGrE,QAAO;EACL,MAAM,KAAK,WAAW,WAAW;GAC/B,MAAM,MAAM,WAAW;AACvB,OAAI,KAAK,WAAW,UAAU;GAG9B,MAAM,CAAC,UAAuB,MAAM,IAAI,iBAAiB;AACzD,UAAO,UAAU,EAAE;;EAGrB,MAAM,UAAU,WAAW,WAAW;GACpC,MAAM,MAAM,WAAW;AACvB,OAAI,UACF,KAAI,KAAK,YAAY,MAAM,UAAU,EAAW,CAAC,SAAS,EAAE,CAAC;OAE7D,KAAI,KAAK,YAAY,MAAM,EAAE,WAAW,UAAU,CAAC,SAAS,EAAE,CAAC;GAGjE,MAAM,CAAC,UAAuB,MAAM,IAAI,iBAAiB;AACzD,UAAO,SAAS,MAAM;;EAGxB,MAAM,OAAO,WAAW,QAAQ;GAC9B,MAAM,MAAM,WAAW;AACvB,OAAI,OAAO,WAAW,OAAO;GAC7B,MAAM,EAAE,YAAY,MAAM,IAAI,kBAAkB;AAChD,OAAI,CAAC,QAGH,OAAM,IAAI,MAAM,0BAA0B;GAG5C,MAAM,CAAC,aAAa,IAAI,eAAe;AACvC,OAAI,CAAC,UACH,OAAM,IAAI,MAAM,2BAA2B;AAE7C,UAAO;;EAGT,MAAM,WAAW,WAAW,aAAa;GACvC,MAAM,MAAM,WAAW;AACvB,QAAK,MAAM,UAAU,YACnB,KAAI,OAAO,WAAW,OAAO;GAE/B,MAAM,EAAE,YAAY,MAAM,IAAI,kBAAkB;AAChD,OAAI,CAAC,QACH,OAAM,IAAI,MAAM,2BAA2B;AAG7C,UAAO,IAAI,eAAe;;EAG5B,MAAM,OAAO,WAAW,IAAI,WAAW;GACrC,MAAM,MAAM,WAAW;AACvB,OAAI,OAAO,WAAW,IAAI,UAAmB;GAC7C,MAAM,EAAE,YAAY,MAAM,IAAI,kBAAkB;AAChD,OAAI,CAAC,QACH,OAAM,IAAI,MAAM,iEAAiE;;EAIrF,MAAM,WAAW,WAAW,WAAW;GAErC,IAAIC,cAA2D,EAAE;GACjE,IAAIC;AAaJ,aAXuB;IACrB,WAAW,WAAmB,WAAqB;AACjD,mBAAc;MAAE;MAAW;MAAW;AACtC,YAAO;;IAET,IAAI,QAAiB;AACnB,iBAAY;AACZ,YAAO;;IAEV,CAEwB;AAEzB,OAAI,CAAC,YAAY,UACf,OAAM,IAAI,MAAM,4CAA4C;AAE9D,OAAI,CAAC,UACH,OAAM,IAAI,MAAM,qCAAqC;GAIvD,MAAM,UAAU,WAAW;AAC3B,WAAQ,KAAK,YAAY,MAAM;AAC7B,QAAI,YAAY,UACd,QAAO,EAAE,WAAW,YAAY,WAAoB,YAAY,UAAmB;AAErF,WAAO,EAAE,WAAW,YAAY,UAAmB;KACnD;GAEF,MAAM,WAD2B,MAAM,QAAQ,iBAAiB,EACpC;AAE5B,OAAI,CAAC,WAAW,QAAQ,WAAW,EACjC;GAIF,MAAM,YAAY,WAAW;AAC7B,QAAK,MAAM,UAAU,QACnB,WAAU,OAAO,WAAqB,OAAO,KAAe,MAC1D,EAAE,IAAI,UAAmB,CAC1B;GAEH,MAAM,EAAE,YAAY,MAAM,UAAU,kBAAkB;AACtD,OAAI,CAAC,QACH,OAAM,IAAI,MAAM,8CAA8C;;EAIlE,MAAM,OAAO,WAAW,IAAI,WAAW;GACrC,MAAM,MAAM,WAAW;AACvB,OAAI,OAAO,WAAW,IAAI,UAAmB;GAC7C,MAAM,EAAE,YAAY,MAAM,IAAI,kBAAkB;AAChD,OAAI,CAAC,QACH,OAAM,IAAI,MAAM,iEAAiE;;EAIrF,MAAM,WAAW,WAAW,WAAW;GAErC,IAAID,cAA2D,EAAE;AAUjE,aARuB,EACrB,WAAW,WAAmB,WAAqB;AACjD,kBAAc;KAAE;KAAW;KAAW;AACtC,WAAO;MAEV,CAGiC;AAElC,OAAI,CAAC,YAAY,UACf,OAAM,IAAI,MAAM,4CAA4C;GAI9D,MAAM,UAAU,WAAW;AAC3B,WAAQ,KAAK,YAAsB,MAAM;AACvC,QAAI,YAAY,UACd,QAAO,EAAE,WAAW,YAAY,WAAoB,YAAY,UAAmB;AAErF,WAAO,EAAE,WAAW,YAAY,UAAmB;KACnD;GAEF,MAAM,WADe,MAAM,QAAQ,iBAAiB,EACG;AAGvD,OAAI,CAAC,WAAW,QAAQ,WAAW,EACjC;GAIF,MAAM,YAAY,WAAW;AAC7B,QAAK,MAAM,UAAU,QACnB,WAAU,OAAO,WAAqB,OAAO,GAAa;GAE5D,MAAM,EAAE,YAAY,MAAM,UAAU,kBAAkB;AACtD,OAAI,CAAC,QACH,OAAM,IAAI,MAAM,8CAA8C;;EAIlE,iBAAiB,MAAM;AACrB,UAAO,UAAU,KAAK;;EAEzB"}
@@ -55,7 +55,7 @@ interface AbstractQuery<TSchema extends AnySchema, TUOWConfig = void> {
55
55
  * Update a single record by ID
56
56
  * Note: you cannot update the id of a row, some databases don't support that (including MongoDB).
57
57
  */
58
- update: <TableName extends keyof TSchema["tables"] & string>(table: TableName, id: FragnoId | string, builderFn: (builder: Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build" | "check">) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build">) => Promise<void>;
58
+ update: <TableName extends keyof TSchema["tables"] & string>(table: TableName, id: FragnoId | string, builderFn: (builder: Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build" | "check">) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build" | "check">) => Promise<void>;
59
59
  /**
60
60
  * Update multiple records matching a where clause
61
61
  * Note: you cannot update the id of a row, some databases don't support that (including MongoDB).
@@ -64,7 +64,7 @@ interface AbstractQuery<TSchema extends AnySchema, TUOWConfig = void> {
64
64
  /**
65
65
  * Delete a single record by ID
66
66
  */
67
- delete: <TableName extends keyof TSchema["tables"] & string>(table: TableName, id: FragnoId | string, builderFn?: (builder: Omit<DeleteBuilder, "build">) => Omit<DeleteBuilder, "build" | "check">) => Promise<void>;
67
+ delete: <TableName extends keyof TSchema["tables"] & string>(table: TableName, id: FragnoId | string, builderFn?: (builder: Omit<DeleteBuilder, "build" | "check">) => Omit<DeleteBuilder, "build" | "check">) => Promise<void>;
68
68
  /**
69
69
  * Delete multiple records matching a where clause
70
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","names":[],"sources":["../../src/query/query.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","names":[],"sources":["../../src/query/query.ts"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fragno-dev/db",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -67,19 +67,17 @@
67
67
  },
68
68
  "devDependencies": {
69
69
  "@electric-sql/pglite": "^0.3.10",
70
+ "@fragno-dev/core": "0.1.1",
70
71
  "@fragno-private/typescript-config": "0.0.1",
71
72
  "@fragno-private/vitest-config": "0.0.0",
72
- "@fragno-dev/core": "0.0.7",
73
73
  "@types/bun": "^1.2.23",
74
74
  "@types/node": "^22",
75
75
  "@vitest/coverage-istanbul": "^3.2.4",
76
76
  "drizzle-kit": "^0.31.5",
77
77
  "drizzle-orm": "^0.44.6",
78
78
  "kysely-pglite": "^0.6.1",
79
- "vitest": "^3.2.4"
80
- },
81
- "peerDependencies": {
82
- "@fragno-dev/core": "0.0.7"
79
+ "vitest": "^3.2.4",
80
+ "zod": "^4.1.12"
83
81
  },
84
82
  "repository": {
85
83
  "type": "git",
@@ -787,7 +787,7 @@ describe("drizzle-uow-compiler", () => {
787
787
  return async () => {
788
788
  await cleanup();
789
789
  };
790
- });
790
+ }, 12000);
791
791
 
792
792
  it("should generate runtime defaults for missing columns", () => {
793
793
  const uow = createTestUOWWithSchema(defaultsSchema);
@@ -133,7 +133,7 @@ export function fromKysely<T extends AnySchema>(schema: T, config: KyselyConfig)
133
133
 
134
134
  async update(tableName, id, builderFn) {
135
135
  const uow = createUOW();
136
- uow.update(tableName, id, builderFn);
136
+ uow.update(tableName, id, builderFn as never);
137
137
  const { success } = await uow.executeMutations();
138
138
  if (!success) {
139
139
  throw new Error("Failed to update record (version conflict or record not found)");
@@ -1,9 +1,11 @@
1
1
  import { test, expect, describe, expectTypeOf } from "vitest";
2
2
  import { defineFragmentWithDatabase, type FragnoPublicConfigWithDatabase } from "./fragment";
3
- import { createFragment } from "@fragno-dev/core";
3
+ import { createFragment, defineRoute, type FragnoPublicClientConfig } from "@fragno-dev/core";
4
+ import { createClientBuilder } from "@fragno-dev/core/client";
4
5
  import { schema, idColumn, column } from "./schema/create";
5
6
  import type { AbstractQuery } from "./query/query";
6
7
  import type { DatabaseAdapter } from "./mod";
8
+ import { z } from "zod";
7
9
 
8
10
  type Empty = Record<never, never>;
9
11
 
@@ -284,4 +286,48 @@ describe("DatabaseFragmentBuilder", () => {
284
286
  expect(servicesOrm).toBeDefined();
285
287
  });
286
288
  });
289
+
290
+ describe("Client builder integration", () => {
291
+ test("createClientBuilder works with database fragment", () => {
292
+ const testSchema = schema((s) =>
293
+ s.addTable("users", (t) =>
294
+ t.addColumn("id", idColumn()).addColumn("name", column("string")),
295
+ ),
296
+ );
297
+
298
+ const fragmentDef = defineFragmentWithDatabase("test-db")
299
+ .withDatabase(testSchema)
300
+ .withServices(({ orm }) => ({
301
+ getUserById: (id: string) =>
302
+ orm.findFirst("users", (b) => b.whereIndex("primary", (eb) => eb("id", "=", id))),
303
+ }));
304
+
305
+ const routes = [
306
+ defineRoute({
307
+ method: "GET",
308
+ path: "/users",
309
+ outputSchema: z.array(
310
+ z.object({
311
+ id: z.string(),
312
+ name: z.string(),
313
+ }),
314
+ ),
315
+ handler: async (_ctx, { json }) => json([]),
316
+ }),
317
+ ] as const;
318
+
319
+ const clientConfig: FragnoPublicClientConfig = {
320
+ baseUrl: "http://localhost:3000",
321
+ };
322
+
323
+ const builder = createClientBuilder(fragmentDef, clientConfig, routes);
324
+
325
+ expect(builder).toBeDefined();
326
+ expectTypeOf(builder.createHook).toBeFunction();
327
+
328
+ const useUsers = builder.createHook("/users");
329
+ expect(useUsers).toHaveProperty("route");
330
+ expect(useUsers.route.path).toBe("/users");
331
+ });
332
+ });
287
333
  });
@@ -162,7 +162,7 @@ export interface AbstractQuery<TSchema extends AnySchema, TUOWConfig = void> {
162
162
  id: FragnoId | string,
163
163
  builderFn: (
164
164
  builder: Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build" | "check">,
165
- ) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build">,
165
+ ) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build" | "check">,
166
166
  ) => Promise<void>;
167
167
 
168
168
  /**
@@ -180,7 +180,9 @@ export interface AbstractQuery<TSchema extends AnySchema, TUOWConfig = void> {
180
180
  delete: <TableName extends keyof TSchema["tables"] & string>(
181
181
  table: TableName,
182
182
  id: FragnoId | string,
183
- builderFn?: (builder: Omit<DeleteBuilder, "build">) => Omit<DeleteBuilder, "build" | "check">,
183
+ builderFn?: (
184
+ builder: Omit<DeleteBuilder, "build" | "check">,
185
+ ) => Omit<DeleteBuilder, "build" | "check">,
184
186
  ) => Promise<void>;
185
187
 
186
188
  /**