50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const { Sequelize } = require("sequelize");
|
|
const config = require("./config"); // Шлях до твого файлу з конфігом
|
|
|
|
const isLocal = config.dbUri === "local";
|
|
|
|
const sequelize = isLocal
|
|
? new Sequelize({
|
|
dialect: "sqlite",
|
|
storage: "./database.sqlite",
|
|
logging: false,
|
|
dialectOptions: { timeout: 20000 },
|
|
pool: { max: 1, min: 1, idle: 10000, acquire: 30000 },
|
|
})
|
|
: new Sequelize(config.dbUri, {
|
|
dialect: "postgres",
|
|
logging: false,
|
|
dialectOptions: {
|
|
ssl: {
|
|
require: true,
|
|
rejectUnauthorized: false,
|
|
},
|
|
},
|
|
pool: { max: 5, min: 0, idle: 10000, acquire: 30000 },
|
|
});
|
|
|
|
sequelize.initDatabase = async () => {
|
|
try {
|
|
await sequelize.authenticate();
|
|
|
|
if (isLocal) {
|
|
await sequelize.query("PRAGMA journal_mode=WAL;");
|
|
await sequelize.query("PRAGMA foreign_keys = OFF;");
|
|
}
|
|
|
|
await sequelize.sync();
|
|
|
|
if (isLocal) {
|
|
await sequelize.query("PRAGMA foreign_keys = ON;");
|
|
}
|
|
|
|
console.log(`✅ Database connected (${isLocal ? "SQLite" : "Postgres"})`);
|
|
return true;
|
|
} catch (error) {
|
|
console.error("❌ Database Init Error:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
module.exports = sequelize;
|