import Database from 'better-sqlite3' import { join } from 'path' let db: Database.Database | null = null export interface Sermon { id?: number slug: string title: string date: string bible_references: string personal_appliance: string pastors_challenge: string created_at?: string } export interface User { id?: number username: string password: string } export function getDatabase() { if (!db) { const dbPath = join(process.cwd(), 'data', 'sermons.db') db = new Database(dbPath) // Create tables if they don't exist db.exec(` CREATE TABLE IF NOT EXISTS sermons ( id INTEGER PRIMARY KEY AUTOINCREMENT, slug TEXT UNIQUE NOT NULL, title TEXT NOT NULL, date TEXT NOT NULL, bible_references TEXT NOT NULL, personal_appliance TEXT NOT NULL, pastors_challenge TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ) `) db.exec(` CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL ) `) // Insert default admin user (password: admin123) // In production, this should be hashed properly const userExists = db.prepare('SELECT COUNT(*) as count FROM users WHERE username = ?').get('admin') as { count: number } if (userExists.count === 0) { db.prepare('INSERT INTO users (username, password) VALUES (?, ?)').run('admin', 'admin123') } } return db } export function getAllSermons(limit?: number) { const db = getDatabase() if (limit) { return db.prepare('SELECT * FROM sermons ORDER BY date DESC LIMIT ?').all(limit) as Sermon[] } return db.prepare('SELECT * FROM sermons ORDER BY date DESC').all() as Sermon[] } export function getSermonBySlug(slug: string) { const db = getDatabase() return db.prepare('SELECT * FROM sermons WHERE slug = ?').get(slug) as Sermon | undefined } export function createSermon(sermon: Sermon) { const db = getDatabase() const stmt = db.prepare(` INSERT INTO sermons (slug, title, date, bible_references, personal_appliance, pastors_challenge) VALUES (?, ?, ?, ?, ?, ?) `) return stmt.run( sermon.slug, sermon.title, sermon.date, sermon.bible_references, sermon.personal_appliance, sermon.pastors_challenge ) } export function getUserByUsername(username: string) { const db = getDatabase() return db.prepare('SELECT * FROM users WHERE username = ?').get(username) as User | undefined }