pyShelf Open Source Ebook Server 0.8.0
FOSS E-Book Server, https://pyshelf.com
src.backend.lib.storage.Storage Class Reference

Public Member Functions

 __init__ (self, config)
 get_connection_string (self)
 create_tables (self)
 insert_book (self, book)
 book_paths_list (self)
list() parse_collections_from_path (self, dict() book)
 make_collections (self)
 get_books (self, collection=None, skip=None, limit=None)
 get_book (self, id)
 get_collections (self)
 get_collection (self, name)
dict parse_advanced_query (self, str query)
 fuzzy_search_books (self, str query, int limit=30)

Public Attributes

 config = config
 sql = self.config.catalogue_db
 user = self.config.user
 password = self.config.password
 db_host = self.config.db_host
 db_port = self.config.db_port
 engine

Detailed Description

Create a new Storage object.

>>> db = Storage(config)

Parameters
----------
config : Config()
    Main program configuration.

Attributes
----------
config : Stores configuration
sql : Database Name
user : Database User Name
password : Database Password
db_host : Database Host
db_port : Database Port
engine : sqlalchemy.create_engine(url, executor, kw)

Constructor & Destructor Documentation

◆ __init__()

src.backend.lib.storage.Storage.__init__ ( self,
config )
Initialize storage object.

Member Function Documentation

◆ book_paths_list()

src.backend.lib.storage.Storage.book_paths_list ( self)
Get file paths from database for comparison to system files.

Returns
-------
_result : ScalarResult Object

◆ create_tables()

src.backend.lib.storage.Storage.create_tables ( self)
Create table structure.

◆ fuzzy_search_books()

src.backend.lib.storage.Storage.fuzzy_search_books ( self,
str query,
int limit = 30 )

◆ get_book()

src.backend.lib.storage.Storage.get_book ( self,
id )
Get book from database.

Parameters
----------
id : int
    Book ID to filter by.

Returns
-------
_result : ScalarResult Object

◆ get_books()

src.backend.lib.storage.Storage.get_books ( self,
collection = None,
skip = None,
limit = None )
Get books from database.

Parameters
----------
collection : int or None
    Collection ID to filter by.
skip : int or None
    Number of records to skip (offset).
limit : int or None
    Maximum number of records to return.

◆ get_collection()

src.backend.lib.storage.Storage.get_collection ( self,
name )
Get collection from database.

Returns
-------
_result : ScalarResult Object

◆ get_collections()

src.backend.lib.storage.Storage.get_collections ( self)
Get collections from database.

Returns
-------
_result : ScalarResult Object

◆ get_connection_string()

src.backend.lib.storage.Storage.get_connection_string ( self)
Get connection string.

Engine type references config.json:DB_ENGINE.

Returns
-------
str : sqlalchemy Connection String

◆ insert_book()

src.backend.lib.storage.Storage.insert_book ( self,
book )
Insert a new book into the database.

Parameters
----------
book: dict()
    Book object to insert.

Returns
-------
bool
    True on success False on failure

◆ make_collections()

src.backend.lib.storage.Storage.make_collections ( self)
Ensure collections exist and link them to books (many-to-many).

◆ parse_advanced_query()

dict src.backend.lib.storage.Storage.parse_advanced_query ( self,
str query )
Parse a query like 'title:"dark tower" author:king tags:fantasy'

◆ parse_collections_from_path()

list() src.backend.lib.storage.Storage.parse_collections_from_path ( self,
dict() book )
Parse book path's to determine common folder structure.

Stores collections based on shared paths.

Parameters
----------
book : dict()
    Book object to parse.

Returns
-------
collections : list()
    List of collections.

Member Data Documentation

◆ config

src.backend.lib.storage.Storage.config = config

◆ db_host

src.backend.lib.storage.Storage.db_host = self.config.db_host

◆ db_port

src.backend.lib.storage.Storage.db_port = self.config.db_port

◆ engine

src.backend.lib.storage.Storage.engine
Initial value:
= create_engine(self.get_connection_string(),
pool_pre_ping=True)

◆ password

src.backend.lib.storage.Storage.password = self.config.password

◆ sql

src.backend.lib.storage.Storage.sql = self.config.catalogue_db

◆ user

src.backend.lib.storage.Storage.user = self.config.user

The documentation for this class was generated from the following file: