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, 'navigable': explorerContentTable.navigable, 'private': explorerContentTable.private, }).from(explorerContentTable).where(eq(explorerContentTable.path, sql.placeholder('path'))).prepare().get({ path }); if(content !== undefined) { const session = await getUserSession(e); if(content.private && (!session || !session.user)) { setResponseStatus(e, 404); return; } if(session && session.user && content.private && session.user.id !== content.owner) { setResponseStatus(e, 404); return; } return { path: content.path, owner: content.owner, title: content.title, type: content.type, }; } setResponseStatus(e, 404); return; });