From c1d265f1bf841b3082a449e8bd372e4b2e0845d6 Mon Sep 17 00:00:00 2001 From: Ada Werefox Date: Thu, 8 May 2025 22:57:56 -0700 Subject: [PATCH] Moved groups to use uint IDs, fixed bug where string IDs were not getting converted to uints. --- .vscode/launch.json | 1 + src/lib/api/api.go | 10 ++++++---- .../database/customization/customization.go | 4 ++-- src/lib/database/function/function.go | 17 ----------------- src/lib/database/group/group.go | 18 +++++++++--------- src/lib/database/item/item.go | 4 ++-- src/lib/database/person/person.go | 4 ++-- src/lib/database/role/role.go | 4 ++-- src/lib/database/schematic/schematic.go | 4 ++-- src/lib/database/user/user.go | 2 +- 10 files changed, 27 insertions(+), 41 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 2919940..c9725e8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,6 +8,7 @@ "name": "Launch API Server", "type": "go", "request": "launch", + "host": "0.0.0.0", "mode": "debug", "program": "${workspaceFolder}/src/gin-cpularp.go", "cwd": "${workspaceFolder}/src" diff --git a/src/lib/api/api.go b/src/lib/api/api.go index d5cbef7..bb1cc29 100644 --- a/src/lib/api/api.go +++ b/src/lib/api/api.go @@ -123,7 +123,7 @@ func objectIDStringsToInts(context *gin.Context, objectIDs []string) *[]uint { var objectIDInts []uint for _, objectID := range objectIDs { objectIDInt, err := strconv.Atoi(objectID) - if err != nil { + if err == nil { objectIDInts = append(objectIDInts, uint(objectIDInt)) } else { context.AbortWithStatus(http.StatusBadRequest) @@ -363,8 +363,9 @@ func GetObjects(context *gin.Context) { "persons": person.Get(GlobalDatabase, objectIDs), }) case "groups": + objectIDInts := objectIDStringsToInts(context, objectIDs) context.JSON(http.StatusOK, gin.H{ - "groups": group.Get(GlobalDatabase, objectIDs), + "groups": group.Get(GlobalDatabase, *objectIDInts), }) case "characters": context.JSON(http.StatusOK, gin.H{ @@ -495,8 +496,9 @@ func DeleteObject(context *gin.Context) { // case "person": // - case "group": - // result = group.Create(GlobalDatabase, context) + case "groups": + log.Println(*uintObjectIDs, objectIDs) + result = group.Delete(GlobalDatabase, *uintObjectIDs) case "character": // case "role": diff --git a/src/lib/database/customization/customization.go b/src/lib/database/customization/customization.go index a85e6f5..af2250b 100644 --- a/src/lib/database/customization/customization.go +++ b/src/lib/database/customization/customization.go @@ -70,7 +70,7 @@ func (customization Customization) Delete(db *gorm.DB) error { return nil } -func Create(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequesrements string, itemTags []string, visibility []string) error { +func Create(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequesrements string, itemTags []string, visibility []uint) error { return Customization{ Name: name, Functions: *function.Get(db, functions), @@ -101,7 +101,7 @@ func GetAll(db *gorm.DB) *[]Customization { return Get(db, outputCustomizationNames) } -func Update(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequesrements string, itemTags []string, visibility []string) error { +func Update(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequesrements string, itemTags []string, visibility []uint) error { return Customization{ Name: name, Functions: *function.Get(db, functions), diff --git a/src/lib/database/function/function.go b/src/lib/database/function/function.go index 377b687..739dd5f 100644 --- a/src/lib/database/function/function.go +++ b/src/lib/database/function/function.go @@ -40,23 +40,6 @@ func (function *Function) getAssociations(db *gorm.DB) { } func (params *functionParams) validate(context *gin.Context) error { - // Id, idOk := context.GetQuery("id") - // if !idOk { - // return errors.New("ID was not included in the request.") - // } - // Tags, tagsOK := context.GetQueryArray("tags") - // Requirements, requirementsOK := context.GetQueryArray("requirements") - // if idOk && tagsOK && requirementsOK { - // params.Id = Id - // if len(Tags) > 0 { - // params.Tags = Tags - // } - // if len(Requirements) > 0 { - // params.Requirements = Requirements - // } - // } else { - // return errors.New("One or more parameters not included in request") - // } body, err := io.ReadAll(context.Request.Body) if err != nil { log.Println(err) diff --git a/src/lib/database/group/group.go b/src/lib/database/group/group.go index b66444e..22217d5 100644 --- a/src/lib/database/group/group.go +++ b/src/lib/database/group/group.go @@ -26,7 +26,7 @@ type groupParams struct { func (params *groupParams) validate(context *gin.Context) error { ID, IDOk := context.GetQuery("id") if !IDOk { - return errors.New("ID was not included in the request.") + return errors.New("ID was not included in the request") } body, err := io.ReadAll(context.Request.Body) if err != nil { @@ -34,14 +34,14 @@ func (params *groupParams) validate(context *gin.Context) error { return err } var name groupParams - err = json.Unmarshal(body, &name) + _ = json.Unmarshal(body, &name) params.ID = ID params.Name = name.Name return nil } -func (group *Group) Get(db *gorm.DB, inputGroup string) { - db.Model(&Group{}).Where("name = ?", inputGroup).Take(&group) +func (group *Group) Get(db *gorm.DB, inputGroup uint) { + db.Model(&Group{}).Where("ID = ?", inputGroup).Take(&group) } func (group Group) update(db *gorm.DB) error { @@ -87,7 +87,7 @@ func Create(db *gorm.DB, context *gin.Context) error { }.Create(db) } -func Get(db *gorm.DB, inputGroups []string) *[]Group { +func Get(db *gorm.DB, inputGroups []uint) *[]Group { var outputGroups []Group for _, inputGroup := range inputGroups { var outputGroup Group @@ -99,12 +99,12 @@ func Get(db *gorm.DB, inputGroups []string) *[]Group { func GetAll(db *gorm.DB) *[]Group { var outputGroups []Group - var outputGroupNames []string - result := db.Model(&Group{}).Select("name").Find(&outputGroupNames) + var outputGroupIDs []uint + result := db.Model(&Group{}).Select("id").Find(&outputGroupIDs) if result.Error != nil { log.Println(result.Error) } - outputGroups = *Get(db, outputGroupNames) + outputGroups = *Get(db, outputGroupIDs) return &outputGroups } @@ -124,7 +124,7 @@ func Update(db *gorm.DB, context *gin.Context) error { }.update(db) } -func Delete(db *gorm.DB, inputGroups []string) error { +func Delete(db *gorm.DB, inputGroups []uint) error { groups := Get(db, inputGroups) for _, group := range *groups { err := group.delete(db) diff --git a/src/lib/database/item/item.go b/src/lib/database/item/item.go index 2752b16..b6b1192 100644 --- a/src/lib/database/item/item.go +++ b/src/lib/database/item/item.go @@ -73,7 +73,7 @@ func (item Item) Delete(db *gorm.DB) error { return nil } -func Create(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequirements string, tags []string, customizations []string, visibility []string) error { +func Create(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequirements string, tags []string, customizations []string, visibility []uint) error { return Item{ Name: name, Functions: *function.Get(db, functions), @@ -105,7 +105,7 @@ func GetAll(db *gorm.DB) *[]Item { return Get(db, outputItemNames) } -func Update(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequirements string, tags []string, customizations []string, visibility []string) error { +func Update(db *gorm.DB, name string, functions []uint, flavorText string, rulesDescription string, physrepRequirements string, tags []string, customizations []string, visibility []uint) error { return Item{ Name: name, Functions: *function.Get(db, functions), diff --git a/src/lib/database/person/person.go b/src/lib/database/person/person.go index 2c29a6a..681d18c 100644 --- a/src/lib/database/person/person.go +++ b/src/lib/database/person/person.go @@ -49,7 +49,7 @@ func (person Person) Delete(db *gorm.DB) error { return nil } -func Create(db *gorm.DB, name string, groups []string) error { +func Create(db *gorm.DB, name string, groups []uint) error { return Person{ Name: name, Groups: *group.Get(db, groups), @@ -75,7 +75,7 @@ func GetAll(db *gorm.DB) *[]Person { return Get(db, outputPersonNames) } -func Update(db *gorm.DB, name string, groups []string) error { +func Update(db *gorm.DB, name string, groups []uint) error { return Person{ Name: name, Groups: *group.Get(db, groups), diff --git a/src/lib/database/role/role.go b/src/lib/database/role/role.go index 108498b..09a0f2b 100644 --- a/src/lib/database/role/role.go +++ b/src/lib/database/role/role.go @@ -51,7 +51,7 @@ func (role Role) Delete(db *gorm.DB) error { return nil } -func Create(db *gorm.DB, name string, tiers []uint, visibility []string) error { +func Create(db *gorm.DB, name string, tiers []uint, visibility []uint) error { return Role{ Name: name, Tiers: *tier.Get(db, tiers), @@ -78,7 +78,7 @@ func GetAll(db *gorm.DB) *[]Role { return Get(db, outputRoleNames) } -func Update(db *gorm.DB, name string, tiers []uint, visibility []string) error { +func Update(db *gorm.DB, name string, tiers []uint, visibility []uint) error { return Role{ Name: name, Tiers: *tier.Get(db, tiers), diff --git a/src/lib/database/schematic/schematic.go b/src/lib/database/schematic/schematic.go index e22539f..9c308fc 100644 --- a/src/lib/database/schematic/schematic.go +++ b/src/lib/database/schematic/schematic.go @@ -73,7 +73,7 @@ func (schematic Schematic) Delete(db *gorm.DB) error { return nil } -func Create(db *gorm.DB, material []uint, tools []uint, requirements []uint, timeUnits int64, result uint, visibility []string) error { +func Create(db *gorm.DB, material []uint, tools []uint, requirements []uint, timeUnits int64, result uint, visibility []uint) error { return Schematic{ Material: *inventoryslot.Get(db, material), Tools: *inventoryslot.Get(db, tools), @@ -103,7 +103,7 @@ func GetAll(db *gorm.DB) *[]Schematic { return Get(db, outputSchematics) } -func Update(db *gorm.DB, material []uint, tools []uint, requirements []uint, timeUnits int64, result uint, visibility []string) error { +func Update(db *gorm.DB, material []uint, tools []uint, requirements []uint, timeUnits int64, result uint, visibility []uint) error { return Schematic{ Material: *inventoryslot.Get(db, material), Tools: *inventoryslot.Get(db, tools), diff --git a/src/lib/database/user/user.go b/src/lib/database/user/user.go index 18acc34..ff46976 100644 --- a/src/lib/database/user/user.go +++ b/src/lib/database/user/user.go @@ -146,7 +146,7 @@ func Exists(db *gorm.DB, id string) bool { } func Create(db *gorm.DB, id string, displayName string, username string, avatar string, avatarDecoration string, loginToken string, loggedIn bool) error { - person.Create(db, displayName, []string{}) + person.Create(db, displayName, []uint{}) newPerson := (*person.Get(db, []string{displayName}))[0] newUser := User{ Id: id,