You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.5 KiB
56 lines
2.5 KiB
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()
|