Deploy Stride with encrypted manual and scheduled Garmin sync

This commit is contained in:
Peter Stockings
2026-10-01 20:42:28 +10:00
parent 24c7fc2c6a
commit 8555695c5e
28 changed files with 900 additions and 56 deletions
+14
View File
@@ -27,6 +27,19 @@ class User(UserMixin, db.Model):
return check_password_hash(self.password_hash, password)
class GarminConnection(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), unique=True, nullable=False)
account_key = db.Column(db.String(24), unique=True, nullable=False)
tokens = db.Column(db.Text, nullable=False)
pending = db.Column(db.Boolean, nullable=False, default=True)
scheduled = db.Column(db.Boolean, nullable=False, default=True)
next_sync = db.Column(db.DateTime(timezone=True), nullable=False)
last_success = db.Column(db.DateTime(timezone=True))
message = db.Column(db.String(200), nullable=False, default="Sync queued.")
failures = db.Column(db.Integer, nullable=False, default=0)
class Activity(db.Model):
id = db.Column(db.Integer, primary_key=True)
owner_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False, index=True)
@@ -40,6 +53,7 @@ class Activity(db.Model):
avg_hr = db.Column(db.Float)
metrics = db.Column(db.JSON, nullable=False, default=dict, server_default="{}")
visibility = db.Column(db.String(12), nullable=False, default="private")
share_token = db.Column(db.String(64), unique=True)
samples = db.Column(db.JSON, nullable=False, default=list)
laps = db.Column(db.JSON, nullable=False, default=list)
created_at = db.Column(db.DateTime(timezone=True), default=lambda: datetime.now(UTC))