From 2d1884926783d657135cde4cc912ea0919cf03c0 Mon Sep 17 00:00:00 2001 From: Jens Luedicke Date: Wed, 9 Jul 2025 18:21:23 +0200 Subject: [PATCH] Fix DB Model. --- migrations/add_time_preferences.sql | 20 ++++++++++++++++++++ migrations/remove_email_preferences.sql | 7 ++++--- migrations/run_postgres_migrations.py | 1 + models/user.py | 7 ++++--- 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 migrations/add_time_preferences.sql diff --git a/migrations/add_time_preferences.sql b/migrations/add_time_preferences.sql new file mode 100644 index 0000000..acf47df --- /dev/null +++ b/migrations/add_time_preferences.sql @@ -0,0 +1,20 @@ +-- Add time formatting and rounding preferences to user_preferences table +-- These columns support user-specific time display and rounding settings + +-- Add time formatting preference (24h vs 12h) +ALTER TABLE user_preferences + ADD COLUMN IF NOT EXISTS time_format_24h BOOLEAN DEFAULT TRUE; + +-- Add time rounding preference (0, 5, 10, 15, 30, 60 minutes) +ALTER TABLE user_preferences + ADD COLUMN IF NOT EXISTS time_rounding_minutes INTEGER DEFAULT 0; + +-- Add rounding direction preference (false=round down, true=round to nearest) +ALTER TABLE user_preferences + ADD COLUMN IF NOT EXISTS round_to_nearest BOOLEAN DEFAULT FALSE; + +-- Update existing date_format column default if needed +-- (The column should already exist, but let's ensure the default is correct) +UPDATE user_preferences +SET date_format = 'ISO' +WHERE date_format = 'YYYY-MM-DD' OR date_format IS NULL; \ No newline at end of file diff --git a/migrations/remove_email_preferences.sql b/migrations/remove_email_preferences.sql index caed96b..36a0b69 100644 --- a/migrations/remove_email_preferences.sql +++ b/migrations/remove_email_preferences.sql @@ -1,7 +1,8 @@ --- Remove all email preference columns from user_preferences table --- These columns were not being used and are being removed to clean up the schema +-- Remove unused columns from user_preferences table +-- These columns were defined in the model but never used in the application ALTER TABLE user_preferences DROP COLUMN IF EXISTS email_daily_summary, DROP COLUMN IF EXISTS email_notifications, - DROP COLUMN IF EXISTS email_weekly_summary; \ No newline at end of file + DROP COLUMN IF EXISTS email_weekly_summary, + DROP COLUMN IF EXISTS default_project_id; \ No newline at end of file diff --git a/migrations/run_postgres_migrations.py b/migrations/run_postgres_migrations.py index 5420b4d..1ed0216 100755 --- a/migrations/run_postgres_migrations.py +++ b/migrations/run_postgres_migrations.py @@ -19,6 +19,7 @@ POSTGRES_MIGRATIONS = [ 'postgres_only_migration.py', # Main migration from commit 4214e88 onward 'add_note_sharing.sql', # Add note sharing functionality 'remove_email_preferences.sql', # Remove unused email preference columns + 'add_time_preferences.sql', # Add time formatting and rounding preferences ] diff --git a/models/user.py b/models/user.py index e4b84ee..4795de7 100644 --- a/models/user.py +++ b/models/user.py @@ -153,11 +153,13 @@ class UserPreferences(db.Model): theme = db.Column(db.String(20), default='light') language = db.Column(db.String(10), default='en') timezone = db.Column(db.String(50), default='UTC') - date_format = db.Column(db.String(20), default='YYYY-MM-DD') + date_format = db.Column(db.String(20), default='ISO') # ISO, US, German, etc. time_format = db.Column(db.String(10), default='24h') + time_format_24h = db.Column(db.Boolean, default=True) # True for 24h, False for 12h # Time tracking preferences - default_project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=True) + time_rounding_minutes = db.Column(db.Integer, default=0) # 0, 5, 10, 15, 30, 60 + round_to_nearest = db.Column(db.Boolean, default=False) # False=round down, True=round to nearest timer_reminder_enabled = db.Column(db.Boolean, default=True) timer_reminder_interval = db.Column(db.Integer, default=60) # Minutes @@ -169,7 +171,6 @@ class UserPreferences(db.Model): # Relationships user = db.relationship('User', backref=db.backref('preferences', uselist=False)) - default_project = db.relationship('Project') class UserDashboard(db.Model):