added a CRUD handler für Ausrüstung

This commit is contained in:
2024-12-21 07:42:20 +01:00
parent cdd1cf6128
commit 30570160d2
4 changed files with 140 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
# API Examples
## Create Ausruestung
POST /ausruestung
{
"character_id": 1,
"name": "Magic Sword",
"anzahl": 1,
"gewicht": 2.5,
"wert": 150.0,
"beinhaltet_in": null,
"beschreibung": "A glowing sword imbued with magical energy.",
"bonus": 5,
"ist_magisch": true,
"abw": 10,
"ausgebrannt": false
}
## Get All Ausruestung for a Character
GET /ausruestung/1 Response:
[
{
"ausruestung_id": 1,
"character_id": 1,
"name": "Magic Sword",
"anzahl": 1,
"gewicht": 2.5,
"wert": 150.0,
"beinhaltet_in": null,
"beschreibung": "A glowing sword imbued with magical energy.",
"bonus": 5,
"ist_magisch": true,
"abw": 10,
"ausgebrannt": false
}
]
## Update Ausruestung
PUT /ausruestung/1
{
"anzahl": 2,
"gewicht": 3.0
}
## Delete Ausruestung
DELETE /ausruestung/1
## Summary
These endpoints provide complete CRUD functionality for managing Ausruestung items. They integrate with the database and offer flexibility to interact with equipment data.
+66
View File
@@ -84,3 +84,69 @@ func CreateCharacter(c *gin.Context) {
c.JSON(http.StatusCreated, character)
}
/*
Endpoints for Managing Ausruestung
1. Create Ausruestung
Allows users to add new equipment items for a specific character.
*/
func CreateAusruestung(c *gin.Context) {
var ausruestung Ausruestung
if err := c.ShouldBindJSON(&ausruestung); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if err := DB.Create(&ausruestung).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create Ausruestung"})
return
}
c.JSON(http.StatusCreated, ausruestung)
}
func GetAusruestung(c *gin.Context) {
characterID := c.Param("character_id")
var ausruestung []Ausruestung
if err := DB.Where("character_id = ?", characterID).Find(&ausruestung).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve Ausruestung"})
return
}
c.JSON(http.StatusOK, ausruestung)
}
func UpdateAusruestung(c *gin.Context) {
ausruestungID := c.Param("ausruestung_id")
var ausruestung Ausruestung
if err := DB.First(&ausruestung, ausruestungID).Error; err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "Ausruestung not found"})
return
}
if err := c.ShouldBindJSON(&ausruestung); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
if err := DB.Save(&ausruestung).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to update Ausruestung"})
return
}
c.JSON(http.StatusOK, ausruestung)
}
func DeleteAusruestung(c *gin.Context) {
ausruestungID := c.Param("ausruestung_id")
if err := DB.Delete(&Ausruestung{}, ausruestungID).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to delete Ausruestung"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Ausruestung deleted successfully"})
}
+4
View File
@@ -15,6 +15,10 @@ func main() {
r.POST("/login", LoginUser)
r.GET("/characters", GetCharacters)
r.POST("/characters", CreateCharacter)
r.POST("/ausruestung", CreateAusruestung)
r.GET("/ausruestung/:character_id", GetAusruestung)
r.PUT("/ausruestung/:ausruestung_id", UpdateAusruestung)
r.DELETE("/ausruestung/:ausruestung_id", DeleteAusruestung)
r.Run(":8080") // Start server on port 8080
}
+15
View File
@@ -37,6 +37,21 @@ type Eigenschaften struct {
Zt int
}
type Ausruestung struct {
AusruestungID uint `gorm:"primaryKey"`
CharacterID uint `gorm:"index"`
Name string `json:"name"`
Anzahl int `json:"anzahl"`
Gewicht float64 `json:"gewicht"`
Wert float64 `json:"wert"`
BeinhaltetIn *string `json:"beinhaltet_in"`
Beschreibung *string `json:"beschreibung"`
Bonus *int `json:"bonus"`
IstMagisch bool `json:"ist_magisch"`
Abw *int `json:"abw"`
Ausgebrannt bool `json:"ausgebrannt"`
}
/*
Define models for each table
Add other models for Ausruestung, Fertigkeiten, etc., following the same pattern.