From b9d5e9fc249bd315c08626f2c784d0b0120a1a37 Mon Sep 17 00:00:00 2001
From: Quaternions <krakow20@gmail.com>
Date: Wed, 2 Apr 2025 18:06:44 -0700
Subject: [PATCH] submissions: implement operation failed internal endpoint

---
 pkg/service_internal/operations.go | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 pkg/service_internal/operations.go

diff --git a/pkg/service_internal/operations.go b/pkg/service_internal/operations.go
new file mode 100644
index 0000000..2deeffd
--- /dev/null
+++ b/pkg/service_internal/operations.go
@@ -0,0 +1,21 @@
+package service_internal
+
+import (
+	"context"
+
+	"git.itzana.me/strafesnet/maps-service/pkg/datastore"
+	internal "git.itzana.me/strafesnet/maps-service/pkg/internal"
+	"git.itzana.me/strafesnet/maps-service/pkg/model"
+)
+
+// ActionOperationFailed implements actionOperationFailed operation.
+//
+// Fail the specified OperationID with a StatusMessage.
+//
+// POST /operations/{OperationID}/failed
+func (svc *Service) ActionOperationFailed(ctx context.Context, params internal.ActionOperationFailedParams) (error) {
+	pmap := datastore.Optional()
+	pmap.Add("status_id", model.OperationStatusFailed)
+	pmap.Add("status_message", params.StatusMessage)
+	return svc.DB.Operations().Update(ctx, params.OperationID, pmap)
+}