47 lines · 1.2 KB · TypeScript
RawDownload
import path from "node:path"; import type {  ProjectAddInput,  ProjectAddResult,  ProjectListResult,  ProjectRemoveInput,  ProjectUpdateScriptsInput,  ProjectUpdateScriptsResult,} from "@t3tools/contracts"; import { PersistenceService } from "./persistenceService"; /** * Backward-compatible wrapper retained for tests and legacy callsites. * Core storage now lives in SQLite through PersistenceService. */export class ProjectRegistry {  private readonly persistenceService: PersistenceService;   constructor(stateDir: string) {    this.persistenceService = new PersistenceService({      dbPath: path.join(stateDir, "state.sqlite"),      legacyProjectsJsonPath: path.join(stateDir, "projects.json"),    });  }   list(): ProjectListResult {    return this.persistenceService.listProjects();  }   add(raw: ProjectAddInput): ProjectAddResult {    return this.persistenceService.addProject(raw);  }   remove(raw: ProjectRemoveInput): void {    this.persistenceService.removeProject(raw);  }   updateScripts(raw: ProjectUpdateScriptsInput): ProjectUpdateScriptsResult {    return this.persistenceService.updateProjectScripts(raw);  }   close(): void {    this.persistenceService.close();  }}