141 lines
5.7 KiB
Markdown
141 lines
5.7 KiB
Markdown
# 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*
|