Files
Minikura/apps/backend/src/application/services/server.service.ts

79 lines
1.8 KiB
TypeScript
Raw Normal View History

import type { ServerWithEnvVars } from "@minikura/db";
2026-02-13 15:52:13 +07:00
import {
ServerCreatedEvent,
ServerDeletedEvent,
ServerUpdatedEvent,
} from "../../domain/events/server-lifecycle.events";
import type {
ServerCreateInput,
ServerRepository,
ServerUpdateInput,
} from "../../domain/repositories/server.repository";
import type { K8sService } from "../../services/k8s";
import type { IServerService } from "../interfaces/server.service.interface";
import { BaseCrudService } from "./base-crud.service";
2026-02-13 15:52:13 +07:00
export class ServerService
extends BaseCrudService<
ServerWithEnvVars,
ServerCreateInput,
ServerUpdateInput,
ServerRepository,
{
created: typeof ServerCreatedEvent;
updated: typeof ServerUpdatedEvent;
deleted: typeof ServerDeletedEvent;
}
>
implements IServerService
{
2026-02-13 15:52:13 +07:00
constructor(
serverRepo: ServerRepository,
private k8sService: K8sService
) {
super(
serverRepo,
{
created: ServerCreatedEvent,
updated: ServerUpdatedEvent,
deleted: ServerDeletedEvent,
},
"Server"
);
2026-02-13 15:52:13 +07:00
}
protected getEntityType(input: ServerCreateInput) {
return input.type;
2026-02-13 15:52:13 +07:00
}
protected getInputId(input: ServerCreateInput): string {
return input.id;
2026-02-13 15:52:13 +07:00
}
getAllServers(omitSensitive = false) {
return this.getAll(omitSensitive);
2026-02-13 15:52:13 +07:00
}
getServerById(id: string, omitSensitive = false) {
return this.getById(id, omitSensitive);
2026-02-13 15:52:13 +07:00
}
createServer(input: ServerCreateInput) {
return this.create(input);
2026-02-13 15:52:13 +07:00
}
updateServer(id: string, input: ServerUpdateInput) {
return this.update(id, input);
2026-02-13 15:52:13 +07:00
}
deleteServer(id: string) {
return this.delete(id);
2026-02-13 15:52:13 +07:00
}
async getConnectionInfo(serverId: string) {
await this.getServerById(serverId);
const serviceName = `minecraft-${serverId}`;
return this.k8sService.getServerConnectionInfo(serviceName);
}
}