Ctrl K
ComunidadGuías…

internal/adminapi/backup_handler.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package adminapi

import (
	"encoding/json"
	"net/http"

	"github.com/yeomyeonggeori/blueclaw/internal/backup"
)

type BackupHandler struct {
	Coordinator *backup.Coordinator
}

type prepareBackupRequest struct {
	Holder string `json:"holder"`
}

func (backupHandler BackupHandler) HandleManifest(responseWriter http.ResponseWriter, request *http.Request) {
	if backupHandler.Coordinator == nil {
		http.Error(responseWriter, "backup coordinator not configured", http.StatusServiceUnavailable)
		return
	}
	writeJSON(responseWriter, http.StatusOK, backupHandler.Coordinator.Manifest())
}

func (backupHandler BackupHandler) HandlePrepare(responseWriter http.ResponseWriter, request *http.Request) {
	if backupHandler.Coordinator == nil {
		http.Error(responseWriter, "backup coordinator not configured", http.StatusServiceUnavailable)
		return
	}
	var payload prepareBackupRequest
	_ = json.NewDecoder(request.Body).Decode(&payload)
	if payload.Holder == "" {
		payload.Holder = "admin"
	}
	writeJSON(responseWriter, http.StatusOK, backupHandler.Coordinator.Prepare(payload.Holder))
}

func (backupHandler BackupHandler) HandleComplete(responseWriter http.ResponseWriter, request *http.Request) {
	if backupHandler.Coordinator == nil {
		http.Error(responseWriter, "backup coordinator not configured", http.StatusServiceUnavailable)
		return
	}
	writeJSON(responseWriter, http.StatusOK, backupHandler.Coordinator.Complete())
}