significant improvements to database (adding/removing books, categories, etc.)
This commit is contained in:
parent
a94fafe265
commit
83ffb5502d
35
dbLayer.py
35
dbLayer.py
|
@ -5,11 +5,13 @@ dbFile = 'sqLibrary.db'
|
||||||
bookTable = 'books'
|
bookTable = 'books'
|
||||||
bookRemovedTable='books_deleted'
|
bookRemovedTable='books_deleted'
|
||||||
bookCategoryTable='book_categories'
|
bookCategoryTable='book_categories'
|
||||||
|
bookRemovedCategoryTable='books_deleted_categories'
|
||||||
categoryTable = 'categories'
|
categoryTable = 'categories'
|
||||||
|
|
||||||
|
|
||||||
bookTableCreation = '''
|
bookTableCreation = '''
|
||||||
CREATE TABLE IF NOT EXISTS books
|
CREATE TABLE IF NOT EXISTS books
|
||||||
(id INTEGER PRIMARY KEY,
|
(id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
isbn, lccn, title, subtitle, authors, edition,
|
isbn, lccn, title, subtitle, authors, edition,
|
||||||
publisher, publish_year, publish_month, publish_location,
|
publisher, publish_year, publish_month, publish_location,
|
||||||
pages, pagination, weight, last_updated);
|
pages, pagination, weight, last_updated);
|
||||||
|
@ -21,10 +23,13 @@ CREATE TABLE IF NOT EXISTS books_deleted
|
||||||
pages, pagination, weight, last_updated);
|
pages, pagination, weight, last_updated);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS categories
|
CREATE TABLE IF NOT EXISTS categories
|
||||||
(cat_id INTEGER PRIMARY KEY, category STRING);
|
(cat_id INTEGER PRIMARY KEY, category STRING UNIQUE ON CONFLICT IGNORE);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS book_categories
|
CREATE TABLE IF NOT EXISTS book_categories
|
||||||
(id INTEGER, cat_id INTEGER);
|
(id INTEGER, cat_id INTEGER);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS books_deleted_categories
|
||||||
|
(id INTEGER, cat_id INTEGER);
|
||||||
'''
|
'''
|
||||||
|
|
||||||
columns = ['id', 'isbn', 'lccn',
|
columns = ['id', 'isbn', 'lccn',
|
||||||
|
@ -45,16 +50,30 @@ END;
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS delete_books_backup BEFORE DELETE ON books
|
CREATE TRIGGER IF NOT EXISTS delete_books_backup BEFORE DELETE ON books
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO books_deleted (isbn, lccn,
|
INSERT INTO books_deleted (id, isbn, lccn,
|
||||||
title, subtitle, authors, edition,
|
title, subtitle, authors, edition,
|
||||||
publisher, publish_year, publish_month, publish_location,
|
publisher, publish_year, publish_month, publish_location,
|
||||||
pages, pagination, weight, last_updated)
|
pages, pagination, weight, last_updated)
|
||||||
SELECT isbn, lccn,
|
SELECT id, isbn, lccn,
|
||||||
title, subtitle, authors, edition,
|
title, subtitle, authors, edition,
|
||||||
publisher, publish_year, publish_month, publish_location,
|
publisher, publish_year, publish_month, publish_location,
|
||||||
pages, pagination, weight, last_updated
|
pages, pagination, weight, last_updated
|
||||||
FROM books
|
FROM books
|
||||||
WHERE rowid = old.rowid;
|
WHERE rowid = old.rowid;
|
||||||
|
INSERT INTO books_deleted_categories (id, cat_id)
|
||||||
|
SELECT id, cat_id FROM book_categories WHERE id = old.rowid;
|
||||||
|
DELETE FROM book_categories WHERE id = old.rowid;
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER IF NOT EXISTS delete_backup AFTER DELETE ON books_deleted
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM books_deleted_categories WHERE id = old.rowid;
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TRIGGER IF NOT EXISTS delete_category AFTER DELETE ON categories
|
||||||
|
BEGIN
|
||||||
|
DELETE FROM book_categories WHERE cat_id = old.cat_id;
|
||||||
|
DELETE FROM books_deleted_categories WHERE cat_id = old.cat_id;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
CREATE TRIGGER IF NOT EXISTS insert_book_category_time AFTER INSERT ON book_categories
|
CREATE TRIGGER IF NOT EXISTS insert_book_category_time AFTER INSERT ON book_categories
|
||||||
|
@ -199,11 +218,13 @@ def removeBooks(books):
|
||||||
def restoreBooks(books):
|
def restoreBooks(books):
|
||||||
conn = sqlite3.connect(dbFile)
|
conn = sqlite3.connect(dbFile)
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
query1 = "INSERT INTO "+bookTable+" ("+",".join(map(colify,columns[1:]))+") SELECT "+",".join(map(colify,columns[1:]))+" FROM "+bookRemovedTable+" WHERE id = :id;"
|
query1 = "INSERT INTO "+bookTable+" ("+",".join(map(colify,columns))+") SELECT "+",".join(map(colify,columns))+" FROM "+bookRemovedTable+" WHERE id = :id;"
|
||||||
query2 = "DELETE FROM " +bookRemovedTable+ " WHERE id = :id;"
|
query2 = "INSERT INTO "+bookCategoryTable+" (id, cat_id) SELECT id,cat_id FROM "+bookRemovedCategoryTable+" WHERE id = :id;"
|
||||||
|
query3 = "DELETE FROM " +bookRemovedTable+ " WHERE id = :id;"
|
||||||
for book in books:
|
for book in books:
|
||||||
c.execute(query1,book)
|
c.execute(query1,book)
|
||||||
c.execute(query2,book)
|
c.execute(query2,book)
|
||||||
|
c.execute(query3,book)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
c.close()
|
c.close()
|
||||||
|
|
||||||
|
@ -282,10 +303,8 @@ def deleteCategories(cats):
|
||||||
conn = sqlite3.connect(dbFile)
|
conn = sqlite3.connect(dbFile)
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
query1 = "DELETE FROM " +categoryTable+ " WHERE cat_id = :id;"
|
query1 = "DELETE FROM " +categoryTable+ " WHERE cat_id = :id;"
|
||||||
query2 = "DELETE FROM " +bookCategoryTable+ " WHERE cat_id = :id;"
|
|
||||||
for cat in cats:
|
for cat in cats:
|
||||||
c.execute(query1, cat)
|
c.execute(query1, cat)
|
||||||
c.execute(query2, cat)
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
c.close()
|
c.close()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue