Files
read_book/src/main/db/data-source.ts
寒寒 455dd1f4cd feat(desktop): 实现一些功能
1. 实现任务暂停功能

2. 实现页面的国际化功能

3.优化项目的结构以及BUG

4. 优化系统架构

5. 实现一大堆的功能
2026-01-25 03:30:23 +08:00

50 lines
1.5 KiB
TypeScript

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
}