from db import db from sqlalchemy import func from typing import Optional class CampaignTypeCity(db.Model): __tablename__ = "CampaignTypeCity" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String, nullable=False) @classmethod def get_by_id(cls, city_id: int) -> Optional["CampaignTypeCity"]: return db.session.query(CampaignTypeCity).filter(CampaignTypeCity.id == city_id).one_or_none() @classmethod def get_or_create_by_name(cls, city_name: str) -> "CampaignTypeCity": city = ( db.session.query(CampaignTypeCity) .filter(func.lower(CampaignTypeCity.name) == city_name.lower()) .one_or_none() ) if city is None: city = CampaignTypeCity(name=city_name) db.session.add(city) db.session.commit() return city