Files
meeting-minutes/prisma/migrations/20260421104750_init/migration.sql
T
nad4andGitHub cf6613bb94 Phase 1 foundation: Prisma + /api/meetings CRUD (#1)
* feat(phase-1): Prisma 연동 + 회의록 CRUD API

Phase 1 foundation (ROADMAP #1~#3):

- src/lib/db.ts: Prisma 클라이언트 싱글톤 (dev hot-reload 대응)
- Meeting 스키마 확장: attendees/tags (String[]), template/depth/
  summaryMode/customPrompt (향후 참조 복원용), createdAt 인덱스
- 첫 마이그레이션 `20260421104750_init` 생성
- /api/meetings (GET 목록 + POST 생성)
  - q 파라미터로 제목/transcript/markdown 부분 검색
  - limit (max 100), offset 페이지네이션
  - attendees/tags 배열 타입 정규화
- /api/meetings/[id] (GET/PUT/DELETE)
  - PUT은 markdownMinutes/title/attendees/tags만 편집 허용
  - 존재하지 않는 id에 대해 404
- docker-compose.yml: tools 프로필에 migrate 서비스 추가
  (app 컨테이너 bloat 없이 마이그레이션 실행)
- Prisma mock 기반 API 테스트 14개 신규 (총 71 tests)

* docs: migrate 실행 단계 추가, ROADMAP의 #1/#2 완료 체크

* docs: PR 본문 드래프트 추가
2026-04-28 16:38:09 +09:00

29 lines
814 B
SQL

-- CreateEnum
CREATE TYPE "MeetingStatus" AS ENUM ('CREATED', 'UPLOADING', 'TRANSCRIBING', 'SUMMARIZING', 'COMPLETED', 'FAILED');
-- CreateTable
CREATE TABLE "meetings" (
"id" TEXT NOT NULL,
"title" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"audioFileName" TEXT,
"audioMimeType" TEXT,
"audioDuration" INTEGER,
"rawTranscript" TEXT,
"markdownMinutes" TEXT,
"geminiSummary" TEXT,
"summaryMode" TEXT,
"template" TEXT,
"depth" TEXT,
"customPrompt" TEXT,
"attendees" TEXT[],
"tags" TEXT[],
"status" "MeetingStatus" NOT NULL DEFAULT 'COMPLETED',
CONSTRAINT "meetings_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "meetings_createdAt_idx" ON "meetings"("createdAt");