33 lines
1017 B
TypeScript
33 lines
1017 B
TypeScript
import { eq, sql } from 'drizzle-orm';
|
|
import useDatabase from '~/composables/useDatabase';
|
|
import { explorerContentTable } from '~/db/schema';
|
|
|
|
export default defineEventHandler(async (e) => {
|
|
const path = decodeURIComponent(getRouterParam(e, "path") ?? '');
|
|
|
|
if(!path)
|
|
{
|
|
setResponseStatus(e, 404);
|
|
return;
|
|
}
|
|
|
|
const db = useDatabase();
|
|
|
|
const content = db.select({
|
|
'path': explorerContentTable.path,
|
|
'owner': explorerContentTable.owner,
|
|
'title': explorerContentTable.title,
|
|
'type': explorerContentTable.type,
|
|
'content': sql<string>`cast(${explorerContentTable.content} as TEXT)`.as('content'),
|
|
'navigable': explorerContentTable.navigable,
|
|
'private': explorerContentTable.private,
|
|
}).from(explorerContentTable).where(eq(explorerContentTable.path, sql.placeholder('path'))).prepare().get({ path });
|
|
|
|
if(content !== undefined)
|
|
{
|
|
return content;
|
|
}
|
|
|
|
setResponseStatus(e, 404);
|
|
return;
|
|
}); |