/internal/database/database.go
https://github.com/go-shiori/shiori · Go · 82 lines · 44 code · 19 blank · 19 comment · 4 complexity · 9a2e92c8d0602314121d73670f9d5b97 MD5 · raw file
- package database
- import (
- "database/sql"
- "github.com/go-shiori/shiori/internal/model"
- )
- // OrderMethod is the order method for getting bookmarks
- type OrderMethod int
- const (
- // DefaultOrder is oldest to newest.
- DefaultOrder OrderMethod = iota
- // ByLastAdded is from newest addition to the oldest.
- ByLastAdded
- // ByLastModified is from latest modified to the oldest.
- ByLastModified
- )
- // GetBookmarksOptions is options for fetching bookmarks from database.
- type GetBookmarksOptions struct {
- IDs []int
- Tags []string
- ExcludedTags []string
- Keyword string
- WithContent bool
- OrderMethod OrderMethod
- Limit int
- Offset int
- }
- // GetAccountsOptions is options for fetching accounts from database.
- type GetAccountsOptions struct {
- Keyword string
- Owner bool
- }
- // DB is interface for accessing and manipulating data in database.
- type DB interface {
- // SaveBookmarks saves bookmarks data to database.
- SaveBookmarks(bookmarks ...model.Bookmark) ([]model.Bookmark, error)
- // GetBookmarks fetch list of bookmarks based on submitted options.
- GetBookmarks(opts GetBookmarksOptions) ([]model.Bookmark, error)
- // GetBookmarksCount get count of bookmarks in database.
- GetBookmarksCount(opts GetBookmarksOptions) (int, error)
- // DeleteBookmarks removes all record with matching ids from database.
- DeleteBookmarks(ids ...int) error
- // GetBookmark fetchs bookmark based on its ID or URL.
- GetBookmark(id int, url string) (model.Bookmark, bool)
- // SaveAccount saves new account in database
- SaveAccount(model.Account) error
- // GetAccounts fetch list of account (without its password) with matching keyword.
- GetAccounts(opts GetAccountsOptions) ([]model.Account, error)
- // GetAccount fetch account with matching username.
- GetAccount(username string) (model.Account, bool)
- // DeleteAccounts removes all record with matching usernames
- DeleteAccounts(usernames ...string) error
- // GetTags fetch list of tags and its frequency from database.
- GetTags() ([]model.Tag, error)
- // RenameTag change the name of a tag.
- RenameTag(id int, newName string) error
- // CreateNewID creates new id for specified table.
- CreateNewID(table string) (int, error)
- }
- func checkError(err error) {
- if err != nil && err != sql.ErrNoRows {
- panic(err)
- }
- }