|
|
|
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
|
|
|
|
|
|
|
|
Tags []*Tag `gorm:"many2many:podcast_tags;"`
|
|
|
|
|
|
|
|
DownloadedEpisodesCount int `gorm:"-"`
|
|
|
|
DownloadingEpisodesCount int `gorm:"-"`
|
|
|
|
AllEpisodesCount int `gorm:"-"`
|
|
|
|
|
|
|
|
DownloadedEpisodesSize int64 `gorm:"-"`
|
|
|
|
DownloadingEpisodesSize int64 `gorm:"-"`
|
|
|
|
AllEpisodesSize int64 `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"`
|
|
|
|
|
|
|
|
BookmarkDate time.Time
|
|
|
|
|
|
|
|
LocalImage string
|
|
|
|
|
|
|
|
FileSize int64
|
|
|
|
}
|
|
|
|
|
|
|
|
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"`
|
|
|
|
AppendEpisodeNumberToFileName bool `gorm:"default:false"`
|
|
|
|
DarkMode bool `gorm:"default:false"`
|
|
|
|
DownloadEpisodeImages bool `gorm:"default:false"`
|
|
|
|
}
|
|
|
|
type Migration struct {
|
|
|
|
Base
|
|
|
|
Date time.Time
|
|
|
|
Name string
|
|
|
|
}
|
|
|
|
|
|
|
|
type JobLock struct {
|
|
|
|
Base
|
|
|
|
Date time.Time
|
|
|
|
Name string
|
|
|
|
Duration int
|
|
|
|
}
|
|
|
|
|
|
|
|
type Tag struct {
|
|
|
|
Base
|
|
|
|
Label string
|
|
|
|
Description string `gorm:"type:text"`
|
|
|
|
Podcasts []*Podcast `gorm:"many2many:podcast_tags;"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func (lock *JobLock) IsLocked() bool {
|
|
|
|
return lock != nil && lock.Date != time.Time{}
|
|
|
|
}
|
|
|
|
|
|
|
|
type PodcastItemStatsModel struct {
|
|
|
|
PodcastID string
|
|
|
|
DownloadStatus DownloadStatus
|
|
|
|
Count int
|
|
|
|
Size int64
|
|
|
|
}
|
|
|
|
|
|
|
|
type PodcastItemDiskStatsModel struct {
|
|
|
|
DownloadStatus DownloadStatus
|
|
|
|
Count int
|
|
|
|
Size int64
|
|
|
|
}
|
|
|
|
|
|
|
|
type PodcastItemConsolidateDiskStatsModel struct {
|
|
|
|
Downloaded int64
|
|
|
|
Downloading int64
|
|
|
|
NotDownloaded int64
|
|
|
|
Deleted int64
|
|
|
|
PendingDownload int64
|
|
|
|
}
|