31 lines
947 B
TypeScript
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);
|
|
}); |