48 lines
1.2 KiB
Python

from pydantic import model_validator
from fiber_package.refs import EntityRefList, EntityRef
from datetime import date
from typing import Self, Literal
from fiber_package.base import FiberBaseModel
'''
Guilds are groups of members for an indefinite period.
They have a list of members.
Removing old members from last_active is done in fiber
'''
class GuildModel(FiberBaseModel):
collection_name: Literal["guild"] = "guild"
full_name_en: str
full_name_nl: str
description_en: str
description_nl: str
members: EntityRefList
previous_members: EntityRefList
guild_masters: EntityRefList
last_active: dict[EntityRef, date]
@model_validator(mode='after')
def current_members_not_previous(self) -> Self:
for member in self.members:
if member in self.previous_members:
raise ValueError(
"There can be no overlap between members and previous members!"
)
return self
@model_validator(mode='after')
def guild_masters_are_members(self) -> Self:
for master in self.guild_masters:
if master not in self.members:
raise ValueError("All guild masters must be members!")
return self