집계 엔진 GraphQL 통합
집계 엔진 GraphQL 통합에 대해 설명합니다.
이 문서는 Gitlab::Database::Aggregation::Graphql::Mounter 모듈을 사용하여 집계 엔진을 GraphQL과 통합하는 방법을 설명합니다. 개요 # GraphQL 통합은 다음을 자동으로 생성합니다: 마운트된 엔진을 위한 쿼리 필드 엔진 필터 정의를 기반으로 하는 필터 인수 엔진 차원 및 메트릭 정의를 기반으로 하는 정렬 인수 . 스네이크 케이스 차원 및 메트릭 식별자를 정렬 식별자로 사용 가능 차원과 메트릭을 필드로 포함하는 응답 유형 매개변수가 있는 차원과 메트릭을 위한 매개변수화된 필드 페이지네이션 : 집계 결과는 OFFSET 페이지네이션을 사용하여 자동으로 페이지네이션됩니다 엔진 마운트 # GraphQL 유형에서 mount_aggregation_engine 메서드를 사용하여 집계 엔진을 노출합니다: module Types class ProjectType < BaseObject extend Gitlab::Database::Aggregation::Graphql::Mounter mount_aggregation_engine( IssueAggregationEngine , field_name: 'issue_analytics' , description: 'Issue analytics aggregation' ) do # 기본 집계 스코프를 정의합니다. 자체 스코프를 구성하거나 부모 객체에서 상속합니다. def aggregation_scope object.issues end end end end GraphQL 필드에 대한 권한 부여 및 적절한 기본 스코프를 반드시 처리하거나 GraphQL 필드에 대한 상승된 권한 요구 사항을 정의해야 합니다. 참고: 모든 필터, 메트릭 및 차원은 자동으로 노출됩니다. Mounter 옵션 # 옵션 타입 설명 field_name String/Symbol GraphQL 필드 이름. 기본값: :aggregation types_prefix String/Symbol *AggregationResponse 및 *AggregationDimensions 와 같은 모든 자식 유형의 접두사. 기본값: field_name description String GraphQL 필드에 대한 설명 생성된 GraphQL 서브트리에 대한 GraphQL 쿼리 예시 # query IssueAnalytics ( $projectId : ID ! ) { project ( fullPath : $projectId ) { issueAnalytics ( state : [ "opened" , "closed" ] createdAtFrom : "2024-01-01" createdAtTo : "2024-12-31" orderBy : [ { identifier : "totalCount" , direction : DESC } ] first : 10 ) { nodes { dimensions { createdAt ( granularity : "monthly" ) } totalCount meanWeight highQuantile : durati
