50 lines
2.0 KiB
Python
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() |