60 lines
1.6 KiB
TypeScript
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);
|
|
}
|
|
|
|
}
|
|
|