]> us-delaporte.pagekite.me Git - matrix-goal-bot.git/commitdiff
WIP Wins
authorEdward Delaporte <edward@delaporte.us>
Tue, 5 May 2026 22:07:37 +0000 (17:07 -0500)
committerEdward Delaporte <edward@delaporte.us>
Tue, 5 May 2026 22:07:37 +0000 (17:07 -0500)
matrix_goal_bot/bot.py
matrix_goal_bot/db.py
matrix_goal_bot/tasks.py

index 310319fe347834e0ba7355d469548cbd76fcfe1e..d62d1881f6d74a061445dae84a3adfd7af5636f2 100644 (file)
@@ -30,6 +30,7 @@ More commands:
     remove ID - remove a task by ID
     start GOAL_ID - un-put-off a goal (reverse of later)
     visionless - list goals with no set vision
     remove ID - remove a task by ID
     start GOAL_ID - un-put-off a goal (reverse of later)
     visionless - list goals with no set vision
+    wins - list recently completed goals
 '''
 
 
 '''
 
 
@@ -254,6 +255,18 @@ class GoalBot():
                 results.append(item)
             return results
 
                 results.append(item)
             return results
 
+        if match.command('wins'):
+            items = self.data.wins()
+            results = ['# Wins']
+            if not items:
+                results.append('-- No wins yet --')
+
+            for item in items:
+                results.append(item)
+            return results
+
+
+
         if match.command('set.vision'):
             goal_id = int(match.args()[1])
             vision_id = int(match.args()[2])
         if match.command('set.vision'):
             goal_id = int(match.args()[1])
             vision_id = int(match.args()[2])
index 1d80aaa5ca5bb70528a7f59164ede5b64369aa3e..fa3f0823d73646d771045ee4f797ae2c0964e58e 100644 (file)
@@ -42,6 +42,7 @@ class Goal(SQLModel, table=True):
             completed = self.complete_date.strftime(DATE_FORMAT)
             return f'(Done {completed}) {self.name} (Goal {self.id})'
 
             completed = self.complete_date.strftime(DATE_FORMAT)
             return f'(Done {completed}) {self.name} (Goal {self.id})'
 
+
 class Task(SQLModel, table=True):
     id: int | None = Field(default=None, primary_key=True)
     name: str = Field(default=None, unique=True)
 class Task(SQLModel, table=True):
     id: int | None = Field(default=None, primary_key=True)
     name: str = Field(default=None, unique=True)
@@ -52,6 +53,15 @@ class Task(SQLModel, table=True):
         return f'{self.name} ({self.id})'
 
 
         return f'{self.name} ({self.id})'
 
 
+class Win(SQLModel, table=True):
+    id: int | None = Field(default=None, primary_key=True)
+    goal: str = Field(default=None, unique=False)
+    vision: str = Field(default=None, unique=False)
+    complete_date: dt | None = Field(default=dt.today())
+    def __str__(self):
+        completed = self.complete_date.strftime(DATE_FORMAT)
+        return f'{self.goal} ({completed} {vision})'
+
 def pretty_print(goal, tasks):
     results = []
     results.append(f' ## {goal}')
 def pretty_print(goal, tasks):
     results = []
     results.append(f' ## {goal}')
@@ -179,6 +189,16 @@ class Data():
             goal = session.exec(cmd).first()
             goal.complete_date = dt.today()
             vision_id = goal.vision_id
             goal = session.exec(cmd).first()
             goal.complete_date = dt.today()
             vision_id = goal.vision_id
+
+            cmd = select(Vision).where(Vision.id == vision_id)
+            win = Win()
+            win.goal = goal.name
+
+            vision = session.exec(cmd).first()
+            if vision:
+                win.vision = vision.name
+
+            session.add(win)
             session.commit()
         return vision_id
 
             session.commit()
         return vision_id
 
@@ -291,5 +311,12 @@ class Data():
         '''Notes print with the goal.'''
         pass
 
         '''Notes print with the goal.'''
         pass
 
+
+    def wins(self):
+        results = []
+        with Session(self.engine) as session:
+            results = session.exec(select(Win)).all()
+        return results
+
     # Someday: Notes on each
 
     # Someday: Notes on each
 
index 1bacd918dae0aa41ca6260aed142b02800ed428c..9784b42ce6af07772d92c19a497e4a90c5a0bc54 100644 (file)
@@ -97,3 +97,10 @@ def setup(c):
     results = Data().setup()
     print(results)
 
     results = Data().setup()
     print(results)
 
+
+@task
+def wins(c):
+    results = Data().wins()
+    for line in results:
+        print(line)
+