mirror of
https://github.com/lyx0/nourybot.git
synced 2024-11-13 19:49:55 +01:00
add database models
This commit is contained in:
parent
1ebf4df8e7
commit
ddca49605c
|
@ -1,16 +1,22 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/gempir/go-twitch-irc/v3"
|
||||
"github.com/lyx0/nourybot/internal/config"
|
||||
"github.com/lyx0/nourybot/pkg/models/mysql"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
type nourybot struct {
|
||||
twitchClient *twitch.Client
|
||||
uptime time.Time
|
||||
channels *mysql.ChannelModel
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -20,9 +26,16 @@ func main() {
|
|||
twitchClient := twitch.NewClient(cfg.Username, cfg.Oauth)
|
||||
now := time.Now()
|
||||
|
||||
db, err := openDB(cfg.MySQLURI)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
defer db.Close()
|
||||
nb := &nourybot{
|
||||
twitchClient: twitchClient,
|
||||
uptime: now,
|
||||
channels: &mysql.ChannelModel{DB: db},
|
||||
}
|
||||
|
||||
nb.twitchClient.OnPrivateMessage(func(message twitch.PrivateMessage) {
|
||||
|
@ -31,9 +44,20 @@ func main() {
|
|||
|
||||
nb.twitchClient.OnConnect(nb.onConnect)
|
||||
|
||||
err := nb.connect()
|
||||
err = nb.connect()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func openDB(dsn string) (*sql.DB, error) {
|
||||
db, err := sql.Open("mysql", dsn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err = db.Ping(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return db, nil
|
||||
}
|
||||
|
|
1
go.mod
1
go.mod
|
@ -4,6 +4,7 @@ go 1.17
|
|||
|
||||
require (
|
||||
github.com/gempir/go-twitch-irc/v3 v3.0.0
|
||||
github.com/go-sql-driver/mysql v1.6.0
|
||||
github.com/joho/godotenv v1.4.0
|
||||
github.com/sirupsen/logrus v1.8.1
|
||||
)
|
||||
|
|
2
go.sum
2
go.sum
|
@ -3,6 +3,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
|||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/gempir/go-twitch-irc/v3 v3.0.0 h1:e34R+9BdKy+qrO/wN+FCt+BUtyn38gCnJuKWscIKbl4=
|
||||
github.com/gempir/go-twitch-irc/v3 v3.0.0/go.mod h1:/W9KZIiyizVecp4PEb7kc4AlIyXKiCmvlXrzlpPUytU=
|
||||
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
|
||||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
|
||||
github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
|
|
15
pkg/models/models.go
Normal file
15
pkg/models/models.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
package models
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
var ErrNoRecord = errors.New("models: no matching record found")
|
||||
|
||||
type Channel struct {
|
||||
ID int
|
||||
Username string
|
||||
TwitchID string
|
||||
Added time.Time
|
||||
}
|
23
pkg/models/mysql/channel.go
Normal file
23
pkg/models/mysql/channel.go
Normal file
|
@ -0,0 +1,23 @@
|
|||
package mysql
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/lyx0/nourybot/pkg/models"
|
||||
)
|
||||
|
||||
type ChannelModel struct {
|
||||
DB *sql.DB
|
||||
}
|
||||
|
||||
func (m *ChannelModel) Insert(username string, twitchid string) (int, error) {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func (m *ChannelModel) Get(id int) (*models.Channel, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *ChannelModel) Latest() ([]*models.Channel, error) {
|
||||
return nil, nil
|
||||
}
|
Loading…
Reference in a new issue