domain

package
v0.0.0-...-6fe3cf3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2024 License: GPL-3.0 Imports: 16 Imported by: 0

Documentation

Overview

Package domain rsshub领域逻辑

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type RepoContent

type RepoContent interface {
	// UpsertContent 添加一条文章
	UpsertContent(ctx context.Context, content *RssContent) error
	// DeleteSourceContents 删除订阅源的所有文章,返回被删除的文章数
	DeleteSourceContents(ctx context.Context, channelID int64) (int64, error)
	// IsContentHashIDExist hash id 对应的文章是否已存在
	IsContentHashIDExist(ctx context.Context, hashID string) (bool, error)
}

RepoContent RSS 推送信息存储接口

type RepoMultiQuery

type RepoMultiQuery interface {
	// GetSubscribesBySource 获取一个源对应的所有订阅群组
	GetSubscribesBySource(ctx context.Context, feedPath string) ([]*RssSubscribe, error)
	// GetIfExistedSubscribe 判断一个群组是否已订阅了一个源
	GetIfExistedSubscribe(ctx context.Context, gid int64, feedPath string) (*RssSubscribe, bool, error)
	// GetSubscribedChannelsByGroupID 获取该群所有的订阅
	GetSubscribedChannelsByGroupID(ctx context.Context, gid int64) ([]*RssSource, error)
}

RepoMultiQuery 多表查询接口

type RepoSource

type RepoSource interface {
	// UpsertSource 添加一个订阅源
	UpsertSource(ctx context.Context, rfc *RssSource) error
	// GetSources 获取所有订阅源信息
	GetSources(ctx context.Context) ([]RssSource, error)
	// GetSourceByRssHubFeedLink 通过 rssHub 的 feed 链接获取订阅源信息
	GetSourceByRssHubFeedLink(ctx context.Context, url string) (*RssSource, error)
	// DeleteSource 删除一个订阅源
	DeleteSource(ctx context.Context, fID int64) error
}

RepoSource RSS 订阅源存储接口

type RepoStorage

type RepoStorage interface {
	RepoContent
	RepoSource
	RepoSubscribe
	RepoMultiQuery
	// contains filtered or unexported methods
}

RepoStorage 定义RepoStorage接口

type RepoSubscribe

type RepoSubscribe interface {
	// CreateSubscribe 添加一个订阅
	CreateSubscribe(ctx context.Context, gid, rssSourceID int64) error
	// DeleteSubscribe 删除一个订阅
	DeleteSubscribe(ctx context.Context, subscribeID int64) error
	// GetSubscribeByID 获取一个订阅
	GetSubscribeByID(ctx context.Context, gid int64, subscribeID int64) (*RssSubscribe, error)
	// GetSubscribes 获取全部订阅
	GetSubscribes(ctx context.Context) ([]*RssSubscribe, error)
}

RepoSubscribe RSS 订阅存储接口

type RssClientView

type RssClientView struct {
	Source   *RssSource
	Contents []*RssContent
}

RssClientView 频道视图

func (*RssClientView) Sort

func (r *RssClientView) Sort()

Sort ... order by Date desc

type RssContent

type RssContent struct {
	// Id 自增id
	ID          int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"`
	HashID      string    `gorm:"column:hash_id;unique"        json:"hash_id"`
	RssSourceID int64     `gorm:"column:rss_source_id;not null"   json:"rss_source_id"`
	Title       string    `gorm:"column:title"       json:"title"`
	Description string    `gorm:"column:description" json:"description"`
	Link        string    `gorm:"column:link"        json:"link"`
	Date        time.Time `gorm:"column:date"        json:"date"`
	Author      string    `gorm:"column:author"      json:"author"`
	Thumbnail   string    `gorm:"column:thumbnail"   json:"thumbnail"`
	Content     string    `gorm:"column:content"     json:"content"`
	//// Ctime create time
	// Ctime int64 `gorm:"column:ctime;default:current_timestamp"  json:"ctime"`
	// Mtime update time
	Mtime time.Time `gorm:"column:mtime;default:current_timestamp;" json:"mtime"`
}

RssContent 订阅的RSS频道的推送信息

func (RssContent) TableName

func (RssContent) TableName() string

TableName ...

type RssDomain

type RssDomain interface {
	// Subscribe 订阅Rss频道
	Subscribe(ctx context.Context, gid int64, route string) (rv *RssClientView, isChannelExisted,
		isSubExisted bool, err error)
	// Unsubscribe 取消订阅Rss频道
	Unsubscribe(ctx context.Context, gid int64, route string) (err error)
	// GetSubscribedChannelsByGroupID 获取群组订阅的Rss频道
	GetSubscribedChannelsByGroupID(ctx context.Context, gid int64) (rv []*RssClientView, err error)
	// Sync 同步Rss频道
	// 返回群组-频道推送视图  map[群组]推送内容数组
	Sync(ctx context.Context) (groupView map[int64][]*RssClientView, err error)
}

RssDomain RssRepo定义

func NewRssDomain

func NewRssDomain(dbPath string) (RssDomain, error)

NewRssDomain 新建RssDomain,调用方保证单例模式

type RssHubClient

type RssHubClient struct {
	*http.Client
}

RssHubClient rss hub client (http)

func (*RssHubClient) FetchFeed

func (c *RssHubClient) FetchFeed(path string) (feed *gofeed.Feed, err error)

FetchFeed 获取rss feed信息

type RssSource

type RssSource struct {
	// Id 自增id
	ID int64 `gorm:"column:id;primary_key;AUTO_INCREMENT"`
	// RssHubFeedPath 频道路由 用于区分rss_hub 不同的频道 例如: `/bangumi/tv/calendar/today`
	RssHubFeedPath string `gorm:"column:rss_hub_feed_path;not null;unique;" json:"rss_hub_feed_path"`
	// Title 频道标题
	Title string `gorm:"column:title"        json:"title"`
	// ChannelDesc 频道描述
	ChannelDesc string `gorm:"column:channel_desc" json:"channel_desc"`
	// ImageURL 频道图片
	ImageURL string `gorm:"column:image_url"    json:"image_url"`
	// Link 频道链接
	Link string `gorm:"column:link"         json:"link"`
	// UpdatedParsed RSS页面更新时间
	UpdatedParsed time.Time `gorm:"column:updated_parsed" json:"updated_parsed"`
	//// Ctime create time
	// Ctime int64 `gorm:"column:ctime;default:current_timestamp"  json:"ctime"`
	// Mtime update time
	Mtime time.Time `gorm:"column:mtime;default:current_timestamp;" json:"mtime"`
}

RssSource RSS频道

func (RssSource) IfNeedUpdate

func (r RssSource) IfNeedUpdate(cmp *RssSource) bool

IfNeedUpdate ...

func (RssSource) TableName

func (RssSource) TableName() string

TableName ...

type RssSubscribe

type RssSubscribe struct {
	// Id 自增id
	ID int64 `gorm:"column:id;primary_key;AUTO_INCREMENT"`
	// 订阅群组
	GroupID int64 `gorm:"column:group_id;not null;uniqueIndex:uk_sid_gid"`
	// 订阅频道
	RssSourceID int64 `gorm:"column:rss_source_id;not null;uniqueIndex:uk_sid_gid"`
	//// Ctime create time
	// Ctime int64 `gorm:"column:ctime;default:current_timestamp"  json:"ctime"`
	// Mtime update time
	Mtime time.Time `gorm:"column:mtime;default:current_timestamp;" json:"mtime"`
}

RssSubscribe 订阅关系表:群组-RSS频道

func (RssSubscribe) TableName

func (RssSubscribe) TableName() string

TableName ...

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL