mirror of
https://github.com/nkanaev/yarr.git
synced 2026-06-15 12:35:04 +00:00
rename Storage struct to SQLiteStorage
This commit is contained in:
@@ -24,7 +24,7 @@ type CreateFeedParams struct {
|
||||
FolderID *int64
|
||||
}
|
||||
|
||||
func (s *Storage) CreateFeed(params CreateFeedParams) *Feed {
|
||||
func (s *SQLiteStorage) CreateFeed(params CreateFeedParams) *Feed {
|
||||
title := params.Title
|
||||
if title == "" {
|
||||
title = params.FeedLink
|
||||
@@ -57,7 +57,7 @@ func (s *Storage) CreateFeed(params CreateFeedParams) *Feed {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Storage) DeleteFeed(feedId int64) bool {
|
||||
func (s *SQLiteStorage) DeleteFeed(feedId int64) bool {
|
||||
result, err := s.db.Exec(`delete from feeds where id = :id`, sql.Named("id", feedId))
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
@@ -80,7 +80,7 @@ type UpdateFeedParams struct {
|
||||
Icon Nullable[[]byte]
|
||||
}
|
||||
|
||||
func (s *Storage) UpdateFeed(feedId int64, params UpdateFeedParams) (bool, error) {
|
||||
func (s *SQLiteStorage) UpdateFeed(feedId int64, params UpdateFeedParams) (bool, error) {
|
||||
_, err := s.db.Exec(`
|
||||
update feeds set
|
||||
title = coalesce(:title, title),
|
||||
@@ -104,7 +104,7 @@ func (s *Storage) UpdateFeed(feedId int64, params UpdateFeedParams) (bool, error
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (s *Storage) ListFeeds() []Feed {
|
||||
func (s *SQLiteStorage) ListFeeds() []Feed {
|
||||
result := make([]Feed, 0)
|
||||
rows, err := s.db.Query(`
|
||||
select id, folder_id, title, description, link, feed_link,
|
||||
@@ -136,7 +136,7 @@ func (s *Storage) ListFeeds() []Feed {
|
||||
return result
|
||||
}
|
||||
|
||||
func (s *Storage) GetFeed(id int64) *Feed {
|
||||
func (s *SQLiteStorage) GetFeed(id int64) *Feed {
|
||||
var f Feed
|
||||
err := s.db.QueryRow(`
|
||||
select
|
||||
|
||||
@@ -13,7 +13,7 @@ type FeedState struct {
|
||||
HTTPEtag string
|
||||
}
|
||||
|
||||
func (s *Storage) ListFeedStates() ([]FeedState, error) {
|
||||
func (s *SQLiteStorage) ListFeedStates() ([]FeedState, error) {
|
||||
rows, err := s.db.Query(`
|
||||
select
|
||||
feed_id
|
||||
@@ -46,7 +46,7 @@ func (s *Storage) ListFeedStates() ([]FeedState, error) {
|
||||
return states, nil
|
||||
}
|
||||
|
||||
func (s *Storage) GetFeedState(feedID int64) (*FeedState, error) {
|
||||
func (s *SQLiteStorage) GetFeedState(feedID int64) (*FeedState, error) {
|
||||
var state FeedState
|
||||
err := s.db.QueryRow(`
|
||||
select
|
||||
@@ -79,7 +79,7 @@ type UpdateFeedStateParams struct {
|
||||
HTTPEtag *string
|
||||
}
|
||||
|
||||
func (s *Storage) UpdateFeedState(feedID int64, params UpdateFeedStateParams) (bool, error) {
|
||||
func (s *SQLiteStorage) UpdateFeedState(feedID int64, params UpdateFeedStateParams) (bool, error) {
|
||||
lastError := params.LastError
|
||||
if lastError != nil && *lastError == "" {
|
||||
lastError = nil
|
||||
|
||||
@@ -11,7 +11,7 @@ type Folder struct {
|
||||
IsExpanded bool `json:"is_expanded"`
|
||||
}
|
||||
|
||||
func (s *Storage) CreateFolder(title string) *Folder {
|
||||
func (s *SQLiteStorage) CreateFolder(title string) *Folder {
|
||||
expanded := true
|
||||
row := s.db.QueryRow(`
|
||||
insert into folders (title, is_expanded) values (:title, :is_expanded)
|
||||
@@ -30,7 +30,7 @@ func (s *Storage) CreateFolder(title string) *Folder {
|
||||
return &Folder{Id: id, Title: title, IsExpanded: expanded}
|
||||
}
|
||||
|
||||
func (s *Storage) DeleteFolder(folderId int64) bool {
|
||||
func (s *SQLiteStorage) DeleteFolder(folderId int64) bool {
|
||||
_, err := s.db.Exec(`delete from folders where id = :id`, sql.Named("id", folderId))
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
@@ -43,7 +43,7 @@ type UpdateFolderParams struct {
|
||||
IsExpanded *bool
|
||||
}
|
||||
|
||||
func (s *Storage) UpdateFolder(folderId int64, params UpdateFolderParams) (bool, error) {
|
||||
func (s *SQLiteStorage) UpdateFolder(folderId int64, params UpdateFolderParams) (bool, error) {
|
||||
_, err := s.db.Exec(`
|
||||
update folders set
|
||||
title = coalesce(:title, title),
|
||||
@@ -61,7 +61,7 @@ func (s *Storage) UpdateFolder(folderId int64, params UpdateFolderParams) (bool,
|
||||
return true, nil
|
||||
}
|
||||
|
||||
func (s *Storage) ListFolders() []Folder {
|
||||
func (s *SQLiteStorage) ListFolders() []Folder {
|
||||
result := make([]Folder, 0)
|
||||
rows, err := s.db.Query(`
|
||||
select id, title, is_expanded
|
||||
|
||||
@@ -116,7 +116,7 @@ func (list ItemList) Swap(i, j int) {
|
||||
list[i], list[j] = list[j], list[i]
|
||||
}
|
||||
|
||||
func (s *Storage) CreateItems(items []Item) bool {
|
||||
func (s *SQLiteStorage) CreateItems(items []Item) bool {
|
||||
tx, err := s.db.Begin()
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
@@ -241,7 +241,7 @@ func listQueryPredicate(filter ItemFilter, newestFirst bool) (string, []any) {
|
||||
return predicate, args
|
||||
}
|
||||
|
||||
func (s *Storage) CountItems() int {
|
||||
func (s *SQLiteStorage) CountItems() int {
|
||||
var count int
|
||||
err := s.db.QueryRow(`select count(*) from items`).Scan(&count)
|
||||
if err != nil {
|
||||
@@ -251,7 +251,7 @@ func (s *Storage) CountItems() int {
|
||||
return count
|
||||
}
|
||||
|
||||
func (s *Storage) ListItems(
|
||||
func (s *SQLiteStorage) ListItems(
|
||||
filter ItemFilter,
|
||||
limit int,
|
||||
newestFirst bool,
|
||||
@@ -305,7 +305,7 @@ func (s *Storage) ListItems(
|
||||
return result
|
||||
}
|
||||
|
||||
func (s *Storage) GetItem(id int64) *Item {
|
||||
func (s *SQLiteStorage) GetItem(id int64) *Item {
|
||||
i := &Item{}
|
||||
err := s.db.QueryRow(`
|
||||
select
|
||||
@@ -324,7 +324,7 @@ func (s *Storage) GetItem(id int64) *Item {
|
||||
return i
|
||||
}
|
||||
|
||||
func (s *Storage) UpdateItemStatus(item_id int64, status ItemStatus) bool {
|
||||
func (s *SQLiteStorage) UpdateItemStatus(item_id int64, status ItemStatus) bool {
|
||||
_, err := s.db.Exec(`update items set status = :status where id = :id`,
|
||||
sql.Named("status", status),
|
||||
sql.Named("id", item_id),
|
||||
@@ -332,7 +332,7 @@ func (s *Storage) UpdateItemStatus(item_id int64, status ItemStatus) bool {
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func (s *Storage) MarkItemsRead(filter MarkFilter) bool {
|
||||
func (s *SQLiteStorage) MarkItemsRead(filter MarkFilter) bool {
|
||||
predicate, args := listQueryPredicate(ItemFilter{
|
||||
FolderID: filter.FolderID,
|
||||
FeedID: filter.FeedID,
|
||||
@@ -355,7 +355,7 @@ type FeedStat struct {
|
||||
StarredCount int64 `json:"starred"`
|
||||
}
|
||||
|
||||
func (s *Storage) FeedStats() []FeedStat {
|
||||
func (s *SQLiteStorage) FeedStats() []FeedStat {
|
||||
result := make([]FeedStat, 0)
|
||||
rows, err := s.db.Query(fmt.Sprintf(`
|
||||
select
|
||||
@@ -388,7 +388,7 @@ var (
|
||||
// - Never delete starred entries.
|
||||
// - Keep at least 50 latest items for each feed.
|
||||
// - Delete entries older than 90 days relative to the latest arrived item in the same feed.
|
||||
func (s *Storage) DeleteOldItems() {
|
||||
func (s *SQLiteStorage) DeleteOldItems() {
|
||||
result, err := s.db.Exec(`
|
||||
delete from items
|
||||
where id in (
|
||||
|
||||
@@ -35,7 +35,7 @@ type testItemScope struct {
|
||||
folder1, folder2 *Folder
|
||||
}
|
||||
|
||||
func testItemsSetup(db *Storage) testItemScope {
|
||||
func testItemsSetup(db *SQLiteStorage) testItemScope {
|
||||
folder1 := db.CreateFolder("folder1")
|
||||
folder2 := db.CreateFolder("folder2")
|
||||
|
||||
@@ -115,7 +115,7 @@ func testItemsSetup(db *Storage) testItemScope {
|
||||
}
|
||||
}
|
||||
|
||||
func getItem(db *Storage, guid string) *Item {
|
||||
func getItem(db *SQLiteStorage, guid string) *Item {
|
||||
i := &Item{}
|
||||
err := db.db.QueryRow(`
|
||||
select
|
||||
|
||||
@@ -49,7 +49,7 @@ func settingsDefaults() Settings {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Storage) GetSettings() Settings {
|
||||
func (s *SQLiteStorage) GetSettings() Settings {
|
||||
result := settingsDefaults()
|
||||
rows, err := s.db.Query(`select key, val from settings;`)
|
||||
if err != nil {
|
||||
@@ -102,7 +102,7 @@ type UpdateSettingsParams struct {
|
||||
Language *string `json:"language"`
|
||||
}
|
||||
|
||||
func (s *Storage) UpdateSettings(params UpdateSettingsParams) bool {
|
||||
func (s *SQLiteStorage) UpdateSettings(params UpdateSettingsParams) bool {
|
||||
tx, err := s.db.Begin()
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
|
||||
@@ -17,7 +17,7 @@ func init() {
|
||||
})
|
||||
}
|
||||
|
||||
type Storage struct {
|
||||
type SQLiteStorage struct {
|
||||
db *sql.DB
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ func SetNullable[T any](v *T) Nullable[T] {
|
||||
return Nullable[T]{Set: true, Value: v}
|
||||
}
|
||||
|
||||
func New(path string) (*Storage, error) {
|
||||
func New(path string) (*SQLiteStorage, error) {
|
||||
if pos := strings.IndexRune(path, '?'); pos == -1 {
|
||||
params := "_journal=WAL&_sync=NORMAL&_busy_timeout=5000&cache=shared"
|
||||
log.Printf("opening db with params: %s", params)
|
||||
@@ -45,9 +45,9 @@ func New(path string) (*Storage, error) {
|
||||
if err = migrate(db); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Storage{db: db}, nil
|
||||
return &SQLiteStorage{db: db}, nil
|
||||
}
|
||||
|
||||
func (s *Storage) Close() error {
|
||||
func (s *SQLiteStorage) Close() error {
|
||||
return s.db.Close()
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func testDB() *Storage {
|
||||
func testDB() *SQLiteStorage {
|
||||
log.SetOutput(io.Discard)
|
||||
db, err := New(":memory:")
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user