From 4da803d57c3e2cf8f4ce65c64abda0be32bfd684 Mon Sep 17 00:00:00 2001 From: Jay Date: Sun, 29 Sep 2019 14:46:01 +0000 Subject: [PATCH] add server dao --- database/impl/discord/init.go | 10 +++++++ database/impl/discord/server.go | 43 +++++++++++++++++++++++++++ database/impl/public/facebook.go | 4 +-- database/impl/public/instagram.go | 5 ++-- database/interfaces/discord/server.go | 11 +++++++ 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 database/impl/discord/init.go create mode 100644 database/impl/discord/server.go create mode 100644 database/interfaces/discord/server.go diff --git a/database/impl/discord/init.go b/database/impl/discord/init.go new file mode 100644 index 0000000..a05b7ae --- /dev/null +++ b/database/impl/discord/init.go @@ -0,0 +1,10 @@ +package discord + +import "github.com/jmoiron/sqlx" + +var x *sqlx.DB + +// Init - +func Init(db *sqlx.DB) { + x = db +} diff --git a/database/impl/discord/server.go b/database/impl/discord/server.go new file mode 100644 index 0000000..3b41aa7 --- /dev/null +++ b/database/impl/discord/server.go @@ -0,0 +1,43 @@ +package discord + +import ( + dsmodel "dorisbot/database/models/discord" + + sq "github.com/elgris/sqrl" +) + +// ServerImpl - +type ServerImpl struct{} + +// Create - +func (s ServerImpl) Create(server *dsmodel.Server) error { + query, args, err := sq.Insert(`"discord"."server"`).Columns("id", "name", "permission", "owner"). + Values(server.ID, server.Name, server.Permission, server.Owner). + Suffix("returning *"). + ToSql() + if err != nil { + return err + } + + query = x.Rebind(query) + err = x.Get(server, query, args...) + if err != nil { + return err + } + return nil +} + +// Delete - +func (s ServerImpl) Delete(id string) error { + query, args, err := sq.Delete(`"discord"."server"`).Where(sq.Eq{"id": id}).ToSql() + if err != nil { + return err + } + query = x.Rebind(query) + _, err = x.Exec(query, args...) + if err != nil { + return err + } + + return nil +} diff --git a/database/impl/public/facebook.go b/database/impl/public/facebook.go index 47533cf..b1bd020 100644 --- a/database/impl/public/facebook.go +++ b/database/impl/public/facebook.go @@ -43,7 +43,7 @@ func (p FacebookImpl) UpdatePost(fb *pubmodel.FacebookPage, postID string) (err // GetByID - func (p FacebookImpl) GetByID(id string) (fb pubmodel.FacebookPage, exists bool, err error) { exists = true - fb := pubmodel.FacebookPage{} + fb = pubmodel.FacebookPage{} query := ` select "id", "last_post", "ctime", "mtime" from "public"."facebook_page" @@ -106,7 +106,7 @@ func (p FacebookImpl) GetChannels(id string) (list []dsmodel.Channel, err error) ` err = x.Select(&list, query, id) if err != nil { - return err + return nil, err } return } diff --git a/database/impl/public/instagram.go b/database/impl/public/instagram.go index 19e7423..6f46ca0 100644 --- a/database/impl/public/instagram.go +++ b/database/impl/public/instagram.go @@ -4,6 +4,7 @@ import ( "database/sql" dsmodel "dorisbot/database/models/discord" pubmodel "dorisbot/database/models/public" + "errors" sq "github.com/elgris/sqrl" ) @@ -29,7 +30,7 @@ func (i InstagramImpl) Create(ig *pubmodel.Instagram) (err error) { // UpdatePost - func (i InstagramImpl) UpdatePost(ig *pubmodel.Instagram, postID string) (err error) { - query, args, err := sq.Update(`"public"."instagram"`).Set("last_post", postID).Set("mtime", sq.Expr("now()")).Where(sq.Eq{"id", ig.ID}).ToSql() + query, args, err := sq.Update(`"public"."instagram"`).Set("last_post", postID).Set("mtime", sq.Expr("now()")).Where(sq.Eq{"id": ig.ID}).ToSql() if err != nil { return err } @@ -53,7 +54,7 @@ func (i *InstagramImpl) GetByID(id string) (pubmodel.Instagram, bool, error) { err = x.Get(&ig, query, args...) if err != nil { - exists = true + exists := true if errors.Is(err, sql.ErrNoRows) { exists = false err = nil diff --git a/database/interfaces/discord/server.go b/database/interfaces/discord/server.go new file mode 100644 index 0000000..51e46ed --- /dev/null +++ b/database/interfaces/discord/server.go @@ -0,0 +1,11 @@ +package discord + +import ( + dsmodel "dorisbot/database/models/discord" +) + +// ServerDAO - +type ServerDAO interface { + Create(s *dsmodel.Server) error + Delete(id string) error +}