From 98edfca8397a3317c8fcc56dccae1f67e0db229b Mon Sep 17 00:00:00 2001 From: DictumMortuum Date: Wed, 20 Mar 2024 19:38:58 +0200 Subject: [PATCH] [extapi] added books --- cmd/servus-extapi/main.go | 3 +- pkg/model/bgstats.go | 3 +- pkg/model/bgstatsgames.go | 3 +- pkg/model/bgstatslocations.go | 3 +- pkg/model/bgstatsplayers.go | 3 +- pkg/model/bgstatsplays.go | 3 +- pkg/model/boardgameprices.go | 2 +- pkg/model/boardgames.go | 2 +- pkg/model/books.go | 85 +++++++++++++++++++++++++++++++++++ pkg/model/ignorednames.go | 3 +- pkg/model/ignoredprices.go | 3 +- pkg/model/location.go | 2 +- pkg/model/players.go | 3 +- pkg/model/plays.go | 2 +- pkg/model/stats.go | 2 +- pkg/model/stores.go | 2 +- pkg/model/tableparticipant.go | 2 +- pkg/model/youtubedl.go | 2 +- 18 files changed, 111 insertions(+), 17 deletions(-) create mode 100644 pkg/model/books.go diff --git a/cmd/servus-extapi/main.go b/cmd/servus-extapi/main.go index ac83b37..569c9bf 100644 --- a/cmd/servus-extapi/main.go +++ b/cmd/servus-extapi/main.go @@ -12,7 +12,7 @@ import ( func Version(c *gin.Context) { rs := map[string]any{ - "version": "v0.0.15", + "version": "v0.0.16", } c.AbortWithStatusJSON(200, rs) } @@ -46,6 +46,7 @@ func main() { adapter.RaRoute(g, "youtubedl", model.YoutubeDL{}) adapter.RaRoute(g, "tables", model.Table{}) adapter.RaRoute(g, "tableparticipants", model.TableParticipant{}) + adapter.RaRoute(g, "books", model.Book{}) g.POST("/bgstatsupload", adapter.G(CreateBGStats)) diff --git a/pkg/model/bgstats.go b/pkg/model/bgstats.go index dcf8b4b..93670dd 100644 --- a/pkg/model/bgstats.go +++ b/pkg/model/bgstats.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "github.com/DictumMortuum/servus/pkg/models" "gorm.io/gorm" ) @@ -80,7 +81,7 @@ func (obj BGStat) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&BGStat{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/bgstatsgames.go b/pkg/model/bgstatsgames.go index b2cbf0a..af3efac 100644 --- a/pkg/model/bgstatsgames.go +++ b/pkg/model/bgstatsgames.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "github.com/DictumMortuum/servus/pkg/models" "gorm.io/gorm" ) @@ -81,7 +82,7 @@ func (obj BGStatsGame) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&BGStatsGame{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/bgstatslocations.go b/pkg/model/bgstatslocations.go index f1d8d3d..d36ae2f 100644 --- a/pkg/model/bgstatslocations.go +++ b/pkg/model/bgstatslocations.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "github.com/DictumMortuum/servus/pkg/models" "gorm.io/gorm" ) @@ -77,7 +78,7 @@ func (obj BGStatsLocation) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&BGStatsLocation{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/bgstatsplayers.go b/pkg/model/bgstatsplayers.go index eaf0146..1c7d56f 100644 --- a/pkg/model/bgstatsplayers.go +++ b/pkg/model/bgstatsplayers.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "github.com/DictumMortuum/servus/pkg/models" "gorm.io/gorm" ) @@ -79,7 +80,7 @@ func (obj BGStatsPlayer) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&BGStatsPlayer{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/bgstatsplays.go b/pkg/model/bgstatsplays.go index c00920e..000c1e4 100644 --- a/pkg/model/bgstatsplays.go +++ b/pkg/model/bgstatsplays.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "github.com/DictumMortuum/servus/pkg/models" "gorm.io/gorm" "gorm.io/gorm/clause" @@ -88,7 +89,7 @@ func (obj BGStatsPlay) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&BGStatsPlay{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/boardgameprices.go b/pkg/model/boardgameprices.go index c1da260..8df0006 100644 --- a/pkg/model/boardgameprices.go +++ b/pkg/model/boardgameprices.go @@ -84,7 +84,7 @@ func (obj BoardgamePrice) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&BoardgamePrice{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/boardgames.go b/pkg/model/boardgames.go index b5e17dc..e2dc107 100644 --- a/pkg/model/boardgames.go +++ b/pkg/model/boardgames.go @@ -161,7 +161,7 @@ func (obj Boardgame) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&Boardgame{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/books.go b/pkg/model/books.go new file mode 100644 index 0000000..08cf13a --- /dev/null +++ b/pkg/model/books.go @@ -0,0 +1,85 @@ +package model + +import ( + "encoding/json" + + "gorm.io/gorm" +) + +type Book struct { + Id int64 `gorm:"primaryKey" json:"id,omitempty"` + Category string `json:"category,omitempty"` + Name string `json:"name,omitempty"` + ISBN string `json:"isbn,omitempty"` + Publisher string `json:"publisher,omitempty"` + Translation string `json:"translation,omitempty"` + Writer string `json:"writer,omitempty"` +} + +func (Book) TableName() string { + return "tbooks" +} + +func (Book) DefaultFilter(db *gorm.DB) *gorm.DB { + return db +} + +func (c Book) List(db *gorm.DB, scopes ...func(*gorm.DB) *gorm.DB) (any, error) { + var data []Book + rs := db.Scopes(scopes...).Scopes(c.DefaultFilter).Find(&data) + return data, rs.Error +} + +func (Book) Get(db *gorm.DB, id int64) (any, error) { + var data Book + rs := db.First(&data, id) + return data, rs.Error +} + +func (obj Book) Update(db *gorm.DB, id int64, body []byte) (any, error) { + model := Book{ + Id: id, + } + + var payload map[string]any + err := json.Unmarshal(body, &payload) + if err != nil { + return nil, err + } + + rs := db.Model(&model).Save(payload) + if rs.Error != nil { + return nil, err + } + + return obj.Get(db, id) +} + +func (Book) Create(db *gorm.DB, body []byte) (any, error) { + var payload Book + err := json.Unmarshal(body, &payload) + if err != nil { + return nil, err + } + + rs := db.Create(&payload) + if rs.Error != nil { + return nil, err + } + + return payload, nil +} + +func (obj Book) Delete(db *gorm.DB, id int64) (any, error) { + data, err := obj.Get(db, id) + if err != nil { + return nil, err + } + + rs := db.Delete(&IgnoredName{}, id) + if rs.Error != nil { + return nil, rs.Error + } + + return data, nil +} diff --git a/pkg/model/ignorednames.go b/pkg/model/ignorednames.go index 2cb197c..f2ca456 100644 --- a/pkg/model/ignorednames.go +++ b/pkg/model/ignorednames.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "gorm.io/gorm" ) @@ -71,7 +72,7 @@ func (obj IgnoredName) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&IgnoredName{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/ignoredprices.go b/pkg/model/ignoredprices.go index 2dd7bac..2e67378 100644 --- a/pkg/model/ignoredprices.go +++ b/pkg/model/ignoredprices.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "gorm.io/gorm" ) @@ -72,7 +73,7 @@ func (obj IgnoredPrice) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&IgnoredPrice{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/location.go b/pkg/model/location.go index dd07c33..9aa79b6 100644 --- a/pkg/model/location.go +++ b/pkg/model/location.go @@ -73,7 +73,7 @@ func (obj Location) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&Location{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/players.go b/pkg/model/players.go index 8cd3fc8..683e940 100644 --- a/pkg/model/players.go +++ b/pkg/model/players.go @@ -2,6 +2,7 @@ package model import ( "encoding/json" + "gorm.io/gorm" ) @@ -77,7 +78,7 @@ func (obj Player) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&Player{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/plays.go b/pkg/model/plays.go index 2ff2fc5..f49fae8 100644 --- a/pkg/model/plays.go +++ b/pkg/model/plays.go @@ -210,7 +210,7 @@ func (obj Play) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&Play{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/stats.go b/pkg/model/stats.go index c9b4f91..1d62983 100644 --- a/pkg/model/stats.go +++ b/pkg/model/stats.go @@ -77,7 +77,7 @@ func (obj Stat) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&Stat{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/stores.go b/pkg/model/stores.go index 7bfae7e..6b4cd0c 100644 --- a/pkg/model/stores.go +++ b/pkg/model/stores.go @@ -75,7 +75,7 @@ func (obj Store) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&Store{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/tableparticipant.go b/pkg/model/tableparticipant.go index 7088dd4..28bacaa 100644 --- a/pkg/model/tableparticipant.go +++ b/pkg/model/tableparticipant.go @@ -77,7 +77,7 @@ func (obj TableParticipant) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&TableParticipant{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error } diff --git a/pkg/model/youtubedl.go b/pkg/model/youtubedl.go index effc05a..d6f3f98 100644 --- a/pkg/model/youtubedl.go +++ b/pkg/model/youtubedl.go @@ -74,7 +74,7 @@ func (obj YoutubeDL) Delete(db *gorm.DB, id int64) (any, error) { } rs := db.Delete(&YoutubeDL{}, id) - if err != nil { + if rs.Error != nil { return nil, rs.Error }