1import { Sequelize } from 'sequelize';
2import sqlite3Shim from '../util/bun-sqlite-shim.js';
3
4const STORAGE_PATH = `data/storage${process.env.PREVIEW_MODE === "true" ? "_preview" : ""}.db`;
5
6Sequelize.DATE.prototype._stringify = () => {
7 return new Date().toISOString();
8}
9
10let db;
11
12if (process.env.DB_TYPE === "mysql") {
13
14 if (!process.env.DB_NAME || !process.env.DB_PASS || !process.env.DB_USER)
15 throw new Error("Missing database environment variables");
16
17 db = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, {
18 host: process.env.DB_HOST || "localhost",
19 dialect: 'mysql',
20 logging: false,
21 query: {raw: true}
22 });
23} else if (!process.env.DB_TYPE || process.env.DB_TYPE === "sqlite") {
24 db = new Sequelize({
25 dialect: 'sqlite',
26 dialectModule: sqlite3Shim,
27 storage: STORAGE_PATH,
28 logging: false,
29 query: {raw: true}
30 });
31} else {
32 throw new Error("Invalid database type");
33}
34
35export default db;