This commit is contained in:
ciomek committed 2026-09-04 17:02:25 +02:00
1 parent c500c3fadf
commit 5732e26380
10 files changed
+176 -2

No files matched your search

View File
Whitespace-only changes.
+17
View File
@@ -0,0 +1,17 @@
from datetime import datetime, timezone
from sqlmodel import SQLModel, Field, Relationship
class LogType(SQLModel, table=True):
id: int = Field(default=None, primary_key=True)
code: str = Field(nullable=False, unique=True)
entries: list["LogEntry"] = Relationship(back_populates="log_type")
class LogEntry(SQLModel, table=True):
id: int = Field(default=None, primary_key=True)
log_type_id: int = Field(foreign_key="logtype.id", nullable=False)
log_type: LogType = Relationship(back_populates="entries")
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
message: str = Field(nullable=False)
+10
View File
@@ -0,0 +1,10 @@
from datetime import datetime
from pydantic import BaseModel
class LogEntryResponse(BaseModel):
id: int
log_type: str
created_at: datetime
message: str
+27
View File
@@ -0,0 +1,27 @@
import asyncio
from sqlmodel import Session, select
from loon.web.db import engine
from loon.web.logs.models import LogType, LogEntry
from loon.web.logs.types import LogTypeEnum
def _write_log(log_type: LogTypeEnum, message: str) -> None:
with Session(engine) as session:
statement = select(LogType).where(LogType.code == log_type.value)
log_type_object = session.exec(statement).first()
if not log_type_object:
log_type_object = LogType(code=log_type.value)
session.add(log_type_object)
session.commit()
session.refresh(log_type_object)
log_entry = LogEntry(log_type_id=log_type_object.id, message=message)
session.add(log_entry)
session.commit()
async def write_log(log_type: LogTypeEnum, message: str) -> None:
await asyncio.to_thread(_write_log, log_type, message)
+11
View File
@@ -0,0 +1,11 @@
from enum import Enum
class LogTypeEnum(Enum):
PLAYER_DEAD = "player_dead"
PLAYER_JOINED = "player_joined"
PLAYER_LEFT = "player_left"
PLAYER_KICKED = "player_kicked"
PLAYER_BANNED = "player_banned"
PLAYER_REGISTERED = "player_registered"
PLAYER_PASSWORD_CHANGED = "player_password_changed"