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 (
 | 
			
		||||
	"dorisbot/models"
 | 
			
		||||
	discordmodel "dorisbot/models/discord"
 | 
			
		||||
	"dorisbot/pkg/config"
 | 
			
		||||
	"dorisbot/pkg/options"
 | 
			
		||||
	"dorisbot/pkg/svc/discord"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
 | 
			
		||||
	"git.trj.tw/golang/utils"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
@ -34,6 +31,15 @@ func main() {
 | 
			
		||||
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
@ -45,19 +51,5 @@ func main() {
 | 
			
		||||
	}
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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 (
 | 
			
		||||
	"dorisbot/models"
 | 
			
		||||
	cmdmodel "dorisbot/models/commands"
 | 
			
		||||
	pubmodel "dorisbot/models/public"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
@ -52,7 +52,7 @@ func NewDiscordServer(id, name string, permission int) (ds *DiscordServerModel,
 | 
			
		||||
// GetDiscordServerList -
 | 
			
		||||
func GetDiscordServerList() (list []*DiscordServerModel, err error) {
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@ -67,7 +67,7 @@ func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) {
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	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)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
@ -75,7 +75,7 @@ func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) {
 | 
			
		||||
// Write DiscordServer data to database
 | 
			
		||||
func (p *DiscordServerModel) Write() error {
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@ -93,7 +93,7 @@ func (p *DiscordServerModel) ChangeName(name string) (err error) {
 | 
			
		||||
		return errors.New("name is empty")
 | 
			
		||||
	}
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@ -105,7 +105,7 @@ func (p *DiscordServerModel) ChangeName(name string) (err error) {
 | 
			
		||||
// 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`
 | 
			
		||||
	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
 | 
			
		||||
@ -120,15 +120,15 @@ func (p *DiscordServerModel) GetChannel(id string) (ch *DiscordChannelModel, err
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	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)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetCommandList -
 | 
			
		||||
func (p *DiscordServerModel) GetCommandList() (cmds []*cmdmodel.CommandsModel, err error) {
 | 
			
		||||
func (p *DiscordServerModel) GetCommandList() (cmds []*pubmodel.CommandModel, err error) {
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@ -139,7 +139,7 @@ func (p *DiscordServerModel) GetCommandList() (cmds []*cmdmodel.CommandsModel, e
 | 
			
		||||
// GetRoleList -
 | 
			
		||||
func (p *DiscordServerModel) GetRoleList() (list []*DiscordManageRoleModel, err error) {
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@ -154,7 +154,7 @@ func (p *DiscordServerModel) GetRole(roleID string) (role *DiscordManageRoleMode
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	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)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@ -165,7 +165,7 @@ func (p *DiscordServerModel) GetRole(roleID string) (role *DiscordManageRoleMode
 | 
			
		||||
// 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 
 | 
			
		||||
	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 {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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 {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func guildMemberAddEvt(s *discordgo.Session, evt *discordgo.GuildMemberAdd) {}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user