59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package dataretention
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"service-operation/pocketbase"
|
|
)
|
|
|
|
// Handler handles HTTP requests for data retention operations
|
|
type Handler struct {
|
|
service *Service
|
|
}
|
|
|
|
// NewHandler creates a new data retention handler
|
|
func NewHandler(pbClient *pocketbase.PocketBaseClient) *Handler {
|
|
return &Handler{
|
|
service: NewService(pbClient),
|
|
}
|
|
}
|
|
|
|
// GetSettings handles GET requests for data retention settings
|
|
func (h *Handler) GetSettings(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
settings, err := h.service.GetDataSettings()
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
json.NewEncoder(w).Encode(settings)
|
|
}
|
|
|
|
// TriggerCleanup handles POST requests to trigger manual cleanup
|
|
func (h *Handler) TriggerCleanup(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodPost {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
summary, err := h.service.CleanupOldRecords()
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
json.NewEncoder(w).Encode(summary)
|
|
}
|
|
|
|
// SetupRoutes sets up the HTTP routes for data retention
|
|
func (h *Handler) SetupRoutes(mux *http.ServeMux) {
|
|
mux.HandleFunc("/data-retention/settings", h.GetSettings)
|
|
mux.HandleFunc("/data-retention/cleanup", h.TriggerCleanup)
|
|
} |