Newer
Older
vmk-360-data_collector / src / vmk_data_collector / db / seed.py
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession

from vmk_data_collector.models.property_type import PropertyType

PROPERTY_TYPES = [
    {
        "slug": "apartment",
        "name": "Квартира",
        "description": "Квартира в многоквартирном доме",
    },
    {"slug": "house", "name": "Дом", "description": "Частный дом"},
    {"slug": "townhouse", "name": "Таунхаус", "description": "Таунхаус"},
    {
        "slug": "commercial",
        "name": "Коммерческая недвижимость",
        "description": "Коммерческая недвижимость",
    },
    {
        "slug": "land",
        "name": "Земельный участок",
        "description": "Земельный участок",
    },
    {
        "slug": "garage",
        "name": "Гараж",
        "description": "Гараж или парковочное место",
    },
    {"slug": "office", "name": "Офис", "description": "Офисное помещение"},
    {"slug": "warehouse", "name": "Склад", "description": "Складское помещение"},
    {
        "slug": "retail",
        "name": "Торговая площадь",
        "description": "Торговое помещение",
    },
    {"slug": "cottage", "name": "Коттедж", "description": "Коттедж"},
    {"slug": "room", "name": "Комната", "description": "Отдельная комната"},
    {
        "slug": "new_building",
        "name": "Новострой",
        "description": "Квартира в новострое",
    },
]

DEAL_TYPES = [
    {"slug": "sale", "name": "Продажа"},
    {"slug": "rent_long", "name": "Долгосрочная аренда"},
    {"slug": "rent_short", "name": "Краткосрочная аренда"},
]


async def seed_property_types(session: AsyncSession) -> None:
    for pt in PROPERTY_TYPES:
        result = await session.execute(
            select(PropertyType).where(PropertyType.slug == pt["slug"])
        )
        existing = result.scalar_one_or_none()
        if not existing:
            session.add(PropertyType(**pt))
    await session.commit()


async def seed_all(session: AsyncSession) -> None:
    await seed_property_types(session)