import 'reflect-metadata' import { DataSource } from 'typeorm' import { app } from 'electron' import path from 'path' import { ReadingReflectionTaskBatch } from './entities/ReadingReflectionTaskBatch' import { ReadingReflectionTaskItem } from './entities/ReadingReflectionTaskItem' import { ReadingPersona } from './entities/ReadingPersona' // 必须导入 import { DatabaseConnectionError } from '@main/utils/errors/databaseError' import { ErrorHandler } from '@main/utils/errorHandler' import logger from '@shared/utils/logger' const dbPath = app.isPackaged ? path.join(app.getPath('userData'), 'reflections.db') : path.join(process.cwd(), 'db.sqlite') export const AppDataSource = new DataSource({ type: 'better-sqlite3', // better-sqlite3 性能优于 sqlite3 database: dbPath, synchronize: true, logging: process.env.NODE_ENV === 'development', // 仅开发环境开启日志 entities: [ ReadingReflectionTaskBatch, ReadingReflectionTaskItem, ReadingPersona // 注册实体 ] }) export const initDB = async () => { if (!AppDataSource.isInitialized) { try { await AppDataSource.initialize() logger.info('DATABASE_INITIALIZED', { message: 'Database initialized successfully', path: dbPath }) } catch (err: any) { const error = new DatabaseConnectionError('数据库初始化失败', { originalError: err.message, stack: err.stack, path: dbPath }, { cause: err }) ErrorHandler.handleError(error) throw error } } return AppDataSource }