import {Sequelize} from 'sequelize';

// Load & check environment
require('dotenv').config();
require('./util/envCheck').validate();

// Connect to database
export const sequelize = new Sequelize(process.env.DB_NAME || '', process.env.DB_USER || '', process.env.DB_PASS || '', {host: process.env.DB_HOST || '', dialect: 'mariadb'});

sequelize.authenticate().then(() => {
    console.log('[DB] Connected to database');
    start();
}).catch(err => console.error(err));

// Start all servers
const start = async () => {
    (await import("./server/api")).startServer(parseInt(process.env.API_PORT || ''));
    (await import("./server/shortener")).startServer(parseInt(process.env.SHORTENER_PORT || ''));
    if (!process.env.DISABLE_CONTENT_DELIVERY)
        (await import("./server/contentDelivery")).startServer(parseInt(process.env.CDN_PORT || ''));
    sequelize.sync();
}