2025-09-12 22:47:41 +02:00

50 lines
2.0 KiB
Python

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from datetime import datetime
db = SQLAlchemy()
class User(db.Model):
__tablename__ = "users"
steam_id: Mapped[int] = mapped_column(db.BigInteger, primary_key=True)
personaname: Mapped[str] = mapped_column(db.String(80))
profile_url: Mapped[str] = mapped_column(db.String(200))
avatar: Mapped[str] = mapped_column(db.String(200))
avatar_medium: Mapped[str] = mapped_column(db.String(200))
avatar_full: Mapped[str] = mapped_column(db.String(200))
community_visibility_state: Mapped[int] = mapped_column(db.Integer)
profile_state: Mapped[int] = mapped_column(db.Integer)
last_logoff: Mapped[int] = mapped_column(db.Integer)
def to_dict(self):
return {
"steam_id": self.steam_id,
"personaname": self.personaname,
"profile_url": self.profile_url,
"avatar": self.avatar,
"avatar_medium": self.avatar_medium,
"avatar_full": self.avatar_full,
"community_visibility_state": self.community_visibility_state,
"profile_state": self.profile_state,
"last_logoff": self.last_logoff,
}
class APICall(db.Model):
__tablename__ = "api_calls"
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str] = mapped_column(db.String(80), unique=True, nullable=False)
call_count: Mapped[int] = mapped_column(db.Integer, default=0, nullable=False)
first_called: Mapped[datetime] = mapped_column(db.DateTime, default=None, nullable=True)
last_called: Mapped[datetime] = mapped_column(db.DateTime, default=datetime.utcnow, nullable=False)
def register_call(self):
"""Increment call count and update timestamp."""
if self.call_count is None:
self.call_count = 0
if self.first_called is None:
self.first_called = datetime.now()
self.call_count = self.call_count + 1
self.last_called = datetime.now()
db.session.commit()