@hpbyte/h-codex-core
Version:
Core indexing and search functionality for h-codex
57 lines • 2.22 kB
JavaScript
;
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