diff --git a/handlers.go b/handlers.go index 0c93ac6..2ad1c4b 100644 --- a/handlers.go +++ b/handlers.go @@ -495,7 +495,7 @@ func processOriginal(originalID uint) { hasOriginalVideo := true hasOriginalAudio := true var video media.Video - var audio Audio + var audio media.Audio err := db.Where("source = ?", "original").Where("original_id = ?", originalID).First(&video).Error if err == gorm.ErrRecordNotFound { hasOriginalVideo = false @@ -604,7 +604,7 @@ func startDownload(originalID uint, videoURL string, audioOnly bool) { return } - audio := Audio{ + audio := media.Audio{ OriginalID: originalID, Filename: dlFilename, Source: "original", @@ -731,7 +731,7 @@ func videoHandler(c echo.Context) error { Order("CASE WHEN source = 'original' THEN 0 ELSE 1 END, height ASC"). Find(&videos) - var audios []Audio + var audios []media.Audio db.Where("original_id = ?", id). Order("CASE WHEN source = 'original' THEN 0 ELSE 1 END, bps ASC"). Find(&audios) @@ -843,7 +843,7 @@ func deleteOriginalVideos(originalID int) { } func deleteAudiosWithSource(originalID int, source string) { - var audios []Audio + var audios []media.Audio db.Where("original_id = ?", originalID).Where("source = ?", source).Find(&audios) for _, audio := range audios { path := filepath.Join(getDataDir(), audio.Filename) @@ -853,7 +853,7 @@ func deleteAudiosWithSource(originalID int, source string) { log.Errorln("error removing", path, err) } } - db.Delete(&Audio{}, "original_id = ? AND source = ?", originalID, source) + db.Delete(&media.Audio{}, "original_id = ? AND source = ?", originalID, source) } func deleteOriginalHandler(c echo.Context) error { @@ -907,7 +907,7 @@ func deleteAudioHandler(c echo.Context) error { referrer = "/" } - var audio Audio + var audio media.Audio result := db.First(&audio, id) if result.Error != nil { log.Errorln("error retrieving audio", id, result.Error) @@ -921,7 +921,7 @@ func deleteAudioHandler(c echo.Context) error { log.Errorln("coudn't remove", filePath, err) } - if err := db.Delete(&Audio{}, id).Error; err != nil { + if err := db.Delete(&media.Audio{}, id).Error; err != nil { log.Errorln("error deleting audio record", id, err) } return c.Redirect(http.StatusSeeOther, referrer) @@ -958,7 +958,7 @@ func transcodeToAudioHandler(c echo.Context) error { hasOriginalVideo := true hasOriginalAudio := true var video media.Video - var audio Audio + var audio media.Audio err := db.Where("source = ?", "original").Where("original_id = ?", originalId).First(&video).Error if err == gorm.ErrRecordNotFound { hasOriginalVideo = false diff --git a/main.go b/main.go index 1ee9a2f..c7bf832 100644 --- a/main.go +++ b/main.go @@ -80,7 +80,7 @@ func main() { sqlDB.SetMaxOpenConns(1) // Migrate the schema - db.AutoMigrate(&Original{}, &media.Video{}, &Audio{}, &User{}, &TempURL{}, &Transcode{}) + db.AutoMigrate(&Original{}, &media.Video{}, &media.Audio{}, &User{}, &TempURL{}, &Transcode{}) go PeriodicCleanup() // create a user diff --git a/media/models.go b/media/models.go index 679d0fb..0e34978 100644 --- a/media/models.go +++ b/media/models.go @@ -5,9 +5,25 @@ import "gorm.io/gorm" type Status string const ( + Pending Status = "pending" Transcoding Status = "transcoding" + Completed Status = "completed" + Failed Status = "failed" ) +type Audio struct { + gorm.Model + OriginalID uint // Original.ID + Source string // "original", "transcode" + Bps uint + Length float64 + Size int64 + Type string + Codec string + Filename string + Status Status +} + type Video struct { gorm.Model OriginalID uint // Original.ID @@ -20,4 +36,5 @@ type Video struct { Size int64 Type string Codec string + Status Status } diff --git a/models.go b/models.go index ade8fea..92fa763 100644 --- a/models.go +++ b/models.go @@ -53,19 +53,6 @@ type Transcode struct { Rate uint } -type Audio struct { - gorm.Model - OriginalID uint // Original.ID - Source string // "original", "transcode" - Bps uint - Length float64 - Size int64 - Type string - Codec string - Filename string - Status string // "pending", "completed", "failed" -} - type User struct { gorm.Model Username string `gorm:"unique"` diff --git a/workers.go b/workers.go index ddf56a1..cfd32df 100644 --- a/workers.go +++ b/workers.go @@ -133,7 +133,7 @@ func videoToAudio(transID uint, kbps uint, videoFilepath string) { db.First(&orig, "id = ?", trans.OriginalID) // create audio record - audio := Audio{OriginalID: orig.ID, + audio := media.Audio{OriginalID: orig.ID, Filename: audioFilename, Bps: kbps * 1000, Source: "transcode", @@ -191,7 +191,7 @@ func audioToAudio(transID uint, kbps uint, srcFilepath string) { db.First(&orig, "id = ?", trans.OriginalID) // create audio record - audio := Audio{ + audio := media.Audio{ OriginalID: orig.ID, Filename: dstFilename, Bps: kbps * 1000, @@ -282,7 +282,7 @@ func transcodePending() { } } else if trans.SrcKind == "audio" { - var srcAudio Audio + var srcAudio media.Audio err = db.First(&srcAudio, "id = ?", trans.SrcID).Error if err != nil { fmt.Println("no such source audio for audio Transcode", trans)