Adding way to merge LPs
This commit is contained in:
parent
a1e2b5e683
commit
bc76465c82
|
@ -43,6 +43,9 @@ type LetsPlay struct {
|
|||
PosterB sql.NullString
|
||||
Aired time.Time `sql:"default:null"`
|
||||
|
||||
MergeID sql.NullInt64
|
||||
MergeSeason sql.NullInt64
|
||||
|
||||
Episodes []Episode
|
||||
}
|
||||
|
||||
|
@ -79,7 +82,6 @@ type Episode struct {
|
|||
|
||||
Slug sql.NullString `sql:"not null;unique_index"`
|
||||
Name sql.NullString `sql:"not null"`
|
||||
Season sql.NullInt64 `sql:"not null"`
|
||||
Episode sql.NullInt64 `sql:"not null"`
|
||||
ThumbS sql.NullString
|
||||
ThumbB sql.NullString
|
||||
|
@ -89,6 +91,7 @@ type Episode struct {
|
|||
Rating sql.NullFloat64
|
||||
Votes sql.NullInt64
|
||||
Duration sql.NullInt64
|
||||
Season sql.NullInt64 `sql:"not null;default:1"`
|
||||
}
|
||||
|
||||
var Db gorm.DB
|
||||
|
@ -102,6 +105,11 @@ func InitDb(connection string) (error) {
|
|||
}
|
||||
Db.LogMode(false)
|
||||
|
||||
Db.Model(&LetsPlay{}).AddForeignKey("author_id", "authors(id)", "RESTRICT", "RESTRICT")
|
||||
Db.Model(&LetsTest{}).AddForeignKey("author_id", "authors(id)", "RESTRICT", "RESTRICT")
|
||||
Db.Model(&Episode{}).AddForeignKey("author_id", "authors(id)", "RESTRICT", "RESTRICT")
|
||||
Db.Model(&Episode{}).AddForeignKey("lets_play_id", "lets_plays(id)", "RESTRICT", "RESTRICT")
|
||||
|
||||
Db.AutoMigrate(&Author{}, &LetsPlay{}, &LetsTest{}, &Episode{})
|
||||
|
||||
return err
|
||||
|
@ -168,6 +176,16 @@ func (l *LetsPlay) BeforeSave() (err error) {
|
|||
} else {
|
||||
l.PosterB.Valid = true
|
||||
}
|
||||
if l.MergeID.Int64 == 0 {
|
||||
l.MergeID.Valid = false
|
||||
} else {
|
||||
l.MergeID.Valid = true
|
||||
}
|
||||
if l.MergeSeason.Int64 == 0 {
|
||||
l.MergeSeason.Valid = false
|
||||
} else {
|
||||
l.MergeSeason.Valid = true
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,10 @@ var aslug string
|
|||
var youtubeid string
|
||||
var poster string
|
||||
|
||||
var newslug string
|
||||
var oldslug string
|
||||
var newseason int64
|
||||
|
||||
func InitCli() {
|
||||
flag.StringVar(&mode, "mode", "", "Specifies the action to be done. Can be add_lt and merge_lps")
|
||||
|
||||
|
@ -31,6 +35,11 @@ func InitCli() {
|
|||
flag.StringVar(&aslug, "author", "", "Author slug")
|
||||
flag.StringVar(&youtubeid, "youtube", "", "YouTube ID of the video")
|
||||
flag.StringVar(&poster, "poster", "", "Poster URL that should be used")
|
||||
|
||||
// For merge_lps
|
||||
flag.StringVar(&newslug, "newslug", "", "Slug of the final LP")
|
||||
flag.StringVar(&oldslug, "oldslug", "", "Current slug of LP to be merged")
|
||||
flag.Int64Var(&newseason, "newseason", 0, "Season the episodes of the old LP will become")
|
||||
}
|
||||
|
||||
func DoCli() {
|
||||
|
@ -43,7 +52,10 @@ func DoCli() {
|
|||
}
|
||||
ParseCliLT()
|
||||
} else if mode == "merge_lps" {
|
||||
|
||||
if (oldslug == "" || newslug == "" || newseason == 0) {
|
||||
log.Fatalf("oldslug, newslug, newseason must be specified")
|
||||
}
|
||||
MergeLPs()
|
||||
}
|
||||
os.Exit(0)
|
||||
}
|
||||
|
@ -101,3 +113,18 @@ func ParseCliLT() {
|
|||
log.Printf("ERR LT %s: Could not be added to databse (%+v)", slug, err)
|
||||
}
|
||||
}
|
||||
|
||||
func MergeLPs() {
|
||||
var OldLP database.LetsPlay
|
||||
var NewLP database.LetsPlay
|
||||
database.Db.Where("slug = ?", oldslug).First(&OldLP)
|
||||
database.Db.Where("slug = ?", newslug).First(&NewLP)
|
||||
|
||||
database.Db.Exec("UPDATE episodes SET season=? WHERE lets_play_id = ?", newseason, OldLP.ID)
|
||||
database.Db.Exec("UPDATE episodes SET lets_play_id=? WHERE lets_play_id = ?", NewLP.ID, OldLP.ID)
|
||||
|
||||
OldLP.MergeID.Int64 = int64(NewLP.ID)
|
||||
OldLP.MergeSeason.Int64 = newseason
|
||||
|
||||
database.Db.Save(&OldLP)
|
||||
}
|
|
@ -69,7 +69,13 @@ func ParseEpisode(i int, s *goquery.Selection) {
|
|||
ur, _ = url.Parse(u)
|
||||
var LP database.LetsPlay
|
||||
database.Db.Where("slug = ?", path.Base(ur.Path)).First(&LP)
|
||||
EP.LetsPlayID = LP.ID
|
||||
if LP.MergeID.Valid == false {
|
||||
EP.LetsPlayID = LP.ID
|
||||
EP.Season.Int64 = 1
|
||||
} else {
|
||||
EP.LetsPlayID = uint(LP.MergeID.Int64)
|
||||
EP.Season.Int64 = LP.MergeSeason.Int64
|
||||
}
|
||||
res, err := GetHTTPResource(gu)
|
||||
if err != nil {
|
||||
log.Printf("ERR EP %s: Request failed (%+v)", slug, err)
|
||||
|
|
|
@ -83,7 +83,13 @@ func ParseFeedEpisode(u string) {
|
|||
return
|
||||
}
|
||||
}
|
||||
EP.LetsPlayID = LP.ID
|
||||
if LP.MergeID.Valid == false {
|
||||
EP.LetsPlayID = LP.ID
|
||||
EP.Season.Int64 = 1
|
||||
} else {
|
||||
EP.LetsPlayID = uint(LP.MergeID.Int64)
|
||||
EP.Season.Int64 = LP.MergeSeason.Int64
|
||||
}
|
||||
res, err := GetHTTPResource(u)
|
||||
if err != nil {
|
||||
log.Printf("ERR RS %s: Request failed (%+v)", slug, err)
|
||||
|
@ -106,7 +112,6 @@ func ParseFeedEpisode(u string) {
|
|||
log.Printf("WAR RSS %s: Name does not match RegEx", slug)
|
||||
EP.Episode.Int64 = 0
|
||||
}
|
||||
EP.Season.Int64 = 1
|
||||
doc.Find(".article > p").Each(func(i int, s *goquery.Selection) {
|
||||
EP.Descr.String += s.Text() + "\n"
|
||||
})
|
||||
|
|
|
@ -70,6 +70,12 @@ func PostAdminLetsPlay(c *gin.Context) {
|
|||
if id, err := strconv.ParseUint(c.PostForm("authorid"), 10, 0); err == nil {
|
||||
LP.AuthorID = uint(id)
|
||||
}
|
||||
if mergeid, err := strconv.ParseUint(c.PostForm("mergeid"), 10, 0); err == nil {
|
||||
LP.MergeID.Int64 = int64(mergeid)
|
||||
}
|
||||
if mergeseason, err := strconv.ParseUint(c.PostForm("mergeseason"), 10, 0); err == nil {
|
||||
LP.MergeSeason.Int64 = int64(mergeseason)
|
||||
}
|
||||
LP.Slug.String = c.PostForm("slug")
|
||||
LP.Name.String = c.PostForm("name")
|
||||
if c.PostForm("posters") == "" && !strings.HasPrefix(c.PostForm("posterb"), "/") {
|
||||
|
|
|
@ -9,6 +9,12 @@
|
|||
<label>
|
||||
AuthorID <input type="text" name="authorid" value="{{ .LP.AuthorID }}">
|
||||
</label>
|
||||
<label>
|
||||
MergeID <input type="text" name="mergeid" value="{{ .LP.MergeID.Int64 }}">
|
||||
</label>
|
||||
<label>
|
||||
MergeSeason <input type="text" name="mergeseason" value="{{ .LP.MergeSeason.Int64 }}">
|
||||
</label>
|
||||
<label>
|
||||
Slug <input type="text" name="slug" value="{{ .LP.Slug.String }}">
|
||||
</label>
|
||||
|
|
|
@ -31,7 +31,7 @@ func GetIndex(c *gin.Context) {
|
|||
|
||||
func GetLps(c *gin.Context) {
|
||||
var LPs []database.LetsPlay
|
||||
database.Db.Where("aired IS NOT NULL").Order("name asc").Find(&LPs)
|
||||
database.Db.Where("aired IS NOT NULL and merge_id IS NULL").Order("name asc").Find(&LPs)
|
||||
var data []gin.H
|
||||
for _, LP := range LPs {
|
||||
var AT database.Author
|
||||
|
@ -235,7 +235,7 @@ func GetLEpisode(c *gin.Context) {
|
|||
//No EP in URL
|
||||
var EPs []database.Episode
|
||||
var AT database.Author
|
||||
database.Db.Model(&LP).Order("episode asc").Related(&EPs)
|
||||
database.Db.Model(&LP).Order("season asc").Order("episode asc").Related(&EPs)
|
||||
database.Db.Model(&LP).Related(&AT)
|
||||
var DEP []gin.H
|
||||
for _, EP := range EPs {
|
||||
|
|
Loading…
Reference in a new issue