Skip to content

Commit 8d87194

Browse files
Update sql-drizzle (#4840)
Co-authored-by: Tim <[email protected]>
1 parent 504de99 commit 8d87194

File tree

5 files changed

+1622
-1261
lines changed

5 files changed

+1622
-1261
lines changed

.changeset/ten-dots-sort.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@effect/sql-drizzle": minor
3+
---
4+
5+
Widen sql-drizzle to latest

packages/sql-drizzle/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@
5757
"@effect/sql-mysql2": "workspace:^",
5858
"@effect/sql-pg": "workspace:^",
5959
"@effect/sql-sqlite-node": "workspace:^",
60-
"@testcontainers/mysql": "^10.18.0",
61-
"@testcontainers/postgresql": "^10.18.0",
62-
"drizzle-orm": "^0.42.0",
60+
"@testcontainers/mysql": "^10.25.0",
61+
"@testcontainers/postgresql": "^10.25.0",
62+
"drizzle-orm": "^0.43.1",
6363
"effect": "workspace:^"
6464
},
6565
"peerDependencies": {
6666
"@effect/sql": "workspace:^",
67-
"drizzle-orm": "^0.42",
67+
"drizzle-orm": ">=0.43.1 <0.50",
6868
"effect": "workspace:^"
6969
}
7070
}

packages/sql-drizzle/src/internal/patch.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,14 @@ export const makeRemoteCallback = Effect.gen(function*() {
6868
const runPromise = Runtime.runPromise(runtime)
6969
return (sql: string, params: Array<any>, method: "all" | "execute" | "get" | "values" | "run") => {
7070
const statement = client.unsafe(sql, params)
71+
if (method === "execute") {
72+
return runPromise(Effect.map(statement.raw, (header) => ({ rows: [header] })))
73+
}
7174
let effect: Effect.Effect<any, SqlError> = method === "all" || method === "values"
7275
? statement.values
7376
: statement.withoutTransform
7477
if (method === "get") {
7578
effect = Effect.map(effect, (rows) => rows[0] ?? [])
76-
} else if (method === "execute") {
77-
effect = Effect.map(effect, (rows) => rows.length ? rows : [{}])
7879
}
7980
return runPromise(Effect.map(effect, (rows) => ({ rows })))
8081
}

packages/sql-drizzle/test/Mysql.test.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,34 @@ describe.sequential("Mysql", () => {
3131
const sql = yield* SqlClient.SqlClient
3232
const db = yield* MysqlDrizzle
3333
yield* sql`CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, snake_case TEXT NOT NULL)`
34-
yield* Effect.promise(() => db.insert(users).values({ name: "Alice", snakeCase: "snake" }))
34+
const rows = yield* Effect.promise(() =>
35+
db.insert(users).values({ name: "Alice", snakeCase: "snake" }).$returningId()
36+
)
3537
const results = yield* Effect.promise(() => db.select().from(users))
3638
assert.deepStrictEqual(results, [{ id: 1, name: "Alice", snakeCase: "snake" }])
39+
assert.deepStrictEqual(rows, [{ id: 1 }])
40+
}).pipe(
41+
Effect.provide(DrizzleMysqlLive),
42+
Effect.catchTag("ContainerError", () => Effect.void)
43+
), { timeout: 60000 })
44+
45+
it.effect("remote callback multiple values", () =>
46+
Effect.gen(function*(_) {
47+
const sql = yield* SqlClient.SqlClient
48+
const db = yield* MysqlDrizzle
49+
yield* sql`CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL, snake_case TEXT NOT NULL)`
50+
const rows = yield* Effect.promise(() =>
51+
db.insert(users).values([
52+
{ name: "Alice", snakeCase: "snake" },
53+
{ name: "Bob", snakeCase: "snake" }
54+
]).$returningId()
55+
)
56+
const results = yield* Effect.promise(() => db.select().from(users))
57+
assert.deepStrictEqual(results, [
58+
{ id: 1, name: "Alice", snakeCase: "snake" },
59+
{ id: 2, name: "Bob", snakeCase: "snake" }
60+
])
61+
assert.deepStrictEqual(rows, [{ id: 1 }, { id: 2 }])
3762
}).pipe(
3863
Effect.provide(DrizzleMysqlLive),
3964
Effect.catchTag("ContainerError", () => Effect.void)

0 commit comments

Comments
 (0)