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(); }}
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();
}
}