"use server"; import { z } from "zod"; import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { adminAction } from "@/lib/safe-action"; import { actionOk } from "@/lib/safe-action-shared"; import { logAudit } from "@/lib/services/audit"; import { rcon } from "@/lib/services/rcon"; const saveEmulatorSettingsSchema = z.object({ settings: z.record(z.string(), z.string()), }); export const saveEmulatorSettings = adminAction( { permission: PERMS.SETTINGS_EDIT, schema: saveEmulatorSettingsSchema }, async (ctx) => { const entries = Object.entries(ctx.data.settings); for (const [key, value] of entries) { await prisma.emulatorSettings.upsert({ where: { key }, update: { value: String(value) }, create: { key, value: String(value) }, }); } await rcon.updateConfig(); logAudit({ userId: ctx.session.user.id, action: "emulator_settings_update", target: "EmulatorSettings", after: ctx.data.settings, }); return actionOk(); }, );