store

package
v1.1.7 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RamStore = &StoreInRam{
	StoreInfo: StoreInfo{
		BackendURL:  "comigo://main",
		Name:        "Comigo StoreInfo",
		Description: "Comigo Main book store",
	},

	ChildStores: sync.Map{},
}

RamStore 扫描后生成。可以有多个子书库。内部使用并发安全的 sync.Map 存储书籍和书组

Functions

func DeleteBookJson

func DeleteBookJson(book *model.Book) error

func GetBookInfoListByParentFolder

func GetBookInfoListByParentFolder(parentFolder string) (*model.BookInfos, error)

GetBookInfoListByParentFolder 根据父文件夹获取书籍列表

func GetChildBooksInfo

func GetChildBooksInfo(BookID string) (*model.BookInfos, error)

GetChildBooksInfo 根据 ID 获取书籍列表

func SaveBookJson

func SaveBookJson(book *model.Book) error

SaveBookJson 将单本书籍信息保存为 JSON 文件

func TopOfShelfInfo

func TopOfShelfInfo(sortBy string) ([]model.StoreBookInfo, error)

TopOfShelfInfo 获取顶层书架信息

Types

type Backend

type Backend struct {
	URL          string      `json:"url"`            // 本地书库为文件路径(/home/pi/books C:\Users\用户名\books或  file://some_path/books),其他类型的书库是对应文件服务的 url 形式,
	Type         BackendType `json:"backend_type"`   // 文件后端类型 1: 本地文件夹,2: SMB共享,3: SFTP服务器,4: WebDAV服务器,5: S3存储,6: FTP服务器
	ServerHost   string      `json:"server_host"`    // 文件服务的服务器地址,smb、ftp、sftp、webdav等类型的书库需要填写。
	ServerPort   int         `json:"server_port"`    // 文件服务的端口号,smb、ftp、sftp、webdav等类型的书库需要填写。
	NeedAuth     bool        `json:"need_auth"`      // 相关文件服务是否需要认证,smb、ftp、sftp、webdav等类型的书库需要填写。
	AuthUsername string      `json:"auth_username"`  // 认证用户名,smb、ftp、sftp、webdav等类型的书库需要填写。
	AuthPassword string      `json:"auth_password"`  // 认证密码,smb、ftp、sftp、webdav等类型的书库需要填写。
	SMBShareName string      `json:"smb_share_name"` // SMB共享名称,smb类型的书库需要填写
	SMBPath      string      `json:"smb_path"`       // SMB共享路径,smb类型的书库需要填写
}

Backend 文件后端。 可能是 1: 本地文件系统,2: SMB共享,3: SFTP服务器,4: WebDAV服务器,5: S3存储,6: FTP服务器 可能用到的字段都放进一个结构体;调用方只填需要字段 核心配置是“URL”,其余大多数参数都解析此URL生成。 本地书库为文件路径(/home/pi/books C:\Users\用户名\books或 file://some_path/books), 其他类型的书库是对应文件服务的 url 形式, 如 smb://workgroup;user:password@server/share/folder/books 或 sftp://<user>:<password>@<host>/<path> 或 webdav://192.168.1.100/books <scheme>://[<username>[:<password>]@]<host>[:<port>]/<base-path>/<resource-path> scheme 为 http 或 https(也接受 dav:// 与 davs:// 作为同义写法) 或 ftp://<user>:<password>@<host>:<port>/<dir1> ftps://<user>:<password>@<host>:<port>/<dir1> 或 s3://<S3_endpoint>[:<port>]/<bucket_name>/[<S3_prefix>] [region=<S3_region>] [config=<config_file_location> | config_server=<url>] [section=<section_name>]

func (*Backend) ParseFTPURL

func (backend *Backend) ParseFTPURL(u *url.URL) error

ParseFTPURL 解析FTP URL 格式: ftp://user:password@host:port/dir 或 ftps://user:password@host:port/dir

func (*Backend) ParseFileURL

func (backend *Backend) ParseFileURL(urlStr string) error

ParseFileURL 解析File URL 格式: file:///path/to/books 或 file:///C:/path/to/books

func (*Backend) ParseS3URL

func (backend *Backend) ParseS3URL(u *url.URL) error

ParseS3URL 解析S3 URL 格式: s3://endpoint/bucket/prefix

func (*Backend) ParseSFTPURL

func (backend *Backend) ParseSFTPURL(u *url.URL) error

ParseSFTPURL 解析SFTP URL 格式: sftp://user:password@host/path

func (*Backend) ParseSMBURL

func (backend *Backend) ParseSMBURL(u *url.URL) error

ParseSMBURL 解析SMB URL 格式: smb://workgroup;user:password@server/share/folder/books

func (*Backend) ParseStoreURL

func (backend *Backend) ParseStoreURL(urlStr string) error

ParseStoreURL 解析URL字符串并返回FileBackend配置 支持的URL格式: - 本地文件: file:///path/to/books 或 /path/to/books (Unix路径) 或 C:\path\to\books D:\path\to\books E:\path\to\books (Windows路径) - SMB: smb://workgroup;user:password@server/share/folder/books - SFTP: sftp://user:password@host/path - WebDAV: webdav://host/path 或 http://host/pathhttps://host/path - FTP: ftp://user:password@host:port/dir 或 ftps://user:password@host:port/dir - S3: s3://endpoint/bucket/prefix

func (*Backend) ParseWebDAVURL

func (backend *Backend) ParseWebDAVURL(u *url.URL) error

ParseWebDAVURL 解析WebDAV URL 格式: webdav://host/path 或 http://host/pathhttps://host/path

type BackendType

type BackendType int

BackendType 文件存储类型

const (
	LocalDisk BackendType = 1 + iota
	SMB
	SFTP
	WebDAV
	S3
	FTP
)

func (BackendType) String

func (f BackendType) String() string

type Store

type Store struct {
	StoreInfo
	BookMap      sync.Map // 拥有的书籍,key是BookID,存储 *Book 与 *BooksGroup
	BookMarksMap sync.Map // 书签,key是BookID,存储 BookMarks
}

Store 对应某个扫描路径的子书库,目前只支持本地书库

func (*Store) GenerateBookGroup

func (store *Store) GenerateBookGroup() error

GenerateBookGroup 分析书库中已有书籍的路径,生成书籍组信息

type StoreInRam

type StoreInRam struct {
	StoreInfo
	ChildStores sync.Map // key为路径 存储 *Store
}

StoreInRam 内存书库,扫描后生成。可以有多个子书库。

func (*StoreInRam) AddBookToSubStore

func (ramStore *StoreInRam) AddBookToSubStore(storeURL string, b *model.Book) error

AddBookToSubStore 将某一本书,放到BookMap里面去

func (*StoreInRam) AddBooks

func (ramStore *StoreInRam) AddBooks(books []*model.Book) error

AddBooks 添加多本书

func (*StoreInRam) AddStore

func (ramStore *StoreInRam) AddStore(storeURL string) error

AddStore 创建一个新书库

func (*StoreInRam) DeleteBook

func (ramStore *StoreInRam) DeleteBook(id string) error

func (*StoreInRam) GenerateBookGroup

func (ramStore *StoreInRam) GenerateBookGroup() (e error)

GenerateBookGroup 分析所有子书库,并并生成书籍组

func (*StoreInRam) GetArchiveBooks

func (ramStore *StoreInRam) GetArchiveBooks() []*model.Book

GetArchiveBooks 获取所有压缩包格式的书籍

func (*StoreInRam) GetBook

func (ramStore *StoreInRam) GetBook(id string) (*model.Book, error)

GetBook 根据 BookID 获取书籍 GetBookByID 根据 BookID 获取书籍

func (*StoreInRam) GetBookMarks

func (ramStore *StoreInRam) GetBookMarks(bookID string) (*model.BookMarks, error)

func (*StoreInRam) GetParentBookID

func (ramStore *StoreInRam) GetParentBookID(childID string) (string, error)

GetParentBookID 通过子书籍 ID 获取所属书组 ID

func (*StoreInRam) ListBooks

func (ramStore *StoreInRam) ListBooks() ([]*model.Book, error)

func (*StoreInRam) LoadBooks

func (ramStore *StoreInRam) LoadBooks() error

LoadBooks 从本地路径加载书籍信息

func (*StoreInRam) SaveBooksToJson added in v1.1.5

func (ramStore *StoreInRam) SaveBooksToJson() error

SaveBooksToJson 保存书籍信息到本地硬盘(JSON 文件)

func (*StoreInRam) StoreBook

func (ramStore *StoreInRam) StoreBook(b *model.Book) error

AddBook 添加一本书

func (*StoreInRam) StoreBookMark

func (ramStore *StoreInRam) StoreBookMark(mark *model.BookMark) error

type StoreInfo

type StoreInfo struct {
	BackendURL  string // 本地书库文件夹路径,或远程书库URL
	Name        string
	Description string
	Backend
}

StoreInfo 书库基本信息

Jump to

Keyboard shortcuts

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