refactor(effect-drizzle-sqlite): simplify single-row reads
This commit is contained in:
@@ -6,6 +6,7 @@ import { ProjectID } from "@/project/schema"
|
||||
import { MessageID, SessionID } from "@/session/schema"
|
||||
import { PermissionTable } from "@/session/session.sql"
|
||||
import { DatabaseEffect } from "@/storage/db-effect"
|
||||
import { getOne } from "@opencode-ai/effect-drizzle-sqlite"
|
||||
import { eq } from "drizzle-orm"
|
||||
import { zod } from "@/util/effect-zod"
|
||||
import * as Log from "@opencode-ai/core/util/log"
|
||||
@@ -156,14 +157,15 @@ export const layer = Layer.effect(
|
||||
const db = yield* DatabaseEffect.Service
|
||||
const state = yield* InstanceState.make<State>(
|
||||
Effect.fn("Permission.state")(function* (ctx) {
|
||||
const rows = yield* db
|
||||
.select()
|
||||
.from(PermissionTable)
|
||||
.where(eq(PermissionTable.project_id, ctx.project.id))
|
||||
.pipe(Effect.orDie)
|
||||
const row = yield* getOne(
|
||||
db
|
||||
.select()
|
||||
.from(PermissionTable)
|
||||
.where(eq(PermissionTable.project_id, ctx.project.id)),
|
||||
).pipe(Effect.orDie)
|
||||
const state = {
|
||||
pending: new Map<PermissionID, PendingEntry>(),
|
||||
approved: rows[0]?.data ?? [],
|
||||
approved: row?.data ?? [],
|
||||
}
|
||||
|
||||
yield* Effect.addFinalizer(() =>
|
||||
|
||||
@@ -10,6 +10,7 @@ import { Session } from "@/session/session"
|
||||
import { MessageV2 } from "@/session/message-v2"
|
||||
import type { SessionID } from "@/session/schema"
|
||||
import { DatabaseEffect } from "@/storage/db-effect"
|
||||
import { getOne } from "@opencode-ai/effect-drizzle-sqlite"
|
||||
import { eq } from "drizzle-orm"
|
||||
import { Config } from "@/config/config"
|
||||
import * as Log from "@opencode-ai/core/util/log"
|
||||
@@ -224,12 +225,9 @@ export const layer = Layer.effect(
|
||||
})
|
||||
|
||||
const get = Effect.fnUntraced(function* (sessionID: SessionID) {
|
||||
const rows = yield* db
|
||||
.select()
|
||||
.from(SessionShareTable)
|
||||
.where(eq(SessionShareTable.session_id, sessionID))
|
||||
.pipe(Effect.orDie)
|
||||
const row = rows[0]
|
||||
const row = yield* getOne(
|
||||
db.select().from(SessionShareTable).where(eq(SessionShareTable.session_id, sessionID)),
|
||||
).pipe(Effect.orDie)
|
||||
if (!row) return
|
||||
return { id: row.id, secret: row.secret, url: row.url } satisfies Share
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user