update
This commit is contained in:
		
							parent
							
								
									e8b918f3f0
								
							
						
					
					
						commit
						c74b8f8e4d
					
				
							
								
								
									
										66
									
								
								models/discord/channel.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								models/discord/channel.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
			
		||||
package discord
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"dorisbot/models"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ChannelModel -
 | 
			
		||||
type ChannelModel 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"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewChannel -
 | 
			
		||||
func NewChannel(id, server string, enableCMD, enableNotify bool) (ch *ChannelModel, err error) {
 | 
			
		||||
	if len(id) == 0 || len(server) == 0 {
 | 
			
		||||
		return nil, errors.New("id or server is empty")
 | 
			
		||||
	}
 | 
			
		||||
	ch = &ChannelModel{
 | 
			
		||||
		ID:           id,
 | 
			
		||||
		Server:       server,
 | 
			
		||||
		EnableCMD:    enableCMD,
 | 
			
		||||
		EnableNotify: enableNotify,
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Write -
 | 
			
		||||
func (p *ChannelModel) Write() (err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `insert into "discord"."channel" (id, server, enable_cmd, enable_notify) values
 | 
			
		||||
		(:id, :server, :enable_cmd, :enable_notify) returning *`
 | 
			
		||||
	rows, err := db.NamedQuery(query, p)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer rows.Close()
 | 
			
		||||
 | 
			
		||||
	if rows.Next() {
 | 
			
		||||
		err = rows.StructScan(p)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetCMDState -
 | 
			
		||||
func (p *ChannelModel) SetCMDState(state bool) (err error) {
 | 
			
		||||
	if state == p.EnableCMD {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `update "discord"."channel" set enable_cmd = $1, mtime = now() where id = $2`
 | 
			
		||||
	_, err = db.Exec(query, state, p.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	p.EnableCMD = state
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
@ -8,8 +8,8 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DiscordServerModel -
 | 
			
		||||
type DiscordServerModel struct {
 | 
			
		||||
// ServerModel -
 | 
			
		||||
type ServerModel struct {
 | 
			
		||||
	ID         string    `db:"id"`
 | 
			
		||||
	Name       string    `db:"name"`
 | 
			
		||||
	Permission int       `db:"permission"`
 | 
			
		||||
@ -18,18 +18,8 @@ type DiscordServerModel struct {
 | 
			
		||||
	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"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DiscordManageRoleModel -
 | 
			
		||||
type DiscordManageRoleModel struct {
 | 
			
		||||
// ManageRoleModel -
 | 
			
		||||
type ManageRoleModel struct {
 | 
			
		||||
	Server   string    `db:"server"`
 | 
			
		||||
	RoleID   string    `db:"role_id"`
 | 
			
		||||
	RoleName string    `db:"role_name"`
 | 
			
		||||
@ -37,12 +27,12 @@ type DiscordManageRoleModel struct {
 | 
			
		||||
	Mtime    time.Time `db:"mtime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewDiscordServer -
 | 
			
		||||
func NewDiscordServer(id, name string, permission int) (ds *DiscordServerModel, err error) {
 | 
			
		||||
// NewServer -
 | 
			
		||||
func NewServer(id, name string, permission int) (ds *ServerModel, err error) {
 | 
			
		||||
	if len(id) == 0 || len(name) == 0 {
 | 
			
		||||
		return nil, errors.New("id or name empty")
 | 
			
		||||
	}
 | 
			
		||||
	ds = &DiscordServerModel{
 | 
			
		||||
	ds = &ServerModel{
 | 
			
		||||
		ID:         id,
 | 
			
		||||
		Name:       name,
 | 
			
		||||
		Permission: permission,
 | 
			
		||||
@ -50,8 +40,8 @@ func NewDiscordServer(id, name string, permission int) (ds *DiscordServerModel,
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetDiscordServerList -
 | 
			
		||||
func GetDiscordServerList() (list []*DiscordServerModel, err error) {
 | 
			
		||||
// GetServerList -
 | 
			
		||||
func GetServerList() (list []*ServerModel, err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `select "id", "name", "permission", "owner", "ctime", "mtime" from discord.server`
 | 
			
		||||
	err = db.Select(&list, query)
 | 
			
		||||
@ -61,13 +51,13 @@ func GetDiscordServerList() (list []*DiscordServerModel, err error) {
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetDiscordServerByID -
 | 
			
		||||
func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) {
 | 
			
		||||
// GetServerByID -
 | 
			
		||||
func GetServerByID(id string) (ds *ServerModel, err error) {
 | 
			
		||||
	if len(id) == 0 {
 | 
			
		||||
		return nil, errors.New("id is empty")
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	ds = &DiscordServerModel{}
 | 
			
		||||
	ds = &ServerModel{}
 | 
			
		||||
	query := `select "id", "name", "permission", "owner", "ctime", "mtime" from discord.server where "id" = $1`
 | 
			
		||||
	err = db.Get(ds, query, id)
 | 
			
		||||
	if err == sql.ErrNoRows {
 | 
			
		||||
@ -76,24 +66,27 @@ func GetDiscordServerByID(id string) (ds *DiscordServerModel, err error) {
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Write DiscordServer data to database
 | 
			
		||||
func (p *DiscordServerModel) Write() error {
 | 
			
		||||
// Write Server data to database
 | 
			
		||||
func (p *ServerModel) Write() error {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	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
 | 
			
		||||
	}
 | 
			
		||||
	row.Next()
 | 
			
		||||
	defer row.Close()
 | 
			
		||||
 | 
			
		||||
	if row.Next() {
 | 
			
		||||
		err = row.StructScan(p)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ChangeName - change discord server name
 | 
			
		||||
func (p *DiscordServerModel) ChangeName(name string) (err error) {
 | 
			
		||||
func (p *ServerModel) ChangeName(name string) (err error) {
 | 
			
		||||
	if len(name) == 0 {
 | 
			
		||||
		return errors.New("name is empty")
 | 
			
		||||
	}
 | 
			
		||||
@ -108,7 +101,7 @@ func (p *DiscordServerModel) ChangeName(name string) (err error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetChannelList -
 | 
			
		||||
func (p *DiscordServerModel) GetChannelList() (list []*DiscordChannelModel, err error) {
 | 
			
		||||
func (p *ServerModel) GetChannelList() (list []*ChannelModel, 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)
 | 
			
		||||
@ -119,19 +112,19 @@ func (p *DiscordServerModel) GetChannelList() (list []*DiscordChannelModel, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetChannel -
 | 
			
		||||
func (p *DiscordServerModel) GetChannel(id string) (ch *DiscordChannelModel, err error) {
 | 
			
		||||
func (p *ServerModel) GetChannel(id string) (ch *ChannelModel, err error) {
 | 
			
		||||
	if len(id) == 0 {
 | 
			
		||||
		return nil, errors.New("id is empty")
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	ch = &DiscordChannelModel{}
 | 
			
		||||
	ch = &ChannelModel{}
 | 
			
		||||
	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 []*pubmodel.CommandModel, err error) {
 | 
			
		||||
func (p *ServerModel) GetCommandList() (cmds []*pubmodel.CommandModel, err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `select "cmd", "server", "value", "require_init", "require_manage", "ctime", "mtime" from public."command" where "server" = $1`
 | 
			
		||||
	err = db.Select(&cmds, query, p.ID)
 | 
			
		||||
@ -142,7 +135,7 @@ func (p *DiscordServerModel) GetCommandList() (cmds []*pubmodel.CommandModel, er
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRoleList -
 | 
			
		||||
func (p *DiscordServerModel) GetRoleList() (list []*DiscordManageRoleModel, err error) {
 | 
			
		||||
func (p *ServerModel) GetRoleList() (list []*ManageRoleModel, err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `select "server", "role_id", "role_name", "ctime", "mtime" from "discord"."manage_role" where "server" = $1`
 | 
			
		||||
	err = db.Select(&list, query, p.ID)
 | 
			
		||||
@ -153,12 +146,12 @@ func (p *DiscordServerModel) GetRoleList() (list []*DiscordManageRoleModel, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetRole -
 | 
			
		||||
func (p *DiscordServerModel) GetRole(roleID string) (role *DiscordManageRoleModel, err error) {
 | 
			
		||||
func (p *ServerModel) GetRole(roleID string) (role *ManageRoleModel, err error) {
 | 
			
		||||
	if len(roleID) == 0 {
 | 
			
		||||
		return nil, errors.New("id is empty")
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	role = &DiscordManageRoleModel{}
 | 
			
		||||
	role = &ManageRoleModel{}
 | 
			
		||||
	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 && err != sql.ErrNoRows {
 | 
			
		||||
@ -168,7 +161,7 @@ func (p *DiscordServerModel) GetRole(roleID string) (role *DiscordManageRoleMode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AddChannel -
 | 
			
		||||
func (p *DiscordServerModel) AddChannel(id string, enableCMD, enableNotify bool) (err error) {
 | 
			
		||||
func (p *ServerModel) 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())`
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								models/discord/rt_table.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								models/discord/rt_table.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
package discord
 | 
			
		||||
 | 
			
		||||
import "time"
 | 
			
		||||
 | 
			
		||||
// ChannelFacebookRT -
 | 
			
		||||
type ChannelFacebookRT struct {
 | 
			
		||||
	Channel  string    `db:"channel"`
 | 
			
		||||
	Facebook string    `db:"facebook"`
 | 
			
		||||
	Tmpl     string    `db:"tmpl"`
 | 
			
		||||
	Ctime    time.Time `db:"ctime"`
 | 
			
		||||
	Mtime    time.Time `db:"mtime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ChannelInstagramRT -
 | 
			
		||||
type ChannelInstagramRT struct {
 | 
			
		||||
	Channel   string    `db:"channel"`
 | 
			
		||||
	Instagram string    `db:"instagram"`
 | 
			
		||||
	Tmpl      string    `db:"tmpl"`
 | 
			
		||||
	Ctime     time.Time `db:"ctime"`
 | 
			
		||||
	Mtime     time.Time `db:"mtime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ChannelYoutubeRT -
 | 
			
		||||
type ChannelYoutubeRT struct {
 | 
			
		||||
	Channel string    `db:"channel"`
 | 
			
		||||
	Youtube string    `db:"youtube"`
 | 
			
		||||
	Tmpl    string    `db:"tmpl"`
 | 
			
		||||
	Ctime   time.Time `db:"ctime"`
 | 
			
		||||
	Mtime   time.Time `db:"mtime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ChannelTwitchRT -
 | 
			
		||||
type ChannelTwitchRT struct {
 | 
			
		||||
	Channel string    `db:"channel"`
 | 
			
		||||
	Twitch  string    `db:"twitch"`
 | 
			
		||||
	Tmpl    string    `db:"tmpl"`
 | 
			
		||||
	Ctime   time.Time `db:"ctime"`
 | 
			
		||||
	Mtime   time.Time `db:"mtime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateFacebookRT -
 | 
			
		||||
func CreateFacebookRT(channel, facebook string) (rt *ChannelFacebookRT, err error) {
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
@ -45,4 +45,9 @@ func Ping() error {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetConn database connection
 | 
			
		||||
func GetConn() *sqlx.DB { return x }
 | 
			
		||||
func GetConn() *sqlx.DB {
 | 
			
		||||
	if x == nil {
 | 
			
		||||
		panic(errors.New("database object not init"))
 | 
			
		||||
	}
 | 
			
		||||
	return x
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -122,7 +122,14 @@ func (p *CommandModel) Write() (err error) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer row.Close()
 | 
			
		||||
 | 
			
		||||
	if row.Next() {
 | 
			
		||||
		err = row.StructScan(p)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										99
									
								
								models/public/facebook.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								models/public/facebook.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,99 @@
 | 
			
		||||
package public
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"database/sql"
 | 
			
		||||
	"dorisbot/models"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// FacebookPageModel -
 | 
			
		||||
type FacebookPageModel struct {
 | 
			
		||||
	ID       string    `db:"id"`
 | 
			
		||||
	LastPost string    `db:"lastpost"`
 | 
			
		||||
	Ctime    time.Time `db:"ctime"`
 | 
			
		||||
	Mtime    time.Time `db:"mtime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewFacebookPage -
 | 
			
		||||
func NewFacebookPage(id string) (page *FacebookPageModel, err error) {
 | 
			
		||||
	if len(id) == 0 {
 | 
			
		||||
		return nil, errors.New("id is empty")
 | 
			
		||||
	}
 | 
			
		||||
	page = &FacebookPageModel{
 | 
			
		||||
		ID: id,
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetFacebookPageByID -
 | 
			
		||||
func GetFacebookPageByID(id string) (page *FacebookPageModel, err error) {
 | 
			
		||||
	if len(id) == 0 {
 | 
			
		||||
		return nil, errors.New("id is empty")
 | 
			
		||||
	}
 | 
			
		||||
	page = &FacebookPageModel{}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `select id, lastpost, ctime, mtime from public.facebook_page where id = $1`
 | 
			
		||||
	err = db.Get(page, query, id)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetAllFacebookPage -
 | 
			
		||||
func GetAllFacebookPage() (pages []*FacebookPageModel, err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `select id, lastpost, ctime, mtime from public.facebook_page order by ctime`
 | 
			
		||||
	err = db.Select(&pages, query)
 | 
			
		||||
	if err != nil && err == sql.ErrNoRows {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetFacebookPageRange -
 | 
			
		||||
func GetFacebookPageRange(limit, offset int) (pages []*FacebookPageModel, err error) {
 | 
			
		||||
	if limit < 1 || offset < 0 {
 | 
			
		||||
		return nil, errors.New("input arg format error")
 | 
			
		||||
	}
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `select id, lastpost, ctime, mtime from public.facebook_page order by ctime limit $1 offset $2`
 | 
			
		||||
	err = db.Select(&pages, query, limit, offset)
 | 
			
		||||
	if err != nil && err == sql.ErrNoRows {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Write -
 | 
			
		||||
func (p *FacebookPageModel) Write() (err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `insert into public.facebook_page (id) values (:id) returning *`
 | 
			
		||||
	rows, err := db.NamedQuery(query, p)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer rows.Close()
 | 
			
		||||
 | 
			
		||||
	if rows.Next() {
 | 
			
		||||
		err = rows.StructScan(p)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdatePost -
 | 
			
		||||
func (p *FacebookPageModel) UpdatePost(post string) (err error) {
 | 
			
		||||
	db := models.GetConn()
 | 
			
		||||
	query := `update public.facebook_page set lastpost = $1, mtime = now() where id = $2`
 | 
			
		||||
	_, err = db.Exec(query, post, p.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	p.LastPost = post
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
@ -37,3 +37,8 @@ func addServer(info EvtInfo, name string) string {
 | 
			
		||||
 | 
			
		||||
	return "add server success"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func addFacebookPage(info EvtInfo, fbid, tmpl string) string {
 | 
			
		||||
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user