change database scheema
This commit is contained in:
parent
dd09bfda6e
commit
462804ed07
26
main.go
26
main.go
@ -2,14 +2,11 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"dorisbot/models"
|
"dorisbot/models"
|
||||||
discordmodel "dorisbot/models/discord"
|
|
||||||
"dorisbot/pkg/config"
|
"dorisbot/pkg/config"
|
||||||
"dorisbot/pkg/options"
|
"dorisbot/pkg/options"
|
||||||
"dorisbot/pkg/svc/discord"
|
"dorisbot/pkg/svc/discord"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"git.trj.tw/golang/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -34,6 +31,15 @@ func main() {
|
|||||||
|
|
||||||
conf := config.GetConfig()
|
conf := config.GetConfig()
|
||||||
|
|
||||||
|
_, err = models.NewDB(conf.Database)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
err = models.Ping()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
client, err := discord.NewClient(conf.Discord.BotToken)
|
client, err := discord.NewClient(conf.Discord.BotToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
@ -45,19 +51,5 @@ func main() {
|
|||||||
}
|
}
|
||||||
defer client.Close()
|
defer client.Close()
|
||||||
|
|
||||||
_, err = models.NewDB(conf.Database)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
list, err := discordmodel.GetDiscordServerList()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
log.Println("server list ::: ", list)
|
|
||||||
for _, it := range list {
|
|
||||||
log.Println(utils.ToMap(it))
|
|
||||||
}
|
|
||||||
|
|
||||||
<-cc
|
<-cc
|
||||||
}
|
}
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
package commands
|
|
||||||
|
|
||||||
import (
|
|
||||||
"dorisbot/models"
|
|
||||||
"errors"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// CommandsModel -
|
|
||||||
type CommandsModel struct {
|
|
||||||
CMD string `db:"cmd"`
|
|
||||||
Server string `db:"server"`
|
|
||||||
RequireManage bool `db:"require_manage"`
|
|
||||||
RequireInit bool `db:"require_init"`
|
|
||||||
Value string `db:"value"`
|
|
||||||
Ctime time.Time `db:"ctime"`
|
|
||||||
Mtime time.Time `db:"mtime"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewCommand -
|
|
||||||
func NewCommand(cmd, server, value string, requireManage, requireInit bool) (c *CommandsModel, err error) {
|
|
||||||
if len(cmd) == 0 || len(server) == 0 || len(value) == 0 {
|
|
||||||
return nil, errors.New("cmd, server or value is empty")
|
|
||||||
}
|
|
||||||
|
|
||||||
c = &CommandsModel{
|
|
||||||
CMD: cmd,
|
|
||||||
Server: server,
|
|
||||||
Value: value,
|
|
||||||
RequireInit: requireInit,
|
|
||||||
RequireManage: requireManage,
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write -
|
|
||||||
func (p *CommandsModel) Write() (err error) {
|
|
||||||
db := models.GetConn()
|
|
||||||
query := `insert into "commands" ("cmd", "server", "value", "require_init", "require_manage") values
|
|
||||||
(:cmd, :server, :value, :require_init, :require_manage) returning *`
|
|
||||||
row, err := db.NamedQuery(query, p)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
err = row.StructScan(p)
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
@ -2,7 +2,7 @@ package discord
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"dorisbot/models"
|
"dorisbot/models"
|
||||||
cmdmodel "dorisbot/models/commands"
|
pubmodel "dorisbot/models/public"
|
||||||
"errors"
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -52,7 +52,7 @@ func NewDiscordServer(id, name string, permission int) (ds *DiscordServerModel,
|
|||||||
// GetDiscordServerList -
|
// GetDiscordServerList -
|
||||||
func GetDiscordServerList() (list []*DiscordServerModel, err error) {
|
func GetDiscordServerList() (list []*DiscordServerModel, err error) {
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `select "id", "name", "permission", "owner", "ctime", "mtime" from discord_server`
|
query := `select "id", "name", "permission", "owner", "ctime", "mtime" from discord.server`
|
||||||
err = db.Select(&list, query)
|
err = db.Select(&list, query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -67,7 +67,7 @@ func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) {
|
|||||||
}
|
}
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
ds = &DiscordServerModel{}
|
ds = &DiscordServerModel{}
|
||||||
query := `select "id", "name", "permission", "owner", "ctime", "mtime" from discord_server where "id" = $1`
|
query := `select "id", "name", "permission", "owner", "ctime", "mtime" from discord.server where "id" = $1`
|
||||||
err = db.Get(ds, query, id)
|
err = db.Get(ds, query, id)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) {
|
|||||||
// Write DiscordServer data to database
|
// Write DiscordServer data to database
|
||||||
func (p *DiscordServerModel) Write() error {
|
func (p *DiscordServerModel) Write() error {
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `insert into discord_server ("id", "name", "permission", "owner") values (:id, :name, :permission, :owner) returning *`
|
query := `insert into discord.server ("id", "name", "permission", "owner") values (:id, :name, :permission, :owner) returning *`
|
||||||
row, err := db.NamedQuery(query, p)
|
row, err := db.NamedQuery(query, p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -93,7 +93,7 @@ func (p *DiscordServerModel) ChangeName(name string) (err error) {
|
|||||||
return errors.New("name is empty")
|
return errors.New("name is empty")
|
||||||
}
|
}
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `update discord_server set "name" = $1, "mtime" = now() where "id" = $2`
|
query := `update discord.server set "name" = $1, "mtime" = now() where "id" = $2`
|
||||||
_, err = db.Exec(query, name, p.ID)
|
_, err = db.Exec(query, name, p.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -105,7 +105,7 @@ func (p *DiscordServerModel) ChangeName(name string) (err error) {
|
|||||||
// GetChannelList -
|
// GetChannelList -
|
||||||
func (p *DiscordServerModel) GetChannelList() (list []*DiscordChannelModel, err error) {
|
func (p *DiscordServerModel) GetChannelList() (list []*DiscordChannelModel, err error) {
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `select "id", "server", "enable_cmd", "enable_notify", "ctime", "mtime" from discord_channel where "server" = $1`
|
query := `select "id", "server", "enable_cmd", "enable_notify", "ctime", "mtime" from discord.channel where "server" = $1`
|
||||||
err = db.Select(&list, query, p.ID)
|
err = db.Select(&list, query, p.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -120,15 +120,15 @@ func (p *DiscordServerModel) GetChannel(id string) (ch *DiscordChannelModel, err
|
|||||||
}
|
}
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
ch = &DiscordChannelModel{}
|
ch = &DiscordChannelModel{}
|
||||||
query := `select "id", "server", "enable_cmd", "enable_notify", "ctime", "mtime" from discord_channel where "id" = $1 and "server" = $2`
|
query := `select "id", "server", "enable_cmd", "enable_notify", "ctime", "mtime" from discord.channel where "id" = $1 and "server" = $2`
|
||||||
err = db.Get(ch, query, id, p.ID)
|
err = db.Get(ch, query, id, p.ID)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCommandList -
|
// GetCommandList -
|
||||||
func (p *DiscordServerModel) GetCommandList() (cmds []*cmdmodel.CommandsModel, err error) {
|
func (p *DiscordServerModel) GetCommandList() (cmds []*pubmodel.CommandModel, err error) {
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `select "cmd", "server", "value", "require_init", "require_manage", "ctime", "mtime" from "commands" where "server" = $1`
|
query := `select "cmd", "server", "value", "require_init", "require_manage", "ctime", "mtime" from public."command" where "server" = $1`
|
||||||
err = db.Select(&cmds, query, p.ID)
|
err = db.Select(&cmds, query, p.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -139,7 +139,7 @@ func (p *DiscordServerModel) GetCommandList() (cmds []*cmdmodel.CommandsModel, e
|
|||||||
// GetRoleList -
|
// GetRoleList -
|
||||||
func (p *DiscordServerModel) GetRoleList() (list []*DiscordManageRoleModel, err error) {
|
func (p *DiscordServerModel) GetRoleList() (list []*DiscordManageRoleModel, err error) {
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `select "server", "role_id", "role_name", "ctime", "mtime" from "discord_manage_role" where "server" = $1`
|
query := `select "server", "role_id", "role_name", "ctime", "mtime" from "discord"."manage_role" where "server" = $1`
|
||||||
err = db.Select(&list, query, p.ID)
|
err = db.Select(&list, query, p.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -154,7 +154,7 @@ func (p *DiscordServerModel) GetRole(roleID string) (role *DiscordManageRoleMode
|
|||||||
}
|
}
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
role = &DiscordManageRoleModel{}
|
role = &DiscordManageRoleModel{}
|
||||||
query := `select "server", "role_id", "role_name", "ctime", "mtime" from "discord_manage_role" where "server" = $1 and "rold_id" = $2`
|
query := `select "server", "role_id", "role_name", "ctime", "mtime" from "discord"."manage_role" where "server" = $1 and "rold_id" = $2`
|
||||||
err = db.Get(role, query, p.ID, roleID)
|
err = db.Get(role, query, p.ID, roleID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -165,7 +165,7 @@ func (p *DiscordServerModel) GetRole(roleID string) (role *DiscordManageRoleMode
|
|||||||
// AddChannel -
|
// AddChannel -
|
||||||
func (p *DiscordServerModel) AddChannel(id string, enableCMD, enableNotify bool) (err error) {
|
func (p *DiscordServerModel) AddChannel(id string, enableCMD, enableNotify bool) (err error) {
|
||||||
db := models.GetConn()
|
db := models.GetConn()
|
||||||
query := `insert into discord_channel ("id", "server", "enable_cmd", "enable_notify", "ctime", "mtime") values
|
query := `insert into discord.channel ("id", "server", "enable_cmd", "enable_notify", "ctime", "mtime") values
|
||||||
($1, $2, $3, $4, now(), now())`
|
($1, $2, $3, $4, now(), now())`
|
||||||
_, err = db.Exec(query, id, p.ID, enableCMD, enableNotify)
|
_, err = db.Exec(query, id, p.ID, enableCMD, enableNotify)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
128
models/public/command.go
Normal file
128
models/public/command.go
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
package public
|
||||||
|
|
||||||
|
import (
|
||||||
|
"dorisbot/models"
|
||||||
|
"errors"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CommandsModel -
|
||||||
|
type CommandModel struct {
|
||||||
|
Key string `db:"key"`
|
||||||
|
Platform string `db:"platform"`
|
||||||
|
Binding string `db:"binding"`
|
||||||
|
RequireManage bool `db:"require_manage"`
|
||||||
|
RequireInit bool `db:"require_init"`
|
||||||
|
Value string `db:"value"`
|
||||||
|
Ctime time.Time `db:"ctime"`
|
||||||
|
Mtime time.Time `db:"mtime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCommand -
|
||||||
|
func NewCommand(key, value, platform, binding string, requireManage, requireInit bool) (c *CommandModel, err error) {
|
||||||
|
if len(key) == 0 || len(value) == 0 {
|
||||||
|
return nil, errors.New("cmd, server or value is empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
c = &CommandModel{
|
||||||
|
Key: key,
|
||||||
|
Value: value,
|
||||||
|
Platform: platform,
|
||||||
|
Binding: binding,
|
||||||
|
RequireInit: requireInit,
|
||||||
|
RequireManage: requireManage,
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommandListByPlatformBinding -
|
||||||
|
func GetCommandListByPlatformBinding(binding, platform string) (list []*CommandModel, err error) {
|
||||||
|
if len(binding) == 0 || len(platform) == 0 {
|
||||||
|
return nil, errors.New("server id or platform is empty")
|
||||||
|
}
|
||||||
|
db := models.GetConn()
|
||||||
|
query := `select "key", "platform", "binding", "value", "require_manage", "require_init", "ctime", "mtime"
|
||||||
|
from "command"
|
||||||
|
where
|
||||||
|
"binding" = $1
|
||||||
|
and "platform" = $2`
|
||||||
|
err = db.Select(&list, query, binding, platform)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommandByPlatformBinding -
|
||||||
|
func GetCommandByPlatformBinding(key, binding, platform string) (list []*CommandModel, err error) {
|
||||||
|
if len(key) == 0 || len(binding) == 0 || len(platform) == 0 {
|
||||||
|
return nil, errors.New("key, server id or platform is empty")
|
||||||
|
}
|
||||||
|
db := models.GetConn()
|
||||||
|
query := `select "key", "platform", "binding", "value", "require_manage", "require_init", "ctime", "mtime"
|
||||||
|
from "command"
|
||||||
|
where
|
||||||
|
"key" = $1
|
||||||
|
and (
|
||||||
|
("binding" = $2 and "platform" = $3)
|
||||||
|
or ("binding" = '' and "platform" = '')
|
||||||
|
)
|
||||||
|
order by "binding" desc`
|
||||||
|
err = db.Select(&list, query, key, binding, platform)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommandByKey -
|
||||||
|
func GetCommandByKey(key string) (list []*CommandModel, err error) {
|
||||||
|
if len(key) == 0 {
|
||||||
|
return nil, errors.New("key is empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
db := models.GetConn()
|
||||||
|
query := `select "key", "platform", "binding", "value", "require_manage", "require_init", "ctime", "mtime"
|
||||||
|
from "command"
|
||||||
|
where
|
||||||
|
"key" = $1`
|
||||||
|
err = db.Select(&list, query, key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetGlobalCommand -
|
||||||
|
func GetGlobalCommand(key string) (list []*CommandModel, err error) {
|
||||||
|
if len(key) == 0 {
|
||||||
|
return nil, errors.New("key is empty")
|
||||||
|
}
|
||||||
|
db := models.GetConn()
|
||||||
|
query := `select "cmd", "server", "value", "require_manage", "require_init", "ctime", "mtime"
|
||||||
|
from "command"
|
||||||
|
where
|
||||||
|
"cmd" = $1
|
||||||
|
and "platform" = ''
|
||||||
|
and "binding" = ''`
|
||||||
|
err = db.Select(&list, query, key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write -
|
||||||
|
func (p *CommandModel) Write() (err error) {
|
||||||
|
db := models.GetConn()
|
||||||
|
query := `insert into "command" ("key", "paltform", "binding", "value", "require_init", "require_manage") values
|
||||||
|
(:key, :platform, :binding, :value, :require_init, :require_manage) returning *`
|
||||||
|
row, err := db.NamedQuery(query, p)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = row.StructScan(p)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
@ -34,6 +34,7 @@ func messageCreateEvt(s *discordgo.Session, evt *discordgo.MessageCreate) {
|
|||||||
if !keyword && server == nil {
|
if !keyword && server == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func guildMemberAddEvt(s *discordgo.Session, evt *discordgo.GuildMemberAdd) {}
|
func guildMemberAddEvt(s *discordgo.Session, evt *discordgo.GuildMemberAdd) {}
|
||||||
|
Loading…
Reference in New Issue
Block a user