mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
Final Refactoring before alpha release
This commit is contained in:
86
src/backend/lib/storage.py
Executable file
86
src/backend/lib/storage.py
Executable file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/python
|
||||
import sqlite3
|
||||
import sys
|
||||
|
||||
# sys.path.insert(1, '../')
|
||||
from .config import Config
|
||||
|
||||
# db_pointer = Config().catalogue_db
|
||||
|
||||
|
||||
class Storage:
|
||||
"""Contains all methods for system storage"""
|
||||
|
||||
def __init__(self, db_pointer=None):
|
||||
# Optionaly pass db_file to specify another db or for testing
|
||||
if db_pointer is None:
|
||||
db_pointer = Config().catalogue_db
|
||||
self.db_file = db_pointer
|
||||
self.database()
|
||||
# self.create_tables()
|
||||
|
||||
def database(self):
|
||||
"""Create database cursor"""
|
||||
try:
|
||||
self.db = sqlite3.connect(self.db_file)
|
||||
self.cursor = self.db.cursor()
|
||||
return True
|
||||
except Exception as e:
|
||||
print(self.db_file)
|
||||
print(e)
|
||||
return False
|
||||
|
||||
def create_tables(self):
|
||||
"""Create table structure"""
|
||||
q_check = "SELECT * FROM books"
|
||||
q_create = """CREATE TABLE books(title text, author text,
|
||||
categories text null, cover blob null, pages int null, progress int null,
|
||||
file_name text)"""
|
||||
try:
|
||||
self.cursor.execute(q_check)
|
||||
except sqlite3.OperationalError as e:
|
||||
self.cursor.execute(q_create)
|
||||
|
||||
def insert_book(self, book):
|
||||
"""
|
||||
Insert book in database
|
||||
:returns: True if succeeds False if not
|
||||
"""
|
||||
q_x = """SELECT title FROM books WHERE EXISTS(SELECT * from books WHERE `title` = ?)"""
|
||||
q = """INSERT INTO books (title, author, cover, progress, file_name, pages) values (?, ?, ?, 0, ?, 0)"""
|
||||
try:
|
||||
try:
|
||||
cover_image = book[2].data
|
||||
except:
|
||||
cover_image = book[2]
|
||||
x = self.cursor.execute(q_x, (book[0],))
|
||||
try:
|
||||
len(x.fetchone()) > 0
|
||||
except Exception:
|
||||
if not book[2]: # If cover image is missing unset entry
|
||||
cover_image = None
|
||||
self.cursor.execute(q, (book[0], book[1], cover_image, book[3]))
|
||||
return True
|
||||
except Exception as e:
|
||||
print(e)
|
||||
return False
|
||||
|
||||
def book_paths_list(self):
|
||||
q = """SELECT file_name FROM books"""
|
||||
x = self.cursor.execute(q)
|
||||
try:
|
||||
x = x.fetchall()
|
||||
except Exception:
|
||||
x = []
|
||||
return x
|
||||
|
||||
def commit(self):
|
||||
try:
|
||||
self.db.commit()
|
||||
return True
|
||||
except Exception as e:
|
||||
return e
|
||||
|
||||
def close(self):
|
||||
self.db.close()
|
||||
return True
|
||||
Reference in New Issue
Block a user