diff --git a/backend/groups.go b/backend/groups.go index aa84e0d..c6cd484 100644 --- a/backend/groups.go +++ b/backend/groups.go @@ -1,53 +1,7 @@ package backend -import ( - "gorm.io/gorm" -) - type Group struct { ID uint64 `gorm:"primaryKey"` Name string `gorm:"unique,notNull"` Links []Link `gorm:"constraint:OnDelete:CASCADE;"` } - -func GetGroups(db *gorm.DB) ([]Group, error) { - var groups []Group - result := db.Model(&Group{}).Preload("Links").Find(&groups) - if result.Error != nil { - return nil, result.Error - } - return groups, nil -} - -func CreateGroup(db *gorm.DB, groupName string) (Group, error) { - group := Group{ - Name: groupName, - } - result := db.Create(&group) - if result.Error != nil { - return Group{}, result.Error - } - - return group, nil -} - -func UpdateGroup(db *gorm.DB, id uint64, groupName string) (Group, error) { - var group Group - db.First(&group, id) - - group.Name = groupName - result := db.Save(&group) - if result.Error != nil { - return Group{}, result.Error - } - - return group, nil -} - -func DeleteGroup(db *gorm.DB, id uint64) error { - result := db.Delete(&Group{}, id) - if result.Error != nil { - return result.Error - } - return nil -} diff --git a/backend/links.go b/backend/links.go index 17476ff..fb9348e 100644 --- a/backend/links.go +++ b/backend/links.go @@ -1,48 +1,8 @@ package backend -import ( - "gorm.io/gorm" -) - type Link struct { ID uint64 `gorm:"primaryKey"` Name string `gorm:"notNull"` Href string `gorm:"notNull"` GroupID uint64 `gorm:"notNull"` } - -func CreateLink(db *gorm.DB, linkName string, href string, groupID uint64) (Link, error) { - link := Link{ - Name: linkName, - Href: href, - GroupID: groupID, - } - result := db.Create(&link) - if result.Error != nil { - return Link{}, result.Error - } - - return link, nil -} - -func UpdateLink(db *gorm.DB, id uint64, linkName string, href string) (Link, error) { - var link Link - db.First(&link, id) - - link.Name = linkName - link.Href = href - result := db.Save(&link) - if result.Error != nil { - return Link{}, result.Error - } - - return link, nil -} - -func DeleteLink(db *gorm.DB, id uint64) error { - result := db.Delete(&Link{}, id) - if result.Error != nil { - return result.Error - } - return nil -} diff --git a/views/groups.go b/views/groups.go index 35e98cb..38543e2 100644 --- a/views/groups.go +++ b/views/groups.go @@ -14,9 +14,11 @@ func CreateGroup(c *gin.Context, db *gorm.DB) { } // Save new group to the database. - groupName := c.PostForm("groupName") - if _, err := backend.CreateGroup(db, groupName); err != nil { - ShowError(c, err) + group := backend.Group{ + Name: c.PostForm("groupName"), + } + if result := db.Create(&group); result.Error != nil { + ShowError(c, result.Error) return } @@ -34,9 +36,16 @@ func UpdateGroup(c *gin.Context, db *gorm.DB) { ShowError(c, err) return } - groupName := c.PostForm("groupName") - if _, err := backend.UpdateGroup(db, id, groupName); err != nil { - ShowError(c, err) + + var group backend.Group + if result := db.First(&group, id); result.Error != nil { + ShowError(c, result.Error) + return + } + + group.Name = c.PostForm("groupName") + if result := db.Save(&group); result.Error != nil { + ShowError(c, result.Error) return } @@ -55,8 +64,8 @@ func DeleteGroup(c *gin.Context, db *gorm.DB) { return } - if err = backend.DeleteGroup(db, id); err != nil { - ShowError(c, err) + if result := db.Delete(&backend.Group{}, id); result.Error != nil { + ShowError(c, result.Error) return } diff --git a/views/index.go b/views/index.go index ac81923..d65d0e9 100644 --- a/views/index.go +++ b/views/index.go @@ -13,9 +13,14 @@ func ShowMainPage(c *gin.Context, db *gorm.DB) { } // Get a list of groups with links - groups, err := backend.GetGroups(db) - if err != nil { - ShowError(c, err) + var groups []backend.Group + result := db. + Model(&backend.Group{}). + Preload("Links"). + Find(&groups) + + if result.Error != nil { + ShowError(c, result.Error) return } diff --git a/views/links.go b/views/links.go index ad71408..038bbef 100644 --- a/views/links.go +++ b/views/links.go @@ -13,16 +13,19 @@ func CreateLink(c *gin.Context, db *gorm.DB) { return } - linkName := c.PostForm("linkName") - href := c.PostForm("href") groupID, err := strconv.ParseUint(c.PostForm("groupID"), 10, 32) if err != nil { ShowError(c, err) return } - if _, err = backend.CreateLink(db, linkName, href, groupID); err != nil { - ShowError(c, err) + link := backend.Link{ + Name: c.PostForm("linkName"), + Href: c.PostForm("href"), + GroupID: groupID, + } + if result := db.Create(&link); result.Error != nil { + ShowError(c, result.Error) return } @@ -40,14 +43,20 @@ func UpdateLink(c *gin.Context, db *gorm.DB) { ShowError(c, err) return } - linkName := c.PostForm("linkName") - href := c.PostForm("href") - if _, err = backend.UpdateLink(db, id, linkName, href); err != nil { + var link backend.Link + if result := db.First(&link, id); result.Error != nil { ShowError(c, err) return } + link.Name = c.PostForm("linkName") + link.Href = c.PostForm("href") + if result := db.Save(&link); result.Error != nil { + ShowError(c, result.Error) + return + } + // Redirect to settings. c.Redirect(http.StatusFound, "/settings") } @@ -63,8 +72,8 @@ func DeleteLink(c *gin.Context, db *gorm.DB) { return } - if err = backend.DeleteLink(db, id); err != nil { - ShowError(c, err) + if result := db.Delete(&backend.Link{}, id); result.Error != nil { + ShowError(c, result.Error) return } diff --git a/views/settings.go b/views/settings.go index 0f7cf1f..7d5ec72 100644 --- a/views/settings.go +++ b/views/settings.go @@ -13,9 +13,14 @@ func ShowSettings(c *gin.Context, db *gorm.DB) { } // Get a list of groups with links - groups, err := backend.GetGroups(db) - if err != nil { - ShowError(c, err) + var groups []backend.Group + result := db. + Model(&backend.Group{}). + Preload("Links"). + Find(&groups) + + if result.Error != nil { + ShowError(c, result.Error) return }