def bind_topics_to_event(event_id, topics_ids: List[int]): with database.session() as db_session: for topic_id in topics_ids: event_topic = EventsTopics( event_id=event_id, topic_id=topic_id, ) db_session.add(event_topic) db_session.commit()
def create(city_id, start_date, end_date) -> Events: with database.session() as db_session: events = Events( city_id=city_id, start_date=start_date, end_date=end_date, ) db_session.add(events) db_session.commit() return events
def get_filters( city_id: int = None, topics_ids: List[int] = None, start_date: datetime.date = None, end_date: datetime.date = None, ) -> List[Filters]: with database.session() as db_session: query = db_session.query(Filters) if city_id: query = query.filter(Filters.city_id == city_id) if topics_ids: query = query.filter(Filters.topic_id.in_(topics_ids)) if start_date: query = query.filter( and_(Filters.from_date >= start_date, Filters.to_date <= end_date)) return query.all()
def create( user_id: int, city_id: int = None, topic_id: int = None, from_date: datetime.date = None, to_date: datetime.date = None, ) -> Filters: with database.session() as db_session: filters = Filters( city_id=city_id, topic_id=topic_id, from_date=from_date, to_date=to_date, user_id=user_id, ) db_session.add(filters) db_session.commit() return filters
def get( city_id: int = None, topic_id: int = None, from_date: bool = False, to_date: bool = False, ) -> List[Events]: with database.session() as db_session: query = db_session.query(Events).outerjoin(Events.topics) if topic_id: query = query.options(contains_eager( Events.topics)).filter(Events.id == topic_id) if city_id: query = query.filter(Events.city_id == city_id) if from_date and to_date: query = query.filter( and_(Events.start_date >= to_date, Events.end_date <= to_date)) return query.all()
def create(name: str) -> Topics: with database.session() as db_session: topic = Topics(name=name) db_session.add(topic) db_session.commit() return topic
def get_by_ids(ids: List[int]) -> List[Users]: with database.session() as db_session: return db_session.query(Users).filter(Users.id.in_(ids)).all()