2026-02-17 18:12:02 +07:00
|
|
|
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";
|
2026-02-17 18:12:02 +07:00
|
|
|
import type { IServerService } from "../interfaces/server.service.interface";
|
|
|
|
|
import { BaseCrudService } from "./base-crud.service";
|
2026-02-13 15:52:13 +07:00
|
|
|
|
2026-02-17 18:12:02 +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(
|
2026-02-17 18:12:02 +07:00
|
|
|
serverRepo: ServerRepository,
|
|
|
|
|
private k8sService: K8sService
|
|
|
|
|
) {
|
|
|
|
|
super(
|
|
|
|
|
serverRepo,
|
|
|
|
|
{
|
|
|
|
|
created: ServerCreatedEvent,
|
|
|
|
|
updated: ServerUpdatedEvent,
|
|
|
|
|
deleted: ServerDeletedEvent,
|
|
|
|
|
},
|
|
|
|
|
"Server"
|
|
|
|
|
);
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +07:00
|
|
|
protected getEntityType(input: ServerCreateInput) {
|
|
|
|
|
return input.type;
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +07:00
|
|
|
protected getInputId(input: ServerCreateInput): string {
|
|
|
|
|
return input.id;
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +07:00
|
|
|
getAllServers(omitSensitive = false) {
|
|
|
|
|
return this.getAll(omitSensitive);
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +07:00
|
|
|
getServerById(id: string, omitSensitive = false) {
|
|
|
|
|
return this.getById(id, omitSensitive);
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +07:00
|
|
|
createServer(input: ServerCreateInput) {
|
|
|
|
|
return this.create(input);
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +07:00
|
|
|
updateServer(id: string, input: ServerUpdateInput) {
|
|
|
|
|
return this.update(id, input);
|
2026-02-13 15:52:13 +07:00
|
|
|
}
|
|
|
|
|
|
2026-02-17 18:12:02 +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);
|
|
|
|
|
}
|
|
|
|
|
}
|