🏗️ refactor: restructure agents service with migration system and modular architecture

BREAKING CHANGE: Major refactoring of agents service structure
- Split monolithic db.ts into focused query modules (agent, session, sessionLog)
- Implement comprehensive migration system with transaction support
- Reorganize services into dedicated services/ subdirectory
- Add production-ready schema versioning with rollback capability

### New Architecture:
- database/migrations/: Version-controlled schema evolution
- database/queries/: Entity-specific CRUD operations
- database/schema/: Table and index definitions
- services/: Business logic layer (AgentService, SessionService, SessionLogService)

### Key Features:
-  Migration system with atomic transactions and checksums
-  Modular query organization by entity type
-  Backward compatibility maintained for existing code
-  Production-ready rollback support
-  Comprehensive validation and testing

### Benefits:
- Single responsibility: Each file handles one specific concern
- Better maintainability: Easy to locate and modify entity-specific code
- Team-friendly: Reduced merge conflicts with smaller focused files
- Scalable: Simple to add new entities without cluttering existing code
- Production-ready: Safe schema evolution with migration tracking

All existing functionality preserved. Comprehensive testing completed (1420 tests pass).
This commit is contained in:
Vaayne
2025-09-12 17:31:30 +08:00
parent 64f3d08d4e
commit 002a443281
28 changed files with 1672 additions and 292 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import express, { Request, Response } from 'express'
import { body, param, query, validationResult } from 'express-validator'
import { agentService } from '../../services/agents/AgentService'
import { agentService } from '../../services/agents'
import { loggerService } from '../../services/LoggerService'
const logger = loggerService.withContext('ApiServerAgentsRoutes')
+1 -3
View File
@@ -1,9 +1,7 @@
import express, { Request, Response } from 'express'
import { body, param, query, validationResult } from 'express-validator'
import { agentService } from '../../services/agents/AgentService'
import { sessionLogService } from '../../services/agents/SessionLogService'
import { sessionService } from '../../services/agents/SessionService'
import { agentService, sessionLogService, sessionService } from '../../services/agents'
import { loggerService } from '../../services/LoggerService'
const logger = loggerService.withContext('ApiServerSessionLogsRoutes')
+1 -2
View File
@@ -1,8 +1,7 @@
import express, { Request, Response } from 'express'
import { body, param, query, validationResult } from 'express-validator'
import { agentService } from '../../services/agents/AgentService'
import { sessionService } from '../../services/agents/SessionService'
import { agentService, sessionService } from '../../services/agents'
import { loggerService } from '../../services/LoggerService'
const logger = loggerService.withContext('ApiServerSessionsRoutes')
+1 -1
View File
@@ -1,6 +1,6 @@
import { createServer } from 'node:http'
import { agentService } from '../services/agents/AgentService'
import { agentService } from '../services/agents'
import { loggerService } from '../services/LoggerService'
import { app } from './app'
import { config } from './config'