From 1e2026e21a80e85b229627a82682021bbfad76f5 Mon Sep 17 00:00:00 2001 From: Jay Date: Fri, 28 Jun 2019 15:11:58 +0000 Subject: [PATCH] update discord model --- .gitignore | 1 + models/discord/discord.go | 113 ++++++++++++++++++++++++++++++++++++++ models/models.go | 3 + 3 files changed, 117 insertions(+) create mode 100644 .gitignore create mode 100644 models/discord/discord.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0ec596 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/config.yml diff --git a/models/discord/discord.go b/models/discord/discord.go new file mode 100644 index 0000000..8e5527f --- /dev/null +++ b/models/discord/discord.go @@ -0,0 +1,113 @@ +package discord + +import ( + "dorisbot/models" + "errors" + "time" +) + +// DiscordServerModel - +type DiscordServerModel struct { + ID string `db:"id"` + Name string `db:"name"` + Permission int `db:"permission"` + Ctime time.Time `db:"ctime"` + Mtime time.Time `db:"mtime"` +} + +// DiscordChannelModel - +type DiscordChannelModel struct { + ID string `db:"id"` + Server string `db:"server"` + EnableCMD bool `db:"enable_cmd"` + EnableNotify bool `db:"enable_notify"` + Ctime time.Time `db:"ctime"` + Mtime time.Time `db:"mtime"` +} + +// NewDiscordServer - +func NewDiscordServer(id, name string, permission int) (ds *DiscordServerModel, err error) { + if len(id) == 0 || len(name) == 0 { + return nil, errors.New("id or name empty") + } + ds = &DiscordServerModel{ + ID: id, + Name: name, + Permission: permission, + } + return +} + +// GetDiscordServerByID - +func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) { + if len(id) == 0 { + return nil, errors.New("id is empty") + } + db := models.GetConn() + ds = &DiscordServerModel{} + query := `select "id", "name", "permission", "ctime", "mtime" from discord_server where "id" = $1` + err = db.Get(ds, query, id) + return +} + +// Write DiscordServer data to database +func (p *DiscordServerModel) Write() error { + db := models.GetConn() + query := `insert into discord_server ("id", "name", "permission") values (:id, :name, :permission) returning *` + row, err := db.NamedQuery(query, p) + if err != nil { + return err + } + err = row.StructScan(p) + if err != nil { + return err + } + return nil +} + +// ChangeName - change discord server name +func (p *DiscordServerModel) ChangeName(name string) (err error) { + if len(name) == 0 { + return errors.New("name is empty") + } + db := models.GetConn() + query := `update discord_server set "name" = $1, "mtime" = now() where "id" = $2` + _, err = db.Exec(query, name, p.ID) + if err != nil { + return err + } + p.Name = name + return +} + +// GetChannelList - +func (p *DiscordServerModel) GetChannelList() (list []*DiscordChannelModel, err error) { + db := models.GetConn() + query := `select "id", "server", "enable_cmd", "enable_notify", "ctime", "mtime" from discord_channel where "server" = $1` + err = db.Select(&list, query, p.ID) + if err != nil { + return nil, err + } + return +} + +// GetChannel - +func (p *DiscordServerModel) GetChannel(id string) (ch *DiscordChannelModel, err error) { + if len(id) == 0 { + return nil, errors.New("id is empty") + } + // TODO: not finish + return +} + +// AddChannel - +func (p *DiscordServerModel) AddChannel(id string, enableCMD, enableNotify bool) (err error) { + db := models.GetConn() + query := `insert into discord_channel ("id", "server", "enable_cmd", "enable_notify", "ctime", "mtime") values + ($1, $2, $3, $4, now(), now())` + _, err = db.Exec(query, id, p.ID, enableCMD, enableNotify) + if err != nil { + return err + } + return +} diff --git a/models/models.go b/models/models.go index 79c709a..aa0eefc 100644 --- a/models/models.go +++ b/models/models.go @@ -45,3 +45,6 @@ func Ping() error { } return x.Ping() } + +// GetConn database connection +func GetConn() *sqlx.DB { return x }