UNPKG

@hpbyte/h-codex-core

Version:

Core indexing and search functionality for h-codex

57 lines 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.projectsRepository = exports.ProjectsRepository = void 0; const drizzle_orm_1 = require("drizzle-orm"); const connection_1 = require("../storage/connection"); const schemas_1 = require("../storage/schemas"); const utils_1 = require("../utils"); class ProjectsRepository { async create(path) { const projectData = { name: (0, utils_1.formatString)(path.split('/').pop() || 'untitled-project'), path, description: 'Project description', // TODO: summarize project description }; await connection_1.db.insert(schemas_1.projects).values(projectData).onConflictDoNothing({ target: schemas_1.projects.path, }); const [project] = await connection_1.db .select() .from(schemas_1.projects) .where((0, drizzle_orm_1.eq)(schemas_1.projects.name, projectData.name)) .limit(1); if (!project) { throw new Error('Failed to create project'); } return project; } async list() { return connection_1.db.select().from(schemas_1.projects).orderBy(schemas_1.projects.createdAt); } async get(name) { const [project] = await connection_1.db .select() .from(schemas_1.projects) .where((0, drizzle_orm_1.eq)(schemas_1.projects.name, (0, utils_1.formatString)(name))) .limit(1); return project || null; } async update(id, updates) { const [project] = await connection_1.db .update(schemas_1.projects) .set({ ...updates, updatedAt: new Date(), }) .where((0, drizzle_orm_1.eq)(schemas_1.projects.id, id)) .returning(); return project || null; } async delete(id) { const result = await connection_1.db.delete(schemas_1.projects).where((0, drizzle_orm_1.eq)(schemas_1.projects.id, id)); return result.length > 0; } } exports.ProjectsRepository = ProjectsRepository; exports.projectsRepository = new ProjectsRepository(); //# sourceMappingURL=projects.repository.js.map