Add all columns for shows and episodes
This commit is contained in:
parent
276c9caa29
commit
ab02aa3479
@ -12,19 +12,32 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
addShowQuery = `INSERT INTO shows (imdbid, title) VALUES (:imdbid, :title) RETURNING id;`
|
||||
addShowQuery = `
|
||||
INSERT INTO shows (imdbid, title, rating, plot, tvdbid, year, firstaired)
|
||||
VALUES (:imdbid, :title, :rating, :plot, :tvdbid, :year, :firstaired) RETURNING id;`
|
||||
|
||||
getShowQueryByImdbID = `SELECT * FROM shows WHERE imdbid=$1;`
|
||||
getShowQueryByID = `SELECT * FROM shows WHERE id=$1;`
|
||||
deleteShowQuery = `DELETE FROM shows WHERE id=$1;`
|
||||
|
||||
addEpisodeQuery = `INSERT INTO episodes (shows_id, title, season, episode) VALUES ($1,$2,$3,$4);`
|
||||
getEpisodesQuery = `SELECT title, season, episode FROM episodes WHERE shows_id=$1;`
|
||||
addEpisodeQuery = `
|
||||
INSERT INTO episodes (shows_id, title, season, episode, tvdbid, aired, plot, runtime, rating, imdbid)
|
||||
VALUES (:showid, :title, :season, :episode, :tvdbid, :aired, :plot, :runtime, :rating, :episodeimdbid) RETURNING id;`
|
||||
|
||||
getEpisodesQuery = `
|
||||
SELECT title, season, episode, tvdbid, aired, plot, runtime, rating, imdbid AS episodeimdbid, shows_id AS showid
|
||||
FROM episodes WHERE shows_id=$1;`
|
||||
|
||||
getShowWithUserQueryByImdbID = `
|
||||
SELECT
|
||||
shows.id,
|
||||
shows.title,
|
||||
shows.imdbid,
|
||||
shows.title,
|
||||
shows.rating,
|
||||
shows.plot,
|
||||
shows.tvdbid,
|
||||
shows.year,
|
||||
shows.firstaired,
|
||||
COALESCE(shows_tracked.season,0) AS trackedseason,
|
||||
COALESCE(shows_tracked.episode,0) AS trackedepisode
|
||||
FROM shows LEFT JOIN shows_tracked ON shows.id=shows_tracked.shows_id AND shows_tracked.users_id=$2
|
||||
@ -33,8 +46,13 @@ const (
|
||||
getShowWithUserQueryByID = `
|
||||
SELECT
|
||||
shows.id,
|
||||
shows.title,
|
||||
shows.imdbid,
|
||||
shows.title,
|
||||
shows.rating,
|
||||
shows.plot,
|
||||
shows.tvdbid,
|
||||
shows.year,
|
||||
shows.firstaired,
|
||||
COALESCE(shows_tracked.season,0) AS trackedseason,
|
||||
COALESCE(shows_tracked.episode,0) AS trackedepisode
|
||||
FROM shows LEFT JOIN shows_tracked ON shows.id=shows_tracked.shows_id AND shows_tracked.users_id=$2
|
||||
@ -124,7 +142,10 @@ func (s *Show) GetDetails(db *sqlx.DB, log *logrus.Entry) error {
|
||||
s.Episodes = append(s.Episodes, &Episode{ShowEpisode: *pe})
|
||||
}
|
||||
|
||||
s.Add(db)
|
||||
err = s.Add(db)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -144,7 +165,10 @@ func (s *Show) GetDetailsAsUser(db *sqlx.DB, user *users.User, log *logrus.Entry
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.Add(db)
|
||||
err = s.Add(db)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.Episodes = []*Episode{}
|
||||
for _, pe := range s.Show.Episodes {
|
||||
s.Episodes = append(s.Episodes, &Episode{ShowEpisode: *pe})
|
||||
@ -176,7 +200,8 @@ func (s *Show) Add(db *sqlx.DB) error {
|
||||
// When add a show to database use polochon episode details
|
||||
// so s.Show.Episodes
|
||||
for _, pEp := range s.Show.Episodes {
|
||||
err = s.addEpisode(db, pEp)
|
||||
e := &Episode{ShowEpisode: *pEp, ShowID: s.ID}
|
||||
err = e.Add(db)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -184,14 +209,6 @@ func (s *Show) Add(db *sqlx.DB) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Show) addEpisode(db *sqlx.DB, pEpisode *polochon.ShowEpisode) error {
|
||||
_, err := db.Exec(addEpisodeQuery, s.ID, pEpisode.Title, pEpisode.Season, pEpisode.Episode)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Delete show from database
|
||||
func (s *Show) Delete(db *sqlx.DB) error {
|
||||
r, err := db.Exec(deleteShowQuery, s.ID)
|
||||
@ -209,6 +226,7 @@ func (s *Show) Delete(db *sqlx.DB) error {
|
||||
func (s *Show) GetEpisodes(db *sqlx.DB) error {
|
||||
// When retrive episode's info from database populate the s.Episodes member
|
||||
// and not s.Show.Episodes
|
||||
s.Episodes = []*Episode{}
|
||||
err := db.Select(&s.Episodes, getEpisodesQuery, s.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -221,4 +239,19 @@ func (s *Show) GetEpisodes(db *sqlx.DB) error {
|
||||
type Episode struct {
|
||||
sqly.BaseModel
|
||||
polochon.ShowEpisode
|
||||
ShowID string
|
||||
}
|
||||
|
||||
// Add episode to the database
|
||||
func (e *Episode) Add(db *sqlx.DB) error {
|
||||
var id string
|
||||
r, err := db.NamedQuery(addEpisodeQuery, e)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for r.Next() {
|
||||
r.Scan(&id)
|
||||
}
|
||||
e.ID = id
|
||||
return nil
|
||||
}
|
||||
|
@ -48,13 +48,38 @@ func TestIntegrate(t *testing.T) {
|
||||
}
|
||||
|
||||
log := logrus.NewEntry(logrus.New())
|
||||
show.GetDetails(db, log)
|
||||
err := show.GetDetails(db, log)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(show.Episodes) != 50 {
|
||||
t.Fatalf("Unexpected number of episodes: %d", len(show.Episodes))
|
||||
}
|
||||
|
||||
err := show.Delete(db)
|
||||
// Get from db
|
||||
show2 := Show{
|
||||
Show: polochon.Show{
|
||||
ShowConfig: polochonConfig,
|
||||
ImdbID: "tt12345",
|
||||
},
|
||||
}
|
||||
|
||||
err = show2.Get(db)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = show2.GetEpisodes(db)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(show2.Episodes) != 50 {
|
||||
t.Fatalf("Unexpected number of episodes: %d", len(show2.Episodes))
|
||||
}
|
||||
|
||||
err = show.Delete(db)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -82,13 +107,17 @@ func TestTrackedShow(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
show.Add(db)
|
||||
|
||||
u := &users.User{Name: "plop"}
|
||||
err := u.Add(db)
|
||||
err := show.Add(db)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
u := &users.User{Name: "plop"}
|
||||
err = u.Add(db)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
err = show.GetAsUser(db, u)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -33,6 +33,11 @@ CREATE TABLE shows (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
imdbid text NOT NULL UNIQUE,
|
||||
title text NOT NULL,
|
||||
rating real NOT NULL,
|
||||
plot text NOT NULL,
|
||||
tvdbid text NOT NULL,
|
||||
year smallint NOT NULL,
|
||||
firstaired timestamp,
|
||||
LIKE base INCLUDING DEFAULTS
|
||||
);
|
||||
CREATE INDEX ON shows (imdbid);
|
||||
@ -44,6 +49,12 @@ CREATE TABLE episodes (
|
||||
title text NOT NULL,
|
||||
season integer NOT NULL,
|
||||
episode integer NOT NULL,
|
||||
tvdbid text NOT NULL,
|
||||
aired text NOT NULL,
|
||||
plot text NOT NULL,
|
||||
runtime smallint NOT NULL,
|
||||
rating real NOT NULL,
|
||||
imdbid text NOT NULL,
|
||||
LIKE base INCLUDING DEFAULTS
|
||||
);
|
||||
CREATE INDEX ON episodes (shows_id, season);
|
||||
|
Loading…
x
Reference in New Issue
Block a user