Files
game-tracker/app/models.py
2025-05-19 20:34:51 -07:00

60 lines
2.0 KiB
Python

from . import db
from datetime import datetime
import hashlib
class AdminConfig(db.Model):
id = db.Column(db.Integer, primary_key=True)
password_hash = db.Column(db.String(64), nullable=False)
last_updated = db.Column(db.DateTime, default=datetime.utcnow)
@classmethod
def check_password(cls, password):
"""Check if the provided password matches the stored hash"""
admin = cls.query.first()
if not admin:
return False
# Create hash from input password
hash_input = hashlib.sha256(password.encode()).hexdigest()
# Compare with stored hash
return hash_input == admin.password_hash
@classmethod
def set_password(cls, password):
"""Set a new admin password"""
admin = cls.query.first()
# Create hash from the password
password_hash = hashlib.sha256(password.encode()).hexdigest()
if admin:
admin.password_hash = password_hash
admin.last_updated = datetime.utcnow()
else:
admin = cls(password_hash=password_hash)
db.session.add(admin)
db.session.commit()
return True
class Game(db.Model):
id = db.Column(db.Integer, primary_key=True)
igdb_id = db.Column(db.Integer, unique=True, nullable=False)
name = db.Column(db.String(100), nullable=False)
cover_url = db.Column(db.String(255))
description = db.Column(db.Text)
release_date = db.Column(db.DateTime)
platform = db.Column(db.String(100))
developer = db.Column(db.String(100))
publisher = db.Column(db.String(100))
status = db.Column(db.String(20), default="Playing") # Playing, Completed, On Hold
progress = db.Column(db.Integer, default=0) # 0-100%
notes = db.Column(db.Text)
date_added = db.Column(db.DateTime, default=datetime.utcnow)
last_updated = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
def __repr__(self):
return f'<Game {self.name}>'