fix(core): exclude deleted projects from listing
This commit is contained in:
parent
dc3c996892
commit
792c85da4d
2 changed files with 23 additions and 8 deletions
|
|
@ -148,7 +148,7 @@ const layer = Layer.effect(
|
|||
.orderBy(desc(ProjectTable.time_updated), asc(ProjectTable.id))
|
||||
.all()
|
||||
.pipe(Effect.orDie)
|
||||
return rows.map(fromRow)
|
||||
return yield* Effect.filter(rows.map(fromRow), (project) => fs.existsSafe(project.canonical))
|
||||
})
|
||||
|
||||
const directories = Effect.fn("Project.directories")(function* (input: DirectoriesInput) {
|
||||
|
|
|
|||
|
|
@ -15,8 +15,16 @@ import { testEffect } from "./lib/effect"
|
|||
const it = testEffect(Layer.merge(AppNodeBuilder.build(Project.node), AppNodeBuilder.build(Database.node)))
|
||||
|
||||
describe("Project.list", () => {
|
||||
it.effect("returns complete projects ordered by recent update", () =>
|
||||
it.live("returns existing projects ordered by recent update", () =>
|
||||
Effect.gen(function* () {
|
||||
const tmp = yield* Effect.acquireRelease(
|
||||
Effect.promise(() => tmpdir()),
|
||||
(tmp) => Effect.promise(() => tmp[Symbol.asyncDispose]()),
|
||||
)
|
||||
const older = abs(path.join(tmp.path, "older"))
|
||||
const newer = abs(path.join(tmp.path, "newer"))
|
||||
const deleted = abs(path.join(tmp.path, "deleted"))
|
||||
yield* Effect.promise(() => Promise.all([fs.mkdir(older), fs.mkdir(newer)]))
|
||||
const db = (yield* Database.Service).db
|
||||
const project = yield* Project.Service
|
||||
yield* db
|
||||
|
|
@ -24,42 +32,49 @@ describe("Project.list", () => {
|
|||
.values([
|
||||
{
|
||||
id: Project.ID.make("older"),
|
||||
worktree: abs("/older"),
|
||||
worktree: older,
|
||||
vcs: "git",
|
||||
name: "Older",
|
||||
icon_color: "#000000",
|
||||
commands: { start: "bun dev" },
|
||||
sandboxes: [abs("/older/sandbox")],
|
||||
sandboxes: [abs(path.join(older, "sandbox"))],
|
||||
time_created: 1,
|
||||
time_updated: 1,
|
||||
},
|
||||
{
|
||||
id: Project.ID.make("newer"),
|
||||
worktree: abs("/newer"),
|
||||
worktree: newer,
|
||||
sandboxes: [],
|
||||
time_created: 2,
|
||||
time_updated: 2,
|
||||
time_initialized: 3,
|
||||
},
|
||||
{
|
||||
id: Project.ID.make("deleted"),
|
||||
worktree: deleted,
|
||||
sandboxes: [],
|
||||
time_created: 3,
|
||||
time_updated: 3,
|
||||
},
|
||||
])
|
||||
.run()
|
||||
|
||||
expect(yield* project.list()).toEqual([
|
||||
{
|
||||
id: Project.ID.make("newer"),
|
||||
canonical: abs("/newer"),
|
||||
canonical: newer,
|
||||
time: { created: 2, updated: 2, initialized: 3 },
|
||||
sandboxes: [],
|
||||
},
|
||||
{
|
||||
id: Project.ID.make("older"),
|
||||
canonical: abs("/older"),
|
||||
canonical: older,
|
||||
vcs: "git",
|
||||
name: "Older",
|
||||
icon: { color: "#000000" },
|
||||
commands: { start: "bun dev" },
|
||||
time: { created: 1, updated: 1 },
|
||||
sandboxes: [abs("/older/sandbox")],
|
||||
sandboxes: [abs(path.join(older, "sandbox"))],
|
||||
},
|
||||
])
|
||||
}),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue