feat: Add CalendarSelector component and install new dependencies.
This commit is contained in:
52
server/db.js
Normal file
52
server/db.js
Normal file
@@ -0,0 +1,52 @@
|
||||
const Database = require('better-sqlite3');
|
||||
const path = require('path');
|
||||
|
||||
const dbPath = path.resolve(__dirname, 'eventy.db');
|
||||
const db = new Database(dbPath);
|
||||
|
||||
// Enable WAL mode for better concurrency
|
||||
db.pragma('journal_mode = WAL');
|
||||
|
||||
function initDb() {
|
||||
const schema = `
|
||||
CREATE TABLE IF NOT EXISTS events (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
start_date TEXT NOT NULL,
|
||||
end_date TEXT NOT NULL,
|
||||
created_at TEXT DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS participants (
|
||||
id TEXT PRIMARY KEY,
|
||||
event_id TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS votes (
|
||||
id TEXT PRIMARY KEY,
|
||||
participant_id TEXT NOT NULL,
|
||||
date TEXT NOT NULL,
|
||||
status TEXT CHECK(status IN ('available', 'unavailable', 'maybe')) NOT NULL,
|
||||
FOREIGN KEY (participant_id) REFERENCES participants(id) ON DELETE CASCADE,
|
||||
UNIQUE(participant_id, date)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS event_dates (
|
||||
event_id TEXT NOT NULL,
|
||||
date TEXT NOT NULL,
|
||||
PRIMARY KEY (event_id, date),
|
||||
FOREIGN KEY (event_id) REFERENCES events(id) ON DELETE CASCADE
|
||||
);
|
||||
`;
|
||||
db.exec(schema);
|
||||
console.log('Database initialized');
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
db,
|
||||
initDb
|
||||
};
|
||||
Reference in New Issue
Block a user