# This file was generated by liblab | https://liblab.com/

from enum import Enum
from .utils.json_map import JsonMap
from .base import BaseModel


class GameEditorialKeywordType(Enum):
    """An enumeration representing different categories.

    :cvar BODYPARAGRAPHCOUNT: "bodyParagraphCount"
    :vartype BODYPARAGRAPHCOUNT: str
    :cvar BODYWORDCOUNT: "bodyWordCount"
    :vartype BODYWORDCOUNT: str
    :cvar CLOB_AUTOTAGSKIP_PLAYERCARDS: "clob_autoTagSkip_playerCards"
    :vartype CLOB_AUTOTAGSKIP_PLAYERCARDS: str
    :cvar CONTENT: "content"
    :vartype CONTENT: str
    :cvar EMBEDDABLE: "embeddable"
    :vartype EMBEDDABLE: str
    :cvar GAMEID: "gameId"
    :vartype GAMEID: str
    :cvar LANGUAGE: "language"
    :vartype LANGUAGE: str
    :cvar PLAYERID: "playerId"
    :vartype PLAYERID: str
    :cvar PREVIEWPARAGRAPHCOUNT: "previewParagraphCount"
    :vartype PREVIEWPARAGRAPHCOUNT: str
    :cvar PRIMARYTAG: "primaryTag"
    :vartype PRIMARYTAG: str
    :cvar PREVIEWWORDCOUNT: "previewWordCount"
    :vartype PREVIEWWORDCOUNT: str
    :cvar SHAREABLE: "shareable"
    :vartype SHAREABLE: str
    :cvar STATSEVENTID: "statsEventId"
    :vartype STATSEVENTID: str
    :cvar TEAMFILECODE: "teamFileCode"
    :vartype TEAMFILECODE: str
    :cvar TEAMID: "teamId"
    :vartype TEAMID: str
    """

    BODYPARAGRAPHCOUNT = "bodyParagraphCount"
    BODYWORDCOUNT = "bodyWordCount"
    CLOB_AUTOTAGSKIP_PLAYERCARDS = "clob_autoTagSkip_playerCards"
    CONTENT = "content"
    EMBEDDABLE = "embeddable"
    GAMEID = "gameId"
    LANGUAGE = "language"
    PLAYERID = "playerId"
    PREVIEWPARAGRAPHCOUNT = "previewParagraphCount"
    PRIMARYTAG = "primaryTag"
    PREVIEWWORDCOUNT = "previewWordCount"
    SHAREABLE = "shareable"
    STATSEVENTID = "statsEventId"
    TEAMFILECODE = "teamFileCode"
    TEAMID = "teamId"

    def list():
        """Lists all category values.

        :return: A list of all category values.
        :rtype: list
        """
        return list(
            map(lambda x: x.value, GameEditorialKeywordType._member_map_.values())
        )


@JsonMap({"type_": "type", "display_name": "displayName"})
class GameEditorialKeyword(BaseModel):
    """GameEditorialKeyword

    :param type_: type_, defaults to None
    :type type_: GameEditorialKeywordType, optional
    :param value: value, defaults to None
    :type value: str, optional
    :param display_name: display_name, defaults to None
    :type display_name: str, optional
    """

    def __init__(
        self,
        type_: GameEditorialKeywordType = None,
        value: str = None,
        display_name: str = None,
    ):
        if type_ is not None:
            self.type_ = self._enum_matching(
                type_, GameEditorialKeywordType.list(), "type_"
            )
        if value is not None:
            self.value = value
        if display_name is not None:
            self.display_name = display_name
