Refactor folder structure
This commit is contained in:
parent
7e9a205d53
commit
c7cca02ca7
30 changed files with 610 additions and 933 deletions
180
models.go
180
models.go
|
|
@ -1,180 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type Feed struct {
|
||||
gorm.Model
|
||||
Title string `json:"title,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Link string `json:"link,omitempty"`
|
||||
FeedLink string `json:"feedLink,omitempty"`
|
||||
Links []string `gorm:"type:text[]" json:"links,omitempty"`
|
||||
Updated string `json:"updated,omitempty"`
|
||||
UpdatedParsed *time.Time `json:"updatedParsed,omitempty"`
|
||||
Published string `json:"published,omitempty"`
|
||||
PublishedParsed *time.Time `json:"publishedParsed,omitempty"`
|
||||
Authors []*Person `gorm:"many2many:feed_authors;" json:"authors,omitempty"`
|
||||
Language string `json:"language,omitempty"`
|
||||
Image *Image `gorm:"foreignKey:ID" json:"image,omitempty"`
|
||||
Copyright string `json:"copyright,omitempty"`
|
||||
Generator string `json:"generator,omitempty"`
|
||||
Categories []string `gorm:"type:text[]" json:"categories,omitempty"`
|
||||
DublinCoreExt *DublinCoreExtension `gorm:"foreignKey:ID" json:"dcExt,omitempty"`
|
||||
ITunesExt *ITunesFeedExtension `gorm:"foreignKey:ID" json:"itunesExt,omitempty"`
|
||||
Extensions Extensions `gorm:"type:json" json:"extensions,omitempty"`
|
||||
Custom map[string]string `gorm:"type:json" json:"custom,omitempty"`
|
||||
Items []*Item `gorm:"foreignKey:ID" json:"items,omitempty"`
|
||||
FeedType string `json:"feedType"`
|
||||
FeedVersion string `json:"feedVersion"`
|
||||
}
|
||||
|
||||
type Item struct {
|
||||
gorm.Model
|
||||
Title string `json:"title,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Content string `json:"content,omitempty"`
|
||||
Link string `json:"link,omitempty"`
|
||||
Links []string `gorm:"type:text[]" json:"links,omitempty"`
|
||||
Updated string `json:"updated,omitempty"`
|
||||
UpdatedParsed *time.Time `json:"updatedParsed,omitempty"`
|
||||
Published string `json:"published,omitempty"`
|
||||
PublishedParsed *time.Time `json:"publishedParsed,omitempty"`
|
||||
Authors []*Person `gorm:"many2many:item_authors;" json:"authors,omitempty"`
|
||||
GUID string `json:"guid,omitempty"`
|
||||
Image *Image `gorm:"foreignKey:ID" json:"image,omitempty"`
|
||||
Categories []string `gorm:"type:text[]" json:"categories,omitempty"`
|
||||
Enclosures []*Enclosure `gorm:"foreignKey:ID" json:"enclosures,omitempty"`
|
||||
DublinCoreExt *DublinCoreExtension `gorm:"foreignKey:ID" json:"dcExt,omitempty"`
|
||||
ITunesExt *ITunesFeedExtension `gorm:"foreignKey:ID" json:"itunesExt,omitempty"`
|
||||
Extensions Extensions `gorm:"type:json" json:"extensions,omitempty"`
|
||||
Custom map[string]string `gorm:"type:json" json:"custom,omitempty"`
|
||||
}
|
||||
|
||||
type Person struct {
|
||||
gorm.Model
|
||||
Name string `json:"name,omitempty"`
|
||||
Email string `json:"email,omitempty"`
|
||||
}
|
||||
|
||||
func (Person) TableName() string {
|
||||
return "feed_authors"
|
||||
}
|
||||
|
||||
type Image struct {
|
||||
gorm.Model
|
||||
URL string `json:"url,omitempty"`
|
||||
Title string `json:"title,omitempty"`
|
||||
}
|
||||
|
||||
type Enclosure struct {
|
||||
gorm.Model
|
||||
URL string `json:"url,omitempty"`
|
||||
Length string `json:"length,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
type DublinCoreExtension struct {
|
||||
gorm.Model
|
||||
Title []string `gorm:"type:text[]" json:"title,omitempty"`
|
||||
Creator []string `gorm:"type:text[]" json:"creator,omitempty"`
|
||||
Author []string `gorm:"type:text[]" json:"author,omitempty"`
|
||||
Subject []string `gorm:"type:text[]" json:"subject,omitempty"`
|
||||
Description []string `gorm:"type:text[]" json:"description,omitempty"`
|
||||
Publisher []string `gorm:"type:text[]" json:"publisher,omitempty"`
|
||||
Contributor []string `gorm:"type:text[]" json:"contributor,omitempty"`
|
||||
Date []string `gorm:"type:text[]" json:"date,omitempty"`
|
||||
Type []string `gorm:"type:text[]" json:"type,omitempty"`
|
||||
Format []string `gorm:"type:text[]" json:"format,omitempty"`
|
||||
Identifier []string `gorm:"type:text[]" json:"identifier,omitempty"`
|
||||
Source []string `gorm:"type:text[]" json:"source,omitempty"`
|
||||
Language []string `gorm:"type:text[]" json:"language,omitempty"`
|
||||
Relation []string `gorm:"type:text[]" json:"relation,omitempty"`
|
||||
Coverage []string `gorm:"type:text[]" json:"coverage,omitempty"`
|
||||
Rights []string `gorm:"type:text[]" json:"rights,omitempty"`
|
||||
}
|
||||
|
||||
type ITunesFeedExtension struct {
|
||||
gorm.Model
|
||||
Author string `json:"author,omitempty"`
|
||||
Block string `json:"block,omitempty"`
|
||||
Categories []*ITunesCategory `gorm:"many2many:feed_itunes_categories;" json:"categories,omitempty"`
|
||||
Explicit string `json:"explicit,omitempty"`
|
||||
Keywords string `json:"keywords,omitempty"`
|
||||
Owner *ITunesOwner `gorm:"foreignKey:ID" json:"owner,omitempty"`
|
||||
Subtitle string `json:"subtitle,omitempty"`
|
||||
Summary string `json:"summary,omitempty"`
|
||||
Image string `json:"image,omitempty"`
|
||||
Complete string `json:"complete,omitempty"`
|
||||
NewFeedURL string `json:"newFeedUrl,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
type ITunesItemExtension struct {
|
||||
gorm.Model
|
||||
Author string `json:"author,omitempty"`
|
||||
Block string `json:"block,omitempty"`
|
||||
Duration string `json:"duration,omitempty"`
|
||||
Explicit string `json:"explicit,omitempty"`
|
||||
Keywords string `json:"keywords,omitempty"`
|
||||
Subtitle string `json:"subtitle,omitempty"`
|
||||
Summary string `json:"summary,omitempty"`
|
||||
Image string `json:"image,omitempty"`
|
||||
IsClosedCaptioned string `json:"isClosedCaptioned,omitempty"`
|
||||
Episode string `json:"episode,omitempty"`
|
||||
Season string `json:"season,omitempty"`
|
||||
Order string `json:"order,omitempty"`
|
||||
EpisodeType string `json:"episodeType,omitempty"`
|
||||
}
|
||||
|
||||
type ITunesCategory struct {
|
||||
gorm.Model
|
||||
Text string `json:"text,omitempty"`
|
||||
Subcategory *ITunesCategory `gorm:"many2many:feed_itunes_categories;" json:"subcategory,omitempty"`
|
||||
}
|
||||
|
||||
func (ITunesCategory) TableName() string {
|
||||
return "feed_itunes_categories"
|
||||
}
|
||||
|
||||
type ITunesOwner struct {
|
||||
gorm.Model
|
||||
Email string `json:"email,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
type Extensions map[string]map[string][]Extension
|
||||
|
||||
type Extension struct {
|
||||
gorm.Model
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
Attrs map[string]string `gorm:"type:json" json:"attrs"`
|
||||
Children map[string][]Extension `gorm:"type:json" json:"children"`
|
||||
}
|
||||
|
||||
type TemplateData struct {
|
||||
Title string
|
||||
Description string
|
||||
Keywords string
|
||||
Author string
|
||||
CanonicalURL string
|
||||
FeedCount int
|
||||
DatabaseSize string
|
||||
Request *http.Request
|
||||
ParseErrors []ParseResult
|
||||
}
|
||||
|
||||
type ParseResult struct {
|
||||
FeedURL string
|
||||
Msg string
|
||||
IsError bool
|
||||
}
|
||||
|
||||
func (d *TemplateData) GetDatabaseSizeAndFeedCount() {
|
||||
d.DatabaseSize = GetDBSize()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue