diff --git a/server/src/domain/proxies/proxy.service.ts b/server/src/domain/proxies/proxy.service.ts new file mode 100644 index 000000000..0c911c0ab --- /dev/null +++ b/server/src/domain/proxies/proxy.service.ts @@ -0,0 +1,39 @@ +import { Proxy } from "@/domain/proxies/proxy.type.js"; +import { IMonitorsRepository } from "@/domain/monitors/monitor.repository.interface.js"; +import { IProxiesRepository } from "@/domain/proxies/proxy.repository.interface.js"; + +export interface IProxiesService { + createProxy(proxy: Partial, teamId: string): Promise; + getProxy(proxyId: string, teamId: string): Promise; + getProxiesByTeamId(teamId: string): Promise; + updateProxy(proxyId: string, teamId: string, patch: Partial): Promise; + deleteProxy(proxyId: string, teamId: string): Promise; +} + +export class ProxiesService implements IProxiesService { + constructor( + private proxiesRepository: IProxiesRepository, + private monitorsRepository: IMonitorsRepository + ) {} + + createProxy = async (proxyData: Partial, teamId: string): Promise => { + proxyData.teamId = teamId; + return await this.proxiesRepository.create(proxyData); + }; + + getProxy = async (proxyId: string, teamId: string): Promise => { + return await this.proxiesRepository.findById(proxyId, teamId); + }; + + getProxiesByTeamId = async (teamId: string): Promise => { + return await this.proxiesRepository.findByTeamId(teamId); + }; + + updateProxy = async (proxyId: string, teamId: string, patch: Partial): Promise => { + return await this.proxiesRepository.updateById(proxyId, teamId, patch); + }; + deleteProxy = async (proxyId: string, teamId: string): Promise => { + // TODO guard + return await this.proxiesRepository.deleteById(proxyId, teamId); + }; +}