import asyncio

from sqlalchemy import select

from database import engine, async_session
from models import Base, Sample


async def init_db():
    async with engine.begin() as conn:
        await conn.run_sync(Base.metadata.create_all)


async def seed():
    await init_db()

    async with async_session() as session:
        result = await session.execute(select(Sample))
        existing = result.scalars().all()
        if existing:
            print(f"이미 {len(existing)}건의 샘플 데이터가 존재합니다. seed를 건너뜁니다.")
            return

        samples = [
            Sample(title="첫 번째 샘플", content="안녕하세요, 첫 번째 게시글입니다.", author="홍길동"),
            Sample(title="두 번째 샘플", content="PostgreSQL 외부 연결 테스트 중입니다.", author="김철수"),
            Sample(title="세 번째 샘플", content="FastAPI와 Vue로 게시판을 만듭니다.", author="이영희"),
            Sample(title="네 번째 샘플", content="데이터베이스 연동이 잘 되네요!", author="박민수"),
            Sample(title="다섯 번째 샘플", content="화면에 표시되는지 확인해보세요.", author="최지은"),
        ]
        session.add_all(samples)
        await session.commit()
        print(f"{len(samples)}건의 샘플 데이터가 INSERT 되었습니다.")


if __name__ == "__main__":
    asyncio.run(seed())
