|
|
|
package db
|
|
|
|
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
//Podcast is
|
|
|
|
type Podcast struct {
|
|
|
|
Base
|
|
|
|
Title string
|
|
|
|
|
|
|
|
Summary string `gorm:"type:text"`
|
|
|
|
|
|
|
|
Author string
|
|
|
|
|
|
|
|
Image string
|
|
|
|
|
|
|
|
URL string
|
|
|
|
|
|
|
|
LastEpisode *time.Time
|
|
|
|
|
|
|
|
PodcastItems []PodcastItem `json:"-"`
|
|
|
|
|
|
|
|
DownloadedEpisodesCount int `gorm:"-"`
|
|
|
|
DownloadingEpisodesCount int `gorm:"-"`
|
|
|
|
AllEpisodesCount int `gorm:"-"`
|
|
|
|
}
|
|
|
|
|
|
|
|
//PodcastItem is
|
|
|
|
type PodcastItem struct {
|
|
|
|
Base
|
|
|
|
PodcastID string
|
|
|
|
Podcast Podcast
|
|
|
|
Title string
|
|
|
|
Summary string `gorm:"type:text"`
|
|
|
|
|
|
|
|
EpisodeType string
|
|
|
|
|
|
|
|
Duration int
|
|
|
|
|
|
|
|
PubDate time.Time
|
|
|
|
|
|
|
|
FileURL string
|
|
|
|
|
|
|
|
GUID string
|
|
|
|
Image string
|
|
|
|
|
|
|
|
DownloadDate time.Time
|
|
|
|
DownloadPath string
|
|
|
|
DownloadStatus DownloadStatus `gorm:"default:0"`
|
|
|
|
|
|
|
|
IsPlayed bool `gorm:"default:false"`
|
|
|
|
}
|
|
|
|
|
|
|
|
type DownloadStatus int
|
|
|
|
|
|
|
|
const (
|
|
|
|
NotDownloaded DownloadStatus = iota
|
|
|
|
Downloading
|
|
|
|
Downloaded
|
|
|
|
Deleted
|
|
|
|
)
|
|
|
|
|
|
|
|
type Setting struct {
|
|
|
|
Base
|
|
|
|
DownloadOnAdd bool `gorm:"default:true"`
|
|
|
|
InitialDownloadCount int `gorm:"default:5"`
|
|
|
|
AutoDownload bool `gorm:"default:true"`
|
|
|
|
AppendDateToFileName bool `gorm:"default:false"`
|
|
|
|
}
|
|
|
|
type Migration struct {
|
|
|
|
Base
|
|
|
|
Date time.Time
|
|
|
|
Name string
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobLock struct {
|
|
|
|
Base
|
|
|
|
Date time.Time
|
|
|
|
Name string
|
|
|
|
Duration int
|
|
|
|
}
|
|
|
|
|
|
|
|
func (lock *JobLock) IsLocked() bool {
|
|
|
|
return lock != nil && lock.Date != time.Time{}
|
|
|
|
}
|
|
|
|
|
|
|
|
type PodcastItemStatsModel struct {
|
|
|
|
PodcastID string
|
|
|
|
DownloadStatus DownloadStatus
|
|
|
|
Count int
|
|
|
|
}
|