import sqlite3 from sqlite3 import Error import os class DB: def __init__(self, api): self.conn = None self.api = api create_categories = """create table if not exists categories ( id text primary key, name text not null, unread_count integer, timestamp integer, date text ) """ create_feeds = """create table if not exists feeds ( id text primary key, name text not null, unread_count integer, timestamp integer, date text, category_id text, foreign key (category_id) references categories (id) ) """ try: self.conn = sqlite3.connect(os.path.expanduser("~") + '/.config/inomnibus/cache.db') self.conn.cursor().execute(create_categories) self.conn.cursor().execute(create_feeds) except Error as e: print(e) def refresh(self): self.api.refresh() for item in self.api.unreadCounts.keys(): if item[0:13] != "user/-/label/": continue data = self.api.unreadCounts[item] cur = self.conn.cursor() cur.execute("""insert into categories(id,name,unread_count,timestamp,date) values(:id,:name,:count,:ts,:d) on conflict(id) do update set unread_count = :count, timestamp = :ts, date = :d; """, {"id": item, "name": item[13:], "count": data[0], "ts": data[1], "d": data[2]}) self.conn.commit() for item in self.api.feeds: data = self.api.unreadCounts[item["id"]] cur.execute("""insert into feeds(id,name,unread_count,timestamp,date,category_id) values(:id,:name,:count,:ts,:d,:c_id) on conflict(id) do update set unread_count = :count, timestamp = :ts, date = :d,category_id = :c_id; """, {"id": item["id"], "name": item["title"], "count": data[0], "ts": data[1], "d": data[2], "c_id": item["categories"][0]["id"]}) self.conn.commit()