diff --git a/app/api/hunt-status/route.js b/app/api/hunt-status/route.js new file mode 100644 index 0000000..49aaf0d --- /dev/null +++ b/app/api/hunt-status/route.js @@ -0,0 +1,16 @@ +import { queryOne } from "../../../lib/db"; + +export async function GET() { + try { + const settings = await queryOne("SELECT active FROM hunt_settings LIMIT 1"); + return Response.json({ + active: settings ? Boolean(settings.active) : false, + }); + } catch (error) { + console.error("Get hunt status error:", error); + return Response.json( + { error: "Failed to fetch hunt status" }, + { status: 500 } + ); + } +} diff --git a/clue_hunt.db b/clue_hunt.db new file mode 100644 index 0000000..e69de29 diff --git a/identifier.sqbpro b/identifier.sqbpro new file mode 100644 index 0000000..0e26d64 --- /dev/null +++ b/identifier.sqbpro @@ -0,0 +1,62 @@ +
-- Schema for clue_hunt.db + +-- Drop tables if they exist +DROP TABLE IF EXISTS clues; +DROP TABLE IF EXISTS users; +DROP TABLE IF EXISTS teams; +DROP TABLE IF EXISTS game_settings; + +-- Users table +CREATE TABLE users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT UNIQUE NOT NULL, + password TEXT NOT NULL, + role TEXT NOT NULL DEFAULT 'user', + team_id INTEGER, -- Ensure this column exists + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (team_id) REFERENCES teams(id) +); + +-- Teams table +CREATE TABLE teams ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + code TEXT UNIQUE NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- Clues table +CREATE TABLE clues ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + description TEXT NOT NULL, + team_id INTEGER NOT NULL, + found BOOLEAN DEFAULT FALSE, + found_at TIMESTAMP, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (team_id) REFERENCES teams(id) +); + +-- Game settings table +CREATE TABLE game_settings ( + id INTEGER PRIMARY KEY, + hunt_active BOOLEAN DEFAULT FALSE, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- Insert initial admin user +INSERT INTO users (username, password, role) +VALUES ('admin', '$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', 'admin'); +-- Password is 'password123' - change this in production! + +-- Insert sample teams +INSERT INTO teams (name, code) VALUES ('Team Alpha', 'ALPHA123'); +INSERT INTO teams (name, code) VALUES ('Team Beta', 'BETA456'); +INSERT INTO teams (name, code) VALUES ('Team Gamma', 'GAMMA789'); + +-- Insert sample clues for Team Alpha +INSERT INTO clues (description, team_id) VALUES ('Find the red door', 1); +INSERT INTO clues (description, team_id) VALUES ('Look under the bridge', 1); +INSERT INTO clues (description, team_id) VALUES ('Check the library', 1); + +
diff --git a/sqlite.db b/sqlite.db new file mode 100644 index 0000000..f7af11a Binary files /dev/null and b/sqlite.db differ