import {DataTypes, Sequelize} from 'sequelize'; import * as env from 'dotenv'; env.config(); const password = process.env.POSTGRES_PASSWORD; if (!password) { console.error("Missing POSTGRES_PWD environment variable."); process.exit(1); } const db = {}; const sequelize = new Sequelize('postgres', 'postgres', password, { host: 'localhost', logging: false, dialect: 'postgres' }); db.sequelize = sequelize; db.Sequelize = Sequelize; db.members = sequelize.define('Member', { userid: { type: DataTypes.STRING, allowNull: false, }, name: { type: DataTypes.STRING, allowNull: false, }, displayname: { type: DataTypes.STRING, }, propic: { type: DataTypes.STRING, }, proxy: { type: DataTypes.STRING, } }); db.systems = sequelize.define('System', { userid: { type: DataTypes.STRING, }, fronter: { type: DataTypes.STRING }, grouptag: { type: DataTypes.STRING }, autoproxy: { type: DataTypes.BOOLEAN, } }) /** * Checks Sequelize database connection. */ db.check_connection = async function() { await sequelize.authenticate().then(async () => { console.log('Connection has been established successfully.'); await syncModels(); }).catch(err => { console.error('Unable to connect to the database:', err); process.exit(1); }); } /** * Syncs Sequelize models. */ async function syncModels() { await sequelize.sync().then(() => { console.log('Models synced successfully.'); }).catch((err) => { console.error('Syncing models did not work', err); process.exit(1); }); } export const database = db;