emdb/desktop-client/backend/backend.go

81 lines
1.5 KiB
Go
Raw Permalink Normal View History

2024-04-26 10:01:46 +02:00
package backend
2024-04-26 15:10:38 +02:00
import (
"fmt"
2024-09-17 07:43:12 +02:00
"go-mod.ewintr.nl/emdb/client"
"go-mod.ewintr.nl/emdb/storage"
2024-04-26 15:10:38 +02:00
)
2024-04-26 10:01:46 +02:00
type Backend struct {
2024-04-26 15:10:38 +02:00
s *State
in chan Command
out chan State
logLines []string
movieRepo *storage.MovieRepository
tmdb *client.TMDB
2024-04-26 10:01:46 +02:00
}
2024-04-26 15:10:38 +02:00
func NewBackend(movieRepo *storage.MovieRepository, tmdb *client.TMDB) *Backend {
2024-04-26 10:01:46 +02:00
b := &Backend{
2024-04-26 15:10:38 +02:00
s: NewState(),
in: make(chan Command),
out: make(chan State),
logLines: make([]string, 0),
movieRepo: movieRepo,
tmdb: tmdb,
2024-04-26 10:01:46 +02:00
}
go b.Run()
2024-04-26 15:10:38 +02:00
b.in <- Command{Name: CommandRefreshWatched}
2024-04-26 10:01:46 +02:00
return b
}
2024-04-26 15:10:38 +02:00
func (b *Backend) Out() chan State {
return b.out
2024-04-26 10:01:46 +02:00
}
func (b *Backend) In() chan Command {
2024-04-26 15:10:38 +02:00
return b.in
2024-04-26 10:01:46 +02:00
}
func (b *Backend) Run() {
2024-04-26 15:10:38 +02:00
for cmd := range b.in {
2024-04-26 10:01:46 +02:00
switch cmd.Name {
case CommandAdd:
newName, ok := cmd.Args[ArgName]
if ok {
newNameStr, ok := newName.(string)
if ok {
2024-04-26 15:10:38 +02:00
//b.s.Watched.Append(newNameStr)
2024-04-26 10:01:46 +02:00
b.Log("Item added: " + newNameStr)
}
}
2024-04-26 15:10:38 +02:00
case CommandRefreshWatched:
b.RefreshWatched()
default:
b.Error(fmt.Errorf("unknown command: %s", cmd.Name))
2024-04-26 10:01:46 +02:00
}
2024-04-26 15:10:38 +02:00
b.out <- *b.s
}
}
func (b *Backend) RefreshWatched() {
watched, err := b.movieRepo.FindAll()
if err != nil {
b.Error(fmt.Errorf("could not refresh watched: %w", err))
2024-04-26 10:01:46 +02:00
}
2024-04-26 15:10:38 +02:00
b.s.Watched = watched
}
func (b *Backend) Error(err error) {
b.Log(fmt.Sprintf("ERROR: %s", err))
2024-04-26 10:01:46 +02:00
}
func (b *Backend) Log(msg string) {
2024-04-26 15:10:38 +02:00
b.logLines = append(b.logLines, msg)
b.s.Log = b.logLines
2024-04-26 10:01:46 +02:00
}