import { closeBatteryPool } from '@/server/battery/mysql' import { getLogger } from '@/server/logger' export default () => { if (import.meta.dev) return const logger = getLogger(['shutdown']) let exiting = false const shutdown = async (signal: NodeJS.Signals) => { if (exiting) { logger.warn('Forcing exit on repeated signal', { signal }) process.exit(0) } exiting = true logger.info('Draining for shutdown', { signal, graceMs: 500 }) await Bun.sleep(500) try { await closeBatteryPool() logger.info('Battery MySQL pool closed, exiting') } catch (error) { logger.error('DB pool close failed during shutdown', { error }) } process.exit(0) } process.on('SIGINT', () => void shutdown('SIGINT')) process.on('SIGTERM', () => void shutdown('SIGTERM')) }