backend/app/models.py

83 lines
1.5 KiB
Python

from pydantic import BaseModel, UUID4
from typing import List, Any
from enum import Enum, auto
import uuid
class Card(BaseModel):
text: str
pick: int
deck: str
icon: str
class Pack(BaseModel):
icon: str
official: bool
name: str
class RoundStart(BaseModel):
czar: int
card: Card
class PubPlayer(BaseModel):
name: str
points: int = 0
class Player(PubPlayer):
uuid: UUID4
# def __init__(self, name):
# self.name = name
# self.uuid = uuid.uuid4()
class PubRoom(BaseModel):
code: str
czar: int = 0
players: List[PubPlayer] = [] # List of player's uuids
started: bool = False
played_cards: List[int] = []
class Answer(BaseModel):
text: str
class AnswerReceived(Answer):
uuid: str
class AnswerSending(Answer):
index: int
class AnswerSendingButItHasAUUIDBecauseItIsImportantToCheckIfItWasSentByTheCzar(AnswerSending):
uuid: str
class Room(PubRoom):
players: List[Player] = [] # List of player's uuids
number: int
admin_uuid: UUID4 = None
answers:List[AnswerSending] = []
# def __init__(self, number):
# super().__init__()
# self.number = number
# self.code = hashes.encode(number)
class AutoName(Enum):
# pylint: disable=no-self-argument
def _generate_next_value_(name, start, count, last_values):
return name
class MessageType(AutoName):
JOIN = auto()
START = auto()
ANSWER = auto()
PICK = auto()
class Message(BaseModel):
msgtype: MessageType
data: Any