This repository has been archived on 2022-08-23. You can view files and clone it, but cannot push or open issues or pull requests.
ztm/model.py

76 lines
2 KiB
Python
Raw Normal View History

2018-02-14 15:16:03 +00:00
import sqlite3
from abcex import Abcex
class Model:
def __init__(self):
self.conn = sqlite3.connect('ztm.db')
self.conn.row_factory = sqlite3.Row
self.abcex = Abcex()
def get_tasks_by_tag(self, tag_name):
query = '''
SELECT t.* FROM task t
LEFT JOIN tag_task tgt ON t.id = tgt.task_id
LEFT JOIN tag tg ON tg.id = tgt.tag_id
WHERE tg.name = ?
'''
return self.conn.execute(query, tag_name)
def get_all_tasks(self):
query = '''
SELECT t.* FROM task t
'''
return self.conn.execute(query)
def create_task_draft(self, description):
query = '''
INSERT INTO task
(description, created_at)
VALUES
(?, DATETIME('now'))
'''
cursor = self.conn.cursor()
cursor.execute(query, (description,))
task_id = cursor.lastrowid
aid = self.abcex.encode(task_id)
cursor.execute('UPDATE task SET aid=? WHERE id=?', (aid, task_id))
self.conn.commit()
return aid
def get_task(self, aid):
query = '''
SELECT t.* FROM task t
LEFT JOIN tag_task tgt ON t.id = tgt.task_id
LEFT JOIN tag tg ON tg.id = tgt.tag_id
WHERE t.aid = ?
'''
cursor = self.conn.cursor()
results = cursor.execute(query, (aid,))
return results.fetchone()
2018-02-14 23:34:54 +00:00
def save_content(self, aid, content):
cursor = self.conn.cursor()
cursor.execute('UPDATE task SET content=? WHERE aid=?', (content, aid))
self.conn.commit()
2018-02-15 11:08:12 +00:00
def toggle_long_term(self, aid):
cursor = self.conn.cursor()
cursor.execute('UPDATE task SET long_term=NOT long_term WHERE aid=?', (aid))
self.conn.commit()
2018-02-16 05:31:30 +00:00
def toggle_done(self, aid):
cursor = self.conn.cursor()
cursor.execute('UPDATE task SET done=NOT done, finished_at=DATETIME(\'now\') WHERE aid=?', (aid))
self.conn.commit()