use dao pattern
This commit is contained in:
parent
4f8749a969
commit
9936519c70
53
database/database.go
Normal file
53
database/database.go
Normal file
@ -0,0 +1,53 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"dorisbot/pkg/config"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/jmoiron/sqlx"
|
||||
_ "github.com/lib/pq"
|
||||
)
|
||||
|
||||
// Errors
|
||||
var (
|
||||
ErrDBNotInit = errors.New("database not init")
|
||||
)
|
||||
|
||||
var x *sqlx.DB
|
||||
|
||||
// NewDB -
|
||||
func NewDB(conf *config.Database) (*sqlx.DB, error) {
|
||||
var err error
|
||||
connStr := fmt.Sprintf("dbname=%s user=%s password=%s host=%s port=%d sslmode=disable",
|
||||
conf.DBName,
|
||||
conf.User,
|
||||
conf.Pass,
|
||||
conf.Host,
|
||||
conf.Port,
|
||||
)
|
||||
log.Println("DB Connstr :: ", connStr)
|
||||
|
||||
x, err = sqlx.Connect("postgres", connStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return x, nil
|
||||
}
|
||||
|
||||
// Ping database connection
|
||||
func Ping() error {
|
||||
if x == nil {
|
||||
return ErrDBNotInit
|
||||
}
|
||||
return x.Ping()
|
||||
}
|
||||
|
||||
// GetConn database connection
|
||||
func GetConn() *sqlx.DB {
|
||||
if x == nil {
|
||||
panic(errors.New("database object not init"))
|
||||
}
|
||||
return x
|
||||
}
|
13
database/impl/public/facebook.go
Normal file
13
database/impl/public/facebook.go
Normal file
@ -0,0 +1,13 @@
|
||||
package public
|
||||
|
||||
import (
|
||||
pubmodel "dorisbot/database/models/public"
|
||||
)
|
||||
|
||||
// FacebookImpl -
|
||||
type FacebookImpl struct{}
|
||||
|
||||
// Create new Facebook Page
|
||||
func (p FacebookImpl) Create(fb *pubmodel.FacebookPage) (err error) {
|
||||
return
|
||||
}
|
16
database/interfaces/public/facebook.go
Normal file
16
database/interfaces/public/facebook.go
Normal file
@ -0,0 +1,16 @@
|
||||
package public
|
||||
|
||||
import (
|
||||
dsmodel "dorisbot/database/models/discord"
|
||||
pubmodel "dorisbot/database/models/public"
|
||||
)
|
||||
|
||||
// FacebookDAO -
|
||||
type FacebookDAO interface {
|
||||
Create(fb *pubmodel.FacebookPage) error
|
||||
UpdatePost(fb *pubmodel.FacebookPage, postID string) error
|
||||
GetByID(id string) (pubmodel.FacebookPage, error)
|
||||
GetAll() ([]pubmodel.FacebookPage, error)
|
||||
Delete(id string) error
|
||||
GetChannels() ([]dsmodel.Channel, error)
|
||||
}
|
13
database/models/discord/channel.go
Normal file
13
database/models/discord/channel.go
Normal file
@ -0,0 +1,13 @@
|
||||
package discord
|
||||
|
||||
import "time"
|
||||
|
||||
// Channel -
|
||||
type Channel 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"`
|
||||
}
|
39
database/models/discord/rt_table.go
Normal file
39
database/models/discord/rt_table.go
Normal file
@ -0,0 +1,39 @@
|
||||
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"`
|
||||
}
|
13
database/models/discord/server.go
Normal file
13
database/models/discord/server.go
Normal file
@ -0,0 +1,13 @@
|
||||
package discord
|
||||
|
||||
import "time"
|
||||
|
||||
// Server -
|
||||
type Server struct {
|
||||
ID string `db:"id"`
|
||||
Name string `db:"name"`
|
||||
Permission int `db:"permission"`
|
||||
Owner string `db:"owner"`
|
||||
Ctime time.Time `db:"ctime"`
|
||||
Mtime time.Time `db:"mtime"`
|
||||
}
|
15
database/models/public/command.go
Normal file
15
database/models/public/command.go
Normal file
@ -0,0 +1,15 @@
|
||||
package public
|
||||
|
||||
import "time"
|
||||
|
||||
// Commands -
|
||||
type Command 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"`
|
||||
}
|
11
database/models/public/facebook.go
Normal file
11
database/models/public/facebook.go
Normal file
@ -0,0 +1,11 @@
|
||||
package public
|
||||
|
||||
import "time"
|
||||
|
||||
// FacebookPage -
|
||||
type FacebookPage struct {
|
||||
ID string `db:"id"`
|
||||
LastPost string `db:"lastpost"`
|
||||
Ctime time.Time `db:"ctime"`
|
||||
Mtime time.Time `db:"mtime"`
|
||||
}
|
11
database/models/public/instagram.go
Normal file
11
database/models/public/instagram.go
Normal file
@ -0,0 +1,11 @@
|
||||
package public
|
||||
|
||||
import "time"
|
||||
|
||||
// Instagram -
|
||||
type Instagram struct {
|
||||
ID string `db:"id"`
|
||||
LastPost string `db:"lastpost"`
|
||||
Ctime time.Time `db:"ctime"`
|
||||
Mtime time.Time `db:"mtime"`
|
||||
}
|
Loading…
Reference in New Issue
Block a user