mirror-nourybot/internal/data/models.go

65 lines
1.8 KiB
Go
Raw Normal View History

2022-08-08 23:58:38 +02:00
package data
2022-08-09 00:07:32 +02:00
import (
"database/sql"
"errors"
)
2022-08-08 23:58:38 +02:00
var (
ErrRecordNotFound = errors.New("record not found")
ErrChannelRecordAlreadyExists = errors.New("channel already in database")
ErrEditConflict = errors.New("edit conflict")
ErrCommandRecordAlreadyExists = errors.New("command already exists")
ErrLastFMUserRecordAlreadyExists = errors.New("lastfm connection already set")
ErrUserAlreadyExists = errors.New("user already in database")
2022-08-08 23:58:38 +02:00
)
2022-08-09 00:07:32 +02:00
// struct Models wraps the models, making them callable
// as app.models.Channels.Get(login)
type Models struct {
Channels interface {
Insert(channel *Channel) error
Get(login string) (*Channel, error)
2022-08-09 23:19:08 +02:00
GetAll() ([]*Channel, error)
GetJoinable() ([]string, error)
2022-08-09 19:50:46 +02:00
Delete(login string) error
2022-08-09 00:07:32 +02:00
}
Users interface {
Insert(login, twitchId string) error
Get(login string) (*User, error)
Check(twitchId string) (*User, error)
2022-08-10 00:14:54 +02:00
SetLevel(login string, level int) error
GetLevel(twitchId string) (int, error)
2023-03-04 23:37:31 +01:00
SetLocation(login, location string) error
GetLocation(twitchId string) (string, error)
SetLastFM(login, lastfmUser string) error
GetLastFM(login string) (string, error)
2022-08-09 21:25:44 +02:00
Delete(login string) error
}
2022-08-11 01:18:04 +02:00
Commands interface {
Get(name string) (*Command, error)
Insert(command *Command) error
2022-08-17 20:57:25 +02:00
Update(command *Command) error
SetLevel(name string, level int) error
SetCategory(name, category string) error
SetHelp(name, helptext string) error
2022-08-11 01:18:04 +02:00
Delete(name string) error
}
2022-08-21 21:04:27 +02:00
Timers interface {
Get(name string) (*Timer, error)
2022-08-22 02:12:54 +02:00
Insert(timer *Timer) error
2022-08-27 17:38:03 +02:00
Update(timer *Timer) error
GetAll() ([]*Timer, error)
2022-08-24 21:00:09 +02:00
Delete(name string) error
2022-08-21 21:04:27 +02:00
}
2022-08-09 00:07:32 +02:00
}
func NewModels(db *sql.DB) Models {
return Models{
Channels: ChannelModel{DB: db},
Users: UserModel{DB: db},
Commands: CommandModel{DB: db},
Timers: TimerModel{DB: db},
2022-08-09 00:07:32 +02:00
}
}