Spaces:
Paused
Paused
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 | |
}; | |