From 04946021957ba7daaad42df10973e2e5dfaf89bd Mon Sep 17 00:00:00 2001 From: Edward Delaporte Date: Mon, 23 Mar 2026 23:09:38 -0500 Subject: [PATCH] Fixup; --- bot.py | 30 ++++++++++++++++++++++++++++++ goals/db.py | 25 +++++++++++++++++++++---- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/bot.py b/bot.py index b720c9b..02bead0 100644 --- a/bot.py +++ b/bot.py @@ -40,6 +40,8 @@ async def do_goal(match): print ID - print a goal and all tasks done ID - mark task done by ID goal-done ID - mark goal done by ID + set-vision GOAL_ID VISION_ID - associate GOAL_ID with VISION_ID + visions - list incomplete visions ''' @@ -65,6 +67,11 @@ async def do_goal(match): result = Data().add_task(goal_id=goal_id, name=new) return [f'Added task with id {result}'] + if match.command('add-vision'): + new = ' '.join(match.args()[1:]) + result = Data().add_vision(new) + return [f'Vision added with id {result}'] + if match.command('print'): goal_id = int(match.args()[1]) logger.debug(f'Searching for goal {goal_id}...') @@ -72,6 +79,13 @@ async def do_goal(match): results = pretty_print(goal, tasks) return results + + if match.command('print-vision'): + get_id = int(match.args()[1]) + vision,goals = Data().get_vision(get_id) + results = pretty_print(vision, goals) + return results + if match.command('goal-done'): goal_id = int(match.args()[1]) logger.debug(f'Searching for goal {goal_id}...') @@ -97,6 +111,22 @@ async def do_goal(match): results += details return results + if match.command('visions'): + items = Data().get_all_visions() + results = ['Visions are'] + for item in items: + results.append(item) + else: + results.append('-- No current visions --') + return results + + + if match.command('set-vision'): + goal_id = int(match.args()[1]) + vision_id = int(match.args()[1]) + result = Data().assign_vision(goal_id, vision_id) + return [result] + return [do_goal.__doc__] diff --git a/goals/db.py b/goals/db.py index 8a7aff4..f7fa239 100644 --- a/goals/db.py +++ b/goals/db.py @@ -23,6 +23,7 @@ class Vision(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) name: str = Field(default=None, unique=True) complete_date: dt | None = Field(default=None) + goals: list["Goal"] = Relationship(back_populates="vision") def __str__(self): return f'{self.name} ({self.id})' @@ -34,6 +35,7 @@ class Goal(SQLModel, table=True): vision_id: int | None = Field(default=None, foreign_key="vision.id") notes: str | None = Field(default=None) tasks: list["Task"] = Relationship(back_populates="goal") + vision: Vision = Relationship(back_populates="goals") def __str__(self): return f'{self.name} ({self.id})' @@ -55,6 +57,8 @@ def pretty_print(goal, tasks): results.append(f' - [x] {task}') else: results.append(f' - [ ] {task}') + else: + results.append('-- Nothing to list --') return results @@ -72,8 +76,10 @@ class Data(): return 'Success' - def print_all_visions(self): - pass + def get_all_visions(self): + with Session(self.engine) as session: + cmd = select(Vision).where(Vision.complete_date == None) + return session.exec(cmd).all() def print_ophan_tasks(self): pass @@ -91,6 +97,16 @@ class Data(): goal = session.exec(cmd).first() return (goal, goal.tasks) + def get_vision(self, id): + with Session(self.engine) as session: + cmd = select(Vision).where(Vision.id == id) + vision = session.exec(cmd).first() + if vision: + return (vision, vision.goals) + else: + return ('Not found', []) + + def complete_vision(self, id): pass @@ -138,9 +154,10 @@ class Data(): '''Goals may move between visions''' with Session(self.engine) as session: cmd = select(Goal).where(Goal.id == goal_id) - new = session.exec(cmd).first() - new.vision_id = vision_id + goal = session.exec(cmd).first() + goal.vision_id = vision_id session.commit() + return 'Success' def add_note(self, note, goal): '''Notes print with the goal.''' -- 2.47.3