53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package api
|
|
|
|
import (
|
|
"Advertisement_Panel/db"
|
|
"encoding/json"
|
|
"io"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
func SaveMetadataHandler(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != "POST" {
|
|
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
|
|
body, err := io.ReadAll(r.Body)
|
|
if err != nil {
|
|
http.Error(w, "Failed to read request body", http.StatusBadRequest)
|
|
return
|
|
}
|
|
defer r.Body.Close()
|
|
|
|
var newMetadata []db.ImagesEntry
|
|
log.Println(string(body))
|
|
err = json.Unmarshal(body, &newMetadata)
|
|
|
|
if err != nil {
|
|
log.Println("Error unmarshalling JSON:", err)
|
|
http.Error(w, "Failed to parse JSON", http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
var currentMetadata []db.ImagesEntry
|
|
currentMetadata = db.GetImageMetadata()
|
|
|
|
for _, newEntry := range newMetadata {
|
|
for _, currentEntry := range currentMetadata {
|
|
if newEntry.ID == currentEntry.ID {
|
|
if newEntry.SpiceLevel != currentEntry.SpiceLevel {
|
|
_, err := db.DB.Exec("UPDATE images SET spice_level = $1 WHERE id = $2", newEntry.SpiceLevel, newEntry.ID)
|
|
if err != nil {
|
|
http.Error(w, "Failed to update database", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
}
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|