mirror of
https://gitee.com/zhangsken/opencode.git
synced 2026-10-16 10:30:01 +08:00
26 lines
907 B
TypeScript
26 lines
907 B
TypeScript
import { Database } from "@opencode/core/database/database"
|
|
import { Project } from "@opencode/core/project"
|
|
import { upsertProject } from "@opencode/core/project/sql"
|
|
import { makeGlobalNode } from "@opencode/util/effect/app-node"
|
|
import { Effect, Layer } from "effect"
|
|
|
|
export const globalProjectNode = makeGlobalNode({
|
|
service: Project.Service,
|
|
layer: Layer.effect(
|
|
Project.Service,
|
|
Effect.gen(function* () {
|
|
const database = yield* Database.Service
|
|
return Project.Service.of({
|
|
list: () => Effect.succeed([]),
|
|
update: () => Effect.die("not implemented"),
|
|
activate: () => Effect.void,
|
|
resolve: (directory) => {
|
|
const project = { id: Project.ID.global, directory, canonical: directory }
|
|
return upsertProject(database.db, project).pipe(Effect.orDie, Effect.as(project))
|
|
},
|
|
})
|
|
}),
|
|
),
|
|
deps: [Database.node],
|
|
})
|