data360-gallery / src /lib /sqlite.ts
rafmacalaba's picture
Upload folder using huggingface_hub
3a1ad20 verified
import Database from 'better-sqlite3';
import path from 'path';
import fs from 'fs';
// HF Spaces persistent storage is typically at /data.
// For local dev, we use ./gallery.db
const DB_PATH = process.env.DB_PATH || './gallery.db';
// Ensure directory exists
const dbDir = path.dirname(DB_PATH);
if (!fs.existsSync(dbDir)) {
fs.mkdirSync(dbDir, { recursive: true });
}
let db: Database.Database;
try {
db = new Database(DB_PATH);
// Enable Write-Ahead Logging for better concurrency
db.pragma('journal_mode = WAL');
// Initialize tables
db.exec(`
CREATE TABLE IF NOT EXISTS visualizations (
id TEXT PRIMARY KEY,
spec TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS feedback (
viz_id TEXT,
user_id TEXT,
action TEXT, -- 'like' or 'dislike'
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (viz_id, user_id)
);
CREATE TABLE IF NOT EXISTS comments (
id TEXT PRIMARY KEY,
viz_id TEXT,
user_id TEXT,
user_name TEXT,
text TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
`);
} catch (err) {
console.error('Failed to initialize SQLite database:', err);
throw err;
}
export default db;