[스키마] 상담 녹취파일 업로드 Graphql 스키마

Files

# 기존 타입 type Files { id: ID! # 생략 createdAt: DateTime # 생성 일시 - 추가 playTime: Float # 재생 시간 - 추가 } input PreSignedUrlsInput { inputs: [FileInput!]! businessDomain: BusinessDomain! # 아직 네이밍 및 타입명은 픽스 아님. } type PreSignedUrlForFile { fileName: String! fileKey: ID! # ULID BE에서 생성합니다. url: String! # PresigendURL } type PreSignedUrlsPayload { urls: [PreSignedUrlForFile!]! } input FileInput { contentType: String! # MIME fileName: ID! } type Query { preSignedUrls(input: PreSignedUrlsInput!): PreSignedUrlsPayload! }
GraphQL
복사

Student Record

enum CounsellingTarget { STUDENT # 학생 PARENT # 학부모 } enum StudentRecordType { COUNSELING } interface StudentRecord { id: ID! type: StudentRecordType! author: User! # 작성자 createdAt: DateTime! # 생성 일시 } # 판매 상담 기록 type SalesCounselingRecord implements StudentRecord { id: ID! type: StudentRecordType! counsellingTarget: CounsellingTarget! # 상담 대상 attachedFiles: [Files!]! # 첨부 파일 목록 content: String # | Prosemirror # 상담 내용 } type PaginatedSalesCounsellings { items: [SalesCounselling!]! # 상담 기록 목록 totalCount: Int! # 전체 상담 기록 수 limit: Int! # 페이지당 항목 수 offset: Int! # 시작 위치 } input AttachedInfo { fileInfos: [FileInfo!]! } input FileInfo { fileKey: ID! fileName: String! fileCreateAt: DateTime contentType: String! duration: Duration! # Duration 없는 MIME type은 PT0S 로 보내주세요. } enum BusinessDomain { COUNSELING } # Mutation TypestudentRecord type Mutation { # 상담 기록 추가 createStudentRecord( input: CreateStudentRecordInput! ): CreateStudentRecordPayload! # 상담 기록 수정 updateStudentRecord( id: ID! input: UpdateStudentRecordInput! ): Counselling! # 상담 기록 삭제 deleteCounselling(id: ID!): Boolean! } input CreateStudentRecordInput { type: StudentRecordType! salesCounselingInput: SalesCounsellingInput # counselingInput: CounSelingInput } input SalesCounsellingInput { purchaseId: ID! counsellingTarget: CounsellingTarget! # 상담 대상 content: String | ProseMirror # 상담 내용: 아직 타입은 미정 attachedInfo: AttachedInfo! } type CreateStudentRecordPayload { studentRecord: StudentRecord! } input UpdateStudentRecordInput { type: StudentRecordType! salesCounselingInput: SalesCounsellingInput }
GraphQL
복사

Purchase

type Purchase { id: ID! buyerName: String! # 구매자 이름 studentName: String! # 학생 이름 impUid: String! # 아임포트 결제 번호 courseStartDate: DateTime! # 강의 시작일 buyerMobile: String! # 구매자 전화번호 grade: String! # 학년 paidAt: DateTime! # 결제 일시 studentMobile: String! # 전화번호 status: PurchaseStatus! # 결제 상태 paymentMethod: String! # 결제 수단 price: Int! # 가격 sellers: [User!]! # 판매자 salesCounsellingRecords( limit: Int = 10 offset: Int = 0 ): SalesCounselingRecordsConnection! # 관련 상담 기록 기존 네이밍과 일관되게 SalesCounselingRecordsConnection 으로할게요 } enum PurchaseStatus { PAID AUTHORIZED REFUNDED CANCELLED REIMBURSED PENDING READY ASSIGNED SURVEYED UNKNOWN } input DateRangeInput { start: DateTime! # 시작 날짜 end: DateTime! # 종료 날짜 } input PurchaseFilterInput { searchText: String # 통합 검색어 dateRange: DateRangeInput! # 날짜 범위 limit: Int = 100 # 페이지당 항목 수 offset: Int = 0 # 시작 위치 } type PurchaseConnection { # 기존 네이밍과 일관되게 PurchaseConnection으로 할게요 items: [Purchase!]! # 구매 목록 totalCount: Int! # 전체 구매 수 limit: Int! # 페이지당 항목 수 offset: Int! # 시작 위치 } type Query { # 결제 내역 페이지 조회 purchases(filter: PurchaseFilterInput): PurchaseConnection! # 기존 네이밍과 일관되게 PurchaseConnection으로 할게요 # 결제 단건 상세 조회 purchase(id: ID!): Purchase! }
GraphQL
복사