29 lines
794 B
TypeScript
29 lines
794 B
TypeScript
import 'dotenv/config'
|
|
import { assertRuntimeConfig, loadProjectConfigs } from './config'
|
|
import prisma, { ensureDatabaseReady } from './prisma'
|
|
import { createServer } from './server'
|
|
import { startWorker } from './worker'
|
|
|
|
const projects = loadProjectConfigs()
|
|
assertRuntimeConfig(projects)
|
|
|
|
const port = Math.max(1, Number(process.env.PORT) || 3088)
|
|
|
|
const main = async () => {
|
|
await ensureDatabaseReady()
|
|
createServer(projects).listen(port, () => {
|
|
console.log(`[NotificationCenter] listening on ${port}, projects=${projects.size}`)
|
|
})
|
|
startWorker()
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error('[NotificationCenter] startup failed:', error)
|
|
process.exitCode = 1
|
|
})
|
|
|
|
process.on('SIGTERM', async () => {
|
|
await prisma.$disconnect().catch(() => undefined)
|
|
process.exit(0)
|
|
})
|