Adding routes for API endpoints
This commit is contained in:
@@ -20,7 +20,7 @@ Character Handlers
|
||||
Add CRUD operations for characters:
|
||||
*/
|
||||
|
||||
func GetCharacters(c *gin.Context) {
|
||||
func ListCharacters(c *gin.Context) {
|
||||
var characters []Char
|
||||
if err := database.DB.Find(&characters).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve characters"})
|
||||
@@ -43,6 +43,57 @@ func CreateCharacter(c *gin.Context) {
|
||||
|
||||
c.JSON(http.StatusCreated, character)
|
||||
}
|
||||
func GetCharacter(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var character Char
|
||||
err := character.FirstID(id)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve character"})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, character)
|
||||
}
|
||||
func UpdateCharacter(c *gin.Context) {
|
||||
var character Char
|
||||
/*
|
||||
if err := c.ShouldBindJSON(&character.ID); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
if err := database.DB.Create(&character).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create character"})
|
||||
return
|
||||
}
|
||||
*/
|
||||
c.JSON(http.StatusCreated, character)
|
||||
}
|
||||
func DeleteCharacter(c *gin.Context) {
|
||||
id := c.Param("id")
|
||||
var character Char
|
||||
err := character.FirstID(id)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve character"})
|
||||
return
|
||||
}
|
||||
err = character.Delete()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to delete character"})
|
||||
return
|
||||
}
|
||||
/*
|
||||
if err := c.ShouldBindJSON(&character.ID); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
if err := database.DB.Create(&character).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to create character"})
|
||||
return
|
||||
}
|
||||
*/
|
||||
c.JSON(http.StatusCreated, character)
|
||||
}
|
||||
|
||||
// Upload files
|
||||
func UploadFiles(c *gin.Context) {
|
||||
|
||||
@@ -124,7 +124,29 @@ func (object *Char) First(name string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Char) FirstID(name string) error {
|
||||
err := database.DB.
|
||||
Preload("Lp").
|
||||
Preload("Ap").
|
||||
Preload("B").
|
||||
Preload("Merkmale").
|
||||
Preload("Eigenschaften").
|
||||
Preload("Fertigkeiten").
|
||||
Preload("Waffenfertigkeiten").
|
||||
Preload("Zauber").
|
||||
Preload("Bennies").
|
||||
Preload("Erfahrungsschatz").
|
||||
Preload("Waffen").
|
||||
Preload("Behaeltnisse").
|
||||
Preload("Transportmittel").
|
||||
Preload("Ausruestung").
|
||||
First(&object, " id = ?", name).Error
|
||||
if err != nil {
|
||||
// Char not found
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (object *Char) Create() error {
|
||||
err := database.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// Save the main character record
|
||||
@@ -136,7 +158,18 @@ func (object *Char) Create() error {
|
||||
|
||||
return err
|
||||
}
|
||||
func (object *Char) Delete() error {
|
||||
err := database.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// delete the main character record
|
||||
//should cascade for all elements
|
||||
if err := tx.Delete(&object).Error; err != nil {
|
||||
return fmt.Errorf("failed to delete char: %w", err)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
return err
|
||||
}
|
||||
func (object *Eigenschaft) TableName() string {
|
||||
return dbPrefix + "_" + "eigenschaften"
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ func CreateAusruestung(c *gin.Context) {
|
||||
c.JSON(http.StatusCreated, ausruestung)
|
||||
}
|
||||
|
||||
func GetAusruestung(c *gin.Context) {
|
||||
func ListAusruestung(c *gin.Context) {
|
||||
characterID := c.Param("character_id")
|
||||
|
||||
var ausruestung []Ausruestung
|
||||
|
||||
+25
-3
@@ -31,10 +31,32 @@ func main() {
|
||||
r.POST("/login", user.LoginUser)
|
||||
protected := r.Group("/api")
|
||||
protected.Use(user.AuthMiddleware())
|
||||
protected.GET("/characters", character.GetCharacters)
|
||||
protected.POST("/characters", character.CreateCharacter)
|
||||
// Character routes
|
||||
rCharGrp := protected.Group("/characters")
|
||||
rCharGrp.GET("", character.ListCharacters)
|
||||
rCharGrp.POST("", character.CreateCharacter)
|
||||
rCharGrp.GET("/:id", character.GetCharacter)
|
||||
rCharGrp.PUT("/:id", character.UpdateCharacter)
|
||||
rCharGrp.DELETE("/:id", character.DeleteCharacter)
|
||||
//rCharGrp.GET("/{id}/skills", character.ListSkills) // List skills for a character
|
||||
//rCharGrp.GET("/{id}/skills/{id}", character.GetSkill) // get a skill for a character
|
||||
//rCharGrp.PUT("/{id}/skills/{id}", character.UpdateSkill) // Update skill for a character
|
||||
//rCharGrp.POST("/{id}/skills", character.AddSkill) //Add a skill to a character
|
||||
//rCharGrp.DELETE("/{id}/skills/{id}", character.DeleteSkill) //ADEletedd a skill to a character
|
||||
|
||||
rCharGrp.GET("/{id}/equipment", equipment.ListAusruestung) // List equipment for a character
|
||||
//rCharGrp.POST("/{id}/equipment", equipment.AddAusruestung) // Add equipment to a character
|
||||
rCharGrp.PUT("/{id}/equipment/{id}", equipment.UpdateAusruestung) // List equipment for a character
|
||||
rCharGrp.DELETE("/{id}/equipment/{id}", equipment.DeleteAusruestung) // List equipment for a character
|
||||
//rCharGrp.GET("/{id}/spells", spells.ListAusruestung) // List equipment for a character
|
||||
//rCharGrp.POST("/{id}/spells", equipment.AddAusruestung) // Add equipment to a character
|
||||
rCharGrp.PUT("/{id}/spells/{id}", equipment.UpdateAusruestung) // List equipment for a character
|
||||
rCharGrp.DELETE("/{id}/spells/{id}", equipment.DeleteAusruestung) // List equipment for a character
|
||||
rCharGrp.POST("/{id}/spells", character.DeleteCharacter) // Add a spell to a character
|
||||
rCharGrp.GET("/{id}/spells", character.DeleteCharacter) // List spells for a character
|
||||
// Equipment routes
|
||||
protected.POST("/ausruestung", equipment.CreateAusruestung)
|
||||
protected.GET("/ausruestung/:character_id", equipment.GetAusruestung)
|
||||
//protected.GET("/ausruestung/:character_id", equipment.GetAusruestung)
|
||||
protected.PUT("/ausruestung/:ausruestung_id", equipment.UpdateAusruestung)
|
||||
protected.DELETE("/ausruestung/:ausruestung_id", equipment.DeleteAusruestung)
|
||||
protected.POST("/upload", character.UploadFiles)
|
||||
|
||||
Reference in New Issue
Block a user