import { env } from "./core/env.js";
import { db, runMigrations } from "./core/db/client.js";
import { loadInstallConfig } from "./core/config.js";
import { buildApp } from "./app.js";
runMigrations();
const config = loadInstallConfig();
const app = buildApp();
const host = "0.0.0.0";
const port = env.PORT;
app.listen({ host, port }).then(() => {
    app.log.info(`private-server prêt sur http://${host}:${port} (données : ${env.DATA_DIR})`);
    if (!config.setupDoneAt) {
        app.log.warn("Premier lancement : exécutez `private-server setup` pour choisir le domaine " +
            "et créer le compte admin (le serveur reste accessible par IP dans l'intervalle).");
    }
    else {
        app.log.info(`Installé : ${config.domain ? `https://${config.domain}` : "accès direct par IP"} — admin : ${config.adminEmail}`);
    }
});
async function shutdown(signal) {
    app.log.info(`signal ${signal} reçu, arrêt…`);
    try {
        await app.close();
    }
    finally {
        db.$client.close();
        process.exit(0);
    }
}
process.on("SIGINT", () => void shutdown("SIGINT"));
process.on("SIGTERM", () => void shutdown("SIGTERM"));
//# sourceMappingURL=index.js.map