Files
source-gamepanel/apps/api/src/routes/servers/schemas.ts
T
2026-02-21 13:37:46 +03:00

47 lines
1.6 KiB
TypeScript

import { Type } from '@sinclair/typebox';
export const ServerParamSchema = {
params: Type.Object({
orgId: Type.String({ format: 'uuid' }),
serverId: Type.String({ format: 'uuid' }),
}),
};
export const CreateServerSchema = {
body: Type.Object({
name: Type.String({ minLength: 1, maxLength: 255 }),
description: Type.Optional(Type.String()),
nodeId: Type.String({ format: 'uuid' }),
gameId: Type.String({ format: 'uuid' }),
memoryLimit: Type.Number({ minimum: 128 * 1024 * 1024 }), // min 128MB in bytes
diskLimit: Type.Number({ minimum: 256 * 1024 * 1024 }), // min 256MB
cpuLimit: Type.Optional(Type.Number({ minimum: 10, maximum: 10000, default: 100 })),
allocationId: Type.String({ format: 'uuid' }),
environment: Type.Optional(Type.Record(Type.String(), Type.String())),
startupOverride: Type.Optional(Type.String()),
}),
};
export const UpdateServerSchema = {
body: Type.Object({
name: Type.Optional(Type.String({ minLength: 1, maxLength: 255 })),
description: Type.Optional(Type.String()),
memoryLimit: Type.Optional(Type.Number({ minimum: 128 * 1024 * 1024 })),
diskLimit: Type.Optional(Type.Number({ minimum: 256 * 1024 * 1024 })),
cpuLimit: Type.Optional(Type.Number({ minimum: 10, maximum: 10000 })),
environment: Type.Optional(Type.Record(Type.String(), Type.String())),
startupOverride: Type.Optional(Type.String()),
}),
};
export const PowerActionSchema = {
body: Type.Object({
action: Type.Union([
Type.Literal('start'),
Type.Literal('stop'),
Type.Literal('restart'),
Type.Literal('kill'),
]),
}),
};