25 lines
1.0 KiB
TypeScript
25 lines
1.0 KiB
TypeScript
import type { ServerLifecycleCommandRequest, ServerLifecycleCreateRequest, ServerInstanceResponse } from "../api/types";
|
|
import type { ServerCreateFormState } from "../contracts/serverManagement";
|
|
|
|
export function serverCreateRequestFromForm(form: ServerCreateFormState, sequence = Date.now()): ServerLifecycleCreateRequest {
|
|
const id = form.id.trim();
|
|
return {
|
|
id,
|
|
pluginId: form.pluginId.trim(),
|
|
runEndpointId: form.runEndpointId.trim(),
|
|
name: form.name.trim(),
|
|
idempotencyKey: lifecycleIdempotencyKey("create", id, sequence)
|
|
};
|
|
}
|
|
|
|
export function serverLifecycleCommandRequest(instance: ServerInstanceResponse, action: "start" | "stop", sequence = Date.now()): ServerLifecycleCommandRequest {
|
|
return {
|
|
expectedConfigVersion: instance.configVersion,
|
|
idempotencyKey: lifecycleIdempotencyKey(action, instance.id, sequence)
|
|
};
|
|
}
|
|
|
|
export function lifecycleIdempotencyKey(action: "create" | "start" | "stop", serverInstanceId: string, sequence: number): string {
|
|
return `web:${action}:${serverInstanceId}:${sequence}`;
|
|
}
|