mirror of
https://github.com/lyx0/nourybot.git
synced 2024-11-13 19:49:55 +01:00
add database models for twitch channel
This commit is contained in:
parent
7ab1fe8e73
commit
54d1b93b2d
58
internal/data/channel.go
Normal file
58
internal/data/channel.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
package data
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Channel struct {
|
||||
ID int `json:"id"`
|
||||
JoinedAt time.Time `json:"-"`
|
||||
Login string `json:"login"`
|
||||
TwitchID string `json:"twitchid"`
|
||||
Announce bool `json:"announce"`
|
||||
}
|
||||
|
||||
type ChannelModel struct {
|
||||
DB *sql.DB
|
||||
}
|
||||
|
||||
func (c ChannelModel) Insert(channel *Channel) error {
|
||||
query := `
|
||||
INSERT INTO channels (login, twitchid, announce)
|
||||
VALUES ($1, $2, $3)
|
||||
RETURNING id, created_at`
|
||||
|
||||
args := []interface{}{channel.Login, channel.TwitchID, channel.Announce}
|
||||
|
||||
return c.DB.QueryRow(query, args...).Scan(&channel.ID, &channel.JoinedAt)
|
||||
}
|
||||
|
||||
func (c ChannelModel) Get(login string) (*Channel, error) {
|
||||
query := `
|
||||
SELECT id, joined_at, login, twitchid, announce
|
||||
FROM channels
|
||||
WHERE login = $1`
|
||||
|
||||
var channel Channel
|
||||
|
||||
err := c.DB.QueryRow(query, login).Scan(
|
||||
&channel.ID,
|
||||
&channel.JoinedAt,
|
||||
&channel.Login,
|
||||
&channel.TwitchID,
|
||||
&channel.Announce,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
switch {
|
||||
case errors.Is(err, sql.ErrNoRows):
|
||||
return nil, ErrRecordNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return &channel, nil
|
||||
}
|
7
internal/data/models.go
Normal file
7
internal/data/models.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
package data
|
||||
|
||||
import "errors"
|
||||
|
||||
var (
|
||||
ErrRecordNotFound = errors.New("record not found")
|
||||
)
|
Loading…
Reference in a new issue