60 lines
1.6 KiB
TypeScript

// src/services/RouterService.ts
import { RouterRepository } from '../repositories/RouterRepository';
import { Container, RouterData,VMUpdate} from '../types';
import { Pool } from 'mysql2/promise';
import logger from '../utils/logger';
export class RouterService {
private repository: RouterRepository;
constructor(pool: Pool) {
this.repository = new RouterRepository(pool);
}
async updateRouterVMs(routerId: string, vms: VMUpdate[]): Promise<any> {
console.log('Service: Updating VMs for router:', routerId);
try {
return await this.repository.updateVMs(routerId, vms);
} catch (err) {
console.error('Service error:', err);
throw err;
}
}
async getAllRouters(): Promise<RouterData[]> {
return this.repository.findAll();
}
async getRouterById(id: number): Promise<RouterData | null> {
return this.repository.findById(id);
}
async getRouterByRouterId(routerId: string): Promise<RouterData | null> {
return this.repository.findByRouterId(routerId);
}
async getRoutersByFacility(facility: string): Promise<RouterData[]> {
return this.repository.findByFacility(facility);
}
async createRouter(router: Partial<RouterData>): Promise<RouterData> {
return this.repository.create(router);
}
async updateRouter(id: number, router: Partial<RouterData>): Promise<RouterData | null> {
return this.repository.update(id, router);
}
async deleteRouter(id: number): Promise<boolean> {
return this.repository.delete(id);
}
async processContainers(routerId: number, containers: Container[]): Promise<any> {
return this.repository.upsertContainerStatus(routerId.toString(), containers);
}
}