init
This commit is contained in:
90
api/card_handler.go
Normal file
90
api/card_handler.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"pokeval/db"
|
||||
"pokeval/models"
|
||||
"strconv"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
// GET /api/v1/cards/{id}
|
||||
func GetCard(w http.ResponseWriter, r *http.Request) {
|
||||
vars := mux.Vars(r)
|
||||
cardID, _ := strconv.Atoi(vars["id"])
|
||||
|
||||
var card models.Card
|
||||
err := db.DB.QueryRow("SELECT cards_id, cards_number, cards_name FROM cards WHERE cards_id = ?", cardID).
|
||||
Scan(&card.ID, &card.Number, &card.Name)
|
||||
if err != nil {
|
||||
http.Error(w, "{}", 404)
|
||||
return
|
||||
}
|
||||
|
||||
// Attribute laden
|
||||
rows, _ := db.DB.Query(`
|
||||
SELECT ak.attributekeys_name, a.attributes_value
|
||||
FROM attributes a
|
||||
JOIN attributekeys ak ON ak.attributekeys_id = a.attributes_key
|
||||
WHERE a.attributes_card = ?`, cardID)
|
||||
|
||||
attrs := make(map[string]interface{})
|
||||
for rows.Next() {
|
||||
var key string
|
||||
var value []byte
|
||||
rows.Scan(&key, &value)
|
||||
var parsed interface{}
|
||||
json.Unmarshal(value, &parsed)
|
||||
attrs[key] = parsed
|
||||
}
|
||||
card.Attributes = attrs
|
||||
|
||||
json.NewEncoder(w).Encode(card)
|
||||
}
|
||||
|
||||
// GET /api/v1/cards/{id}
|
||||
/*func GetCard(w http.ResponseWriter, r *http.Request) {
|
||||
vars := mux.Vars(r)
|
||||
id, _ := strconv.Atoi(vars["id"])
|
||||
|
||||
row := db.DB.QueryRow("SELECT id, name, number FROM cards WHERE id = ?", id)
|
||||
var cardID int
|
||||
var name, number string
|
||||
|
||||
err := row.Scan(&cardID, &name, &number)
|
||||
if err != nil {
|
||||
http.Error(w, "Karte nicht gefunden", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
resp := map[string]interface{}{
|
||||
"id": cardID,
|
||||
"name": name,
|
||||
"number": number,
|
||||
}
|
||||
json.NewEncoder(w).Encode(resp)
|
||||
}*/
|
||||
|
||||
// POST /api/v1/cards
|
||||
func CreateCard(w http.ResponseWriter, r *http.Request) {
|
||||
var input struct {
|
||||
Name string `json:"name"`
|
||||
Number string `json:"number"`
|
||||
SeriesID int `json:"series_id"`
|
||||
}
|
||||
|
||||
json.NewDecoder(r.Body).Decode(&input)
|
||||
|
||||
_, err := db.DB.Exec("INSERT INTO cards (name, number, series_id) VALUES (?, ?, ?)",
|
||||
input.Name, input.Number, input.SeriesID)
|
||||
|
||||
if err != nil {
|
||||
http.Error(w, "Fehler beim Erstellen der Karte", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.WriteHeader(http.StatusCreated)
|
||||
json.NewEncoder(w).Encode(map[string]string{"message": "Karte erfolgreich erstellt"})
|
||||
}
|
Reference in New Issue
Block a user