no1b4me's picture
Upload 20 files
07436b8 verified
const fs = require('fs');
const sqlite3 = require('sqlite3').verbose();
const log = require('./logger');
const path = require('path');
const dbDir = path.join(__dirname, '../../db');
if (!fs.existsSync(dbDir)) {
fs.mkdirSync(dbDir, { recursive: true });
log.debug('Database directory created');
}
const createDatabase = (dbPath, dbName) => {
return new sqlite3.Database(dbPath, (err) => {
if (err) {
log.error(`Failed to connect to ${dbName}: ${err.message}`);
} else {
log.debug(`Connected to ${dbName}`);
}
});
};
const genresDb = createDatabase(path.join(dbDir, 'genres.db'), 'genres.db');
const cacheDb = createDatabase(path.join(dbDir, 'cache.db'), 'cache.db');
const createTable = (db, query, tableName) => {
db.run(query, (err) => {
if (err) {
log.error(`Error creating ${tableName} table: ${err.message}`);
} else {
log.debug(`${tableName} table is ready`);
}
});
};
genresDb.serialize(() => {
createTable(
genresDb,
`CREATE TABLE IF NOT EXISTS genres (
genre_id INTEGER,
genre_name TEXT,
media_type TEXT,
language TEXT,
PRIMARY KEY (genre_id, media_type, language),
UNIQUE (genre_id, media_type, language)
)`,
'genres'
);
});
cacheDb.serialize(() => {
createTable(
cacheDb,
`CREATE TABLE IF NOT EXISTS cache (
key TEXT PRIMARY KEY,
value TEXT,
timestamp INTEGER,
page INTEGER,
skip INTEGER,
genre TEXT,
year TEXT,
rating TEXT,
mediaType TEXT
)`,
'cache'
);
});
module.exports = {
genresDb,
cacheDb
};