Skip to content

Problem 모델 분리 #1398

Open
Open
@Jaehyeon1020

Description

Describe the problem and solution

현재 Problem 모델:

model Problem {
  id          Int   @id @default(autoincrement())
  createdBy   User? @relation(fields: [createdById], references: [id], onDelete: SetNull)
  createdById Int?  @map("created_by_id")
  group       Group @relation(fields: [groupId], references: [id])
  groupId     Int   @map("group_id")

  title             String
  description       String
  inputDescription  String @map("input_description")
  outputDescription String @map("output_description")
  hint              String

  // 문제 정보의 영어 버전 제공은 선택사항임
  engTitle             String? @map("eng_title")
  engDescription       String? @map("eng_description")
  engInputDescription  String? @map("eng_input_description")
  engOutputDescription String? @map("eng_output_description")
  engHint              String? @map("eng_hint")

  /// template code item structure
  /// {
  ///   "lanaguage": Language,
  ///   "code": {
  ///             "id": number,
  ///             "text": string,
  ///             "locked": boolean
  ///           }[]
  /// }
  isVisible       Boolean    @default(true) @map("is_visible")
  template        Json[]
  languages       Language[]
  timeLimit       Int        @map("time_limit") // unit: MilliSeconds
  memoryLimit     Int        @map("memory_limit") // unit: MegaBytes
  difficulty      Level
  source          String
  submissionCount Int        @default(0) @map("submission_count")
  acceptedCount   Int        @default(0) @map("accepted_count")
  acceptedRate    Float      @default(0) @map("accepted_rate")
  exposeTime      DateTime   @default(now()) @map("expose_time")
  createTime      DateTime   @default(now()) @map("create_time")
  updateTime      DateTime   @updatedAt @map("update_time")
  inputExamples   String[]   @map("input_examples")
  outputExamples  String[]   @map("output_examples")

  problemTestcase ProblemTestcase[]
  problemTag      ProblemTag[]
  contestProblem  ContestProblem[]
  workbookProblem WorkbookProblem[]
  submission      Submission[]
  announcement    Announcement[]
  codeDraft       CodeDraft[]

  @@map("problem")
}

너무 많은 속성들이 있기 때문에, 문제에 대한 설명 및 안내가 담기는 속성을 분리해 ProblemInfo 테이블을 생성합니다..
title, description, inputDescription, outputDescription, hint를 분리해 새로운 모델을 생성하고, 해당 모델에 problemLanguage 속성을 정의해 저장되는 문제 정보가 영어인지, 한국어인지 구분하도록 합니다. (따라서 engTitle, engDescription 등은 삭제)

Validations

Metadata

Assignees

Type

No type

Projects

  • Status

    Pending ✋

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions