obsidian-visualiser/server/api/project.get.ts

31 lines
947 B
TypeScript

import useDatabase from '~/composables/useDatabase';
import { ProjectSearch } from '~/types/api';
export default defineEventHandler(async (e) => {
const query = getQuery(e);
const where = ["f.type != $type"];
const criteria: Record<string, any> = { $type: "Folder" };
if(query && query.owner !== undefined)
{
where.push("owner = $owner");
criteria["$owner"] = query.owner;
}
if(query && query.name !== undefined)
{
where.push("name = $name");
criteria["$name"] = query.name;
}
const db = useDatabase();
const content = db.query(`SELECT p.*, u.username, COUNT(f.path) as pages FROM explorer_projects p LEFT JOIN users u ON p.owner = u.id LEFT JOIN explorer_files f ON f.project = p.id WHERE ${where.join(" AND ")} GROUP BY p.id`).all(criteria) as ProjectSearch[];
if(content.length > 0)
{
return content;
}
setResponseStatus(e, 404);
});