o2o-castad-backend/docs/plan/insert_project.md

5.7 KiB

Database INSERT 코드 위치 정리

이 문서는 O2O Castad Backend 프로젝트에서 실제 동작하는 모든 DB INSERT 코드의 위치를 정리합니다.


1. User 모듈 (app/user)

1.1 User 모델 INSERT

  • 파일: app/user/services/auth.py
  • 라인: 278
  • 메서드: _get_or_create_user()
  • API 엔드포인트:
    • GET /auth/kakao/callback - 카카오 로그인 콜백
    • POST /auth/kakao/verify - 카카오 인가 코드 검증
  • 설명: 카카오 로그인 시 신규 사용자 생성
  • 저장 필드: kakao_id, email, nickname, profile_image_url, thumbnail_image_url

1.2 RefreshToken 모델 INSERT

  • 파일: app/user/services/auth.py
  • 라인: 315
  • 메서드: _save_refresh_token()
  • API 엔드포인트:
    • GET /auth/kakao/callback - 카카오 로그인 콜백
    • POST /auth/kakao/verify - 카카오 인가 코드 검증
  • 설명: 로그인 시 리프레시 토큰 저장
  • 저장 필드: user_id, token_hash, expires_at, user_agent, ip_address

2. Lyric 모듈 (app/lyric)

2.1 Project 모델 INSERT

  • 파일: app/lyric/api/routers/v1/lyric.py
  • 라인: 297
  • API 엔드포인트: POST /lyric/generate - 가사 생성
  • 설명: 가사 생성 요청 시 프로젝트 레코드 생성
  • 저장 필드: store_name, region, task_id, detail_region_info, language

2.2 Lyric 모델 INSERT

  • 파일: app/lyric/api/routers/v1/lyric.py
  • 라인: 317
  • API 엔드포인트: POST /lyric/generate - 가사 생성
  • 설명: 가사 생성 요청 시 가사 레코드 생성 (초기 status: processing)
  • 저장 필드: project_id, task_id, status, lyric_prompt, lyric_result, language

3. Song 모듈 (app/song)

3.1 Song 모델 INSERT

  • 파일: app/song/api/routers/v1/song.py
  • 라인: 178
  • API 엔드포인트: POST /song/generate/{task_id} - 노래 생성
  • 설명: 노래 생성 요청 시 노래 레코드 생성 (초기 status: processing)
  • 저장 필드: project_id, lyric_id, task_id, suno_task_id, status, song_prompt, language

3.2 SongTimestamp 모델 INSERT

  • 파일: app/song/api/routers/v1/song.py
  • 라인: 459
  • API 엔드포인트: GET /song/status/{song_id} - 노래 생성 상태 조회
  • 설명: Suno API에서 노래 생성 완료(SUCCESS) 시 가사 타임스탬프 저장 (반복문으로 다건 INSERT)
  • 저장 필드: suno_audio_id, order_idx, lyric_line, start_time, end_time

4. Video 모듈 (app/video)

4.1 Video 모델 INSERT

  • 파일: app/video/api/routers/v1/video.py
  • 라인: 247
  • API 엔드포인트: GET /video/generate/{task_id} - 영상 생성
  • 설명: 영상 생성 요청 시 영상 레코드 생성 (초기 status: processing)
  • 저장 필드: project_id, lyric_id, song_id, task_id, creatomate_render_id, status

5. Home 모듈 (app/home) - 이미지 업로드

5.1 Image 모델 INSERT (URL 이미지 - 서버 저장)

  • 파일: app/home/api/routers/v1/home.py
  • 라인: 486
  • API 엔드포인트: POST /image/upload (tags: Image-Server)
  • 설명: 외부 URL 이미지를 Image 테이블에 저장
  • 저장 필드: task_id, img_name, img_url, img_order

5.2 Image 모델 INSERT (바이너리 파일 - 서버 저장)

  • 파일: app/home/api/routers/v1/home.py
  • 라인: 535
  • API 엔드포인트: POST /image/upload (tags: Image-Server)
  • 설명: 업로드된 바이너리 파일을 media 폴더에 저장 후 Image 테이블에 저장
  • 저장 필드: task_id, img_name, img_url, img_order

5.3 Image 모델 INSERT (URL 이미지 - Blob)

  • 파일: app/home/api/routers/v1/home.py
  • 라인: 782
  • API 엔드포인트: POST /image/upload/blob (tags: Image-Blob)
  • 설명: 외부 URL 이미지를 Image 테이블에 저장 (Azure Blob 엔드포인트)
  • 저장 필드: task_id, img_name, img_url, img_order

5.4 Image 모델 INSERT (Blob 업로드 결과)

  • 파일: app/home/api/routers/v1/home.py
  • 라인: 804
  • API 엔드포인트: POST /image/upload/blob (tags: Image-Blob)
  • 설명: 바이너리 파일을 Azure Blob Storage에 업로드 후 Image 테이블에 저장
  • 저장 필드: task_id, img_name, img_url, img_order

6. Base Services (미사용)

아래 파일들은 공통 _add() 메서드를 정의하고 있으나, 현재 실제 API에서 직접 호출되지 않습니다.

파일 라인 비고
app/lyric/services/base.py 15 _update()에서만 내부 호출
app/home/services/base.py 15 _update()에서만 내부 호출
app/song/services/base.py 15 _update()에서만 내부 호출

요약 테이블

모듈 모델 파일:라인 API 엔드포인트
User User auth.py:278 GET /auth/kakao/callback, POST /auth/kakao/verify
User RefreshToken auth.py:315 GET /auth/kakao/callback, POST /auth/kakao/verify
Lyric Project lyric.py:297 POST /lyric/generate
Lyric Lyric lyric.py:317 POST /lyric/generate
Song Song song.py:178 POST /song/generate/{task_id}
Song SongTimestamp song.py:459 GET /song/status/{song_id}
Video Video video.py:247 GET /video/generate/{task_id}
Home Image home.py:486 POST /image/upload
Home Image home.py:535 POST /image/upload
Home Image home.py:782 POST /image/upload/blob
Home Image home.py:804 POST /image/upload/blob

생성일: 2026-01-23