diff --git a/apps/blog/src/env.d.ts b/apps/blog/src/env.d.ts new file mode 100644 index 0000000..f964fe0 --- /dev/null +++ b/apps/blog/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/blog/src/lib/db.ts b/apps/blog/src/lib/db.ts new file mode 100644 index 0000000..f9d2ff2 --- /dev/null +++ b/apps/blog/src/lib/db.ts @@ -0,0 +1,50 @@ +import { createClient } from '@libsql/client'; + +export const db = createClient({ + url: import.meta.env.TURSO_DATABASE_URL, + authToken: import.meta.env.TURSO_AUTH_TOKEN, +}); + +export interface GuestbookEntry { + id: number; + name: string; + message: string; + url: string | null; + created_at: string; + approved: number; +} + +export async function getApprovedEntries(): Promise { + const result = await db.execute( + 'SELECT * FROM guestbook WHERE approved = 1 ORDER BY created_at DESC' + ); + return result.rows as unknown as GuestbookEntry[]; +} + +export async function getPendingEntries(): Promise { + const result = await db.execute( + 'SELECT * FROM guestbook WHERE approved = 0 ORDER BY created_at DESC' + ); + return result.rows as unknown as GuestbookEntry[]; +} + +export async function createEntry(name: string, message: string, url: string | null): Promise { + await db.execute({ + sql: 'INSERT INTO guestbook (name, message, url) VALUES (?, ?, ?)', + args: [name, message, url], + }); +} + +export async function approveEntry(id: number): Promise { + await db.execute({ + sql: 'UPDATE guestbook SET approved = 1 WHERE id = ?', + args: [id], + }); +} + +export async function deleteEntry(id: number): Promise { + await db.execute({ + sql: 'DELETE FROM guestbook WHERE id = ?', + args: [id], + }); +}