Files
backend-collector/app/models/events.py

71 lines
1.8 KiB
Python

from pydantic import BaseModel, EmailStr
from pydantic_mongo import AbstractRepository, ObjectIdField
from datetime import datetime, date
from bson import ObjectId
from typing import List, Optional
class Event(BaseModel):
id: ObjectIdField = None
name: str
place: str
description: str
imgUrl: Optional[str] = None
status: int = 0
latitude: float = 0.0
longitude: float = 0.0
link: Optional[str] = None
ticket: Optional[str] = None
organizers: List[str] = []
tags: List[str] = []
start_date: Optional[datetime] = None
end_date: Optional[datetime] = None
created_at: datetime = datetime.today()
updated_at: Optional[datetime] = None
deleted_at: Optional[datetime] = None
disabled_at: Optional[datetime] = None
interested_users: List[ObjectId] = []
model_config = {
"arbitrary_types_allowed": True
}
class EventOut(BaseModel):
id: ObjectIdField = None
name: str
place: str
description: str
imgUrl: str | None = None
link: str | None = None
ticket: str | None = None
status: int = 0
start_date: datetime | None = None
end_date: datetime | None = None
tags: list[str] = []
class EventOutWithInterested(EventOut):
interested: bool = False
interested_count: int = 0
class EventIn(BaseModel):
name: str
place: str
description: str
imgUrl: str | None = None
status: int = 0
organizers: list[str] = []
tags: list[str] = []
link: str | None = None
ticket: str | None = None
start_date: datetime | None = None
end_date: datetime | None = None
latitude: float = 0.0
longitude: float = 0.0
class EventIDS(BaseModel):
ids: list[str]
class EventRepository(AbstractRepository[Event]):
class Meta:
collection_name = "events"