Exemplo n.º 1
0
async def create_monster(*, monster: Monster):
    """
    Endpoint to handle Monster creation
    """
    query = None

    weaknesses = str(
        [
            Weakness(
                element=weakness.element,
                stars=weakness.stars,
                condition=getattr(weakness, "condition", ""),
            ).dict()
            for weakness in monster.weaknesses
            if monster.weaknesses
        ]
    )
    resistances = str(
        [
            Resistance(
                element=resistance.element,
                condition=getattr(resistance, "condition", ""),
            ).dict()
            for resistance in monster.resistances
            if monster.resistances
        ]
    )
    images = str(
        [
            Image(name=image.name, url=image.url).dict()
            for image in monster.images
            if monster.images
        ]
    )
    ailments = str(
        [
            Ailment(name=ailment.name, actions=ailment.actions).dict()
            for ailment in monster.ailments
            if monster.ailments
        ]
    )
    elements = str([element for element in monster.elements if monster.elements])
    query = monsters_db.insert().values(
        name=monster.name,
        species=monster.species,
        size=monster.size.name,
        weaknesses=weaknesses,
        resistances=resistances,
        images=images,
        ailments=ailments,
        elements=elements,
    )

    last_record_id = await database.execute(query)
    return {**monster.dict(), "id": last_record_id}