From 7e0ebfe5ac9c75d98d16f3124549f42363ae78d2 Mon Sep 17 00:00:00 2001 From: "brobert (aider)" Date: Sun, 23 Mar 2025 11:14:40 +0100 Subject: [PATCH] feat: add user preferences for task reminders --- src/database/schema.sql | 7 +++++++ src/services/reminderService.ts | 0 src/services/userService.ts | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/services/reminderService.ts create mode 100644 src/services/userService.ts diff --git a/src/database/schema.sql b/src/database/schema.sql index e1fea45..01c0c69 100644 --- a/src/database/schema.sql +++ b/src/database/schema.sql @@ -25,6 +25,13 @@ CREATE TABLE IF NOT EXISTS users ( last_seen TEXT -- ISO 8601 timestamp of last activity ); +-- User preferences table +CREATE TABLE IF NOT EXISTS user_preferences ( + phone_number TEXT PRIMARY KEY, + reminders_enabled BOOLEAN NOT NULL DEFAULT TRUE, + FOREIGN KEY(phone_number) REFERENCES users(phone_number) +); + -- Create triggers for task timestamps CREATE TRIGGER IF NOT EXISTS update_task_timestamp AFTER UPDATE ON tasks diff --git a/src/services/reminderService.ts b/src/services/reminderService.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/services/userService.ts b/src/services/userService.ts new file mode 100644 index 0000000..71b3fd9 --- /dev/null +++ b/src/services/userService.ts @@ -0,0 +1,18 @@ +import { query, execute } from '../database/db'; + +export function getUserPreferences(phoneNumber: string) { + return query( + 'SELECT * FROM user_preferences WHERE phone_number = ?', + [phoneNumber] + )[0] || { phone_number: phoneNumber, reminders_enabled: true }; +} + +export function setRemindersEnabled(phoneNumber: string, enabled: boolean) { + execute( + `INSERT INTO user_preferences (phone_number, reminders_enabled) + VALUES (?, ?) + ON CONFLICT(phone_number) DO UPDATE SET + reminders_enabled = excluded.reminders_enabled`, + [phoneNumber, enabled] + ); +}