Current value on delete + no create without parent

This commit is contained in:
2018-07-21 17:39:26 +02:00
parent 9f275c76be
commit b5619c41eb
4 changed files with 33 additions and 11 deletions

View File

@@ -106,7 +106,7 @@ def record_action(
def set_active(cursor, project_id=None, task_id=None, note_id=None): def set_active(cursor, project_id=None, task_id=None, note_id=None):
query = "UPDATE current SET {} = ? WHERE id = 0" query = "UPDATE current SET {} = ?"
if project_id: if project_id:
query = query.format("project_id") query = query.format("project_id")

View File

@@ -61,9 +61,12 @@ def handle_note(args, last_action, conn):
def create_note(note, active_project_id, active_task_id, conn): def create_note(note, active_project_id, active_task_id, conn):
# TODO Don't create note if no project (nothing selected?) ==> foreign key is not a solution: there is no project ID :)
logging.info(">> Create note") logging.info(">> Create note")
if active_task_id == 0:
print("No task selected")
sys.exit(1)
query = """ query = """
INSERT INTO note (project_id, task_id, username, message) INSERT INTO note (project_id, task_id, username, message)
VALUES (?, ?, ?, ?); VALUES (?, ?, ?, ?);

View File

@@ -101,44 +101,59 @@ END;
-- Current table with trigger -- -- Current table with trigger --
-------------------------------- --------------------------------
CREATE TABLE current ( CREATE TABLE current (
id integer,
project_id integer, project_id integer,
task_id integer, task_id integer,
note_id integer note_id integer
); );
INSERT INTO current VALUES (0,0,0,0); INSERT INTO current VALUES (0,0,0);
-- Trigger after insert for current values -- Trigger after insert for current values
CREATE TRIGGER current_project AFTER INSERT ON project CREATE TRIGGER current_project AFTER INSERT ON project
BEGIN BEGIN
UPDATE current SET project_id = new.id WHERE id = 0; UPDATE current SET project_id = new.id;
END; END;
CREATE TRIGGER current_task AFTER INSERT ON task CREATE TRIGGER current_task AFTER INSERT ON task
BEGIN BEGIN
UPDATE current SET task_id = new.id WHERE id = 0; UPDATE current SET task_id = new.id;
END; END;
CREATE TRIGGER current_note AFTER INSERT ON note CREATE TRIGGER current_note AFTER INSERT ON note
BEGIN BEGIN
UPDATE current SET note_id = new.id WHERE id = 0; UPDATE current SET note_id = new.id;
END; END;
-- Trigger after update for current values -- Trigger after update for current values
CREATE TRIGGER update_project AFTER UPDATE ON project CREATE TRIGGER update_project AFTER UPDATE ON project
BEGIN BEGIN
UPDATE current SET project_id = new.id WHERE id = 0; UPDATE current SET project_id = new.id;
END; END;
CREATE TRIGGER update_task AFTER UPDATE ON task CREATE TRIGGER update_task AFTER UPDATE ON task
BEGIN BEGIN
UPDATE current SET task_id = new.id WHERE id = 0; UPDATE current SET task_id = new.id;
END; END;
CREATE TRIGGER update_note AFTER UPDATE ON note CREATE TRIGGER update_note AFTER UPDATE ON note
BEGIN BEGIN
UPDATE current SET note_id = new.id WHERE id = 0; UPDATE current SET note_id = new.id;
END;
-- Trigger after delete for current values
CREATE TRIGGER delete_project AFTER DELETE ON project
BEGIN
UPDATE current SET project_id = 0;
END;
CREATE TRIGGER delete_task AFTER DELETE ON task
BEGIN
UPDATE current SET task_id = 0;
END;
CREATE TRIGGER delete_note AFTER DELETE ON note
BEGIN
UPDATE current SET note_id = 0;
END; END;
-------------------------------- --------------------------------

View File

@@ -96,6 +96,7 @@ def handle_task(args, last_action, conn):
else: else:
print(f"Invalid task option: {args[0]}") print(f"Invalid task option: {args[0]}")
def parse_task_args(task, args): def parse_task_args(task, args):
if not args: if not args:
return return
@@ -126,9 +127,12 @@ def parse_task_args(task, args):
def create_task(task, project_id, conn): def create_task(task, project_id, conn):
# TODO Don't create task if no project (nothing selected?) ==> foreign key is not a solution: there is no project ID :)
logging.info(">> Create task") logging.info(">> Create task")
if project_id == 0:
print("No project selected")
sys.exit(1)
query = """ query = """
INSERT INTO INSERT INTO
task (project_id, username, name, status, priority, date, time, created_at) task (project_id, username, name, status, priority, date, time, created_at)