Skip to content

Commit 77b2e2b

Browse files
authored
Merge pull request #818 from populationgenomics/dev
2 parents cbbdfbc + 8443e0a commit 77b2e2b

32 files changed

+2326
-3
lines changed

.github/workflows/test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ jobs:
7272
echo "rc=$rc" >> $GITHUB_OUTPUT
7373
7474
- name: "Upload coverage report"
75-
uses: codecov/codecov-action@v3
75+
uses: codecov/codecov-action@v4
7676
with:
7777
files: ./coverage.xml
7878
token: ${{ secrets.CODECOV_TOKEN }}

api/graphql/schema.py

+36
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
AssayLayer,
2727
CohortLayer,
2828
FamilyLayer,
29+
OurDnaDashboardLayer,
2930
SampleLayer,
3031
SequencingGroupLayer,
3132
)
@@ -53,6 +54,7 @@
5354
)
5455
from models.models.analysis_runner import AnalysisRunnerInternal
5556
from models.models.family import PedRowInternal
57+
from models.models.ourdna import OurDNADashboard, OurDNALostSample
5658
from models.models.project import ProjectId
5759
from models.models.sample import sample_id_transform_to_raw
5860
from models.utils.cohort_id_format import cohort_id_format, cohort_id_transform_to_raw
@@ -89,6 +91,28 @@ async def m(info: Info) -> list[str]:
8991
GraphQLAnalysisStatus = strawberry.enum(AnalysisStatus)
9092

9193

94+
@strawberry.experimental.pydantic.type(model=OurDNALostSample, all_fields=True) # type: ignore
95+
class GraphQLOurDNALostSample:
96+
"""OurDNA Lost Sample GraphQL model to be used in OurDNA Dashboard"""
97+
98+
pass # pylint: disable=unnecessary-pass
99+
100+
101+
@strawberry.experimental.pydantic.type(model=OurDNADashboard) # type: ignore
102+
class GraphQLOurDNADashboard:
103+
"""OurDNA Dashboard model"""
104+
105+
collection_to_process_end_time: strawberry.scalars.JSON
106+
collection_to_process_end_time_statistics: strawberry.scalars.JSON
107+
collection_to_process_end_time_24h: strawberry.scalars.JSON
108+
processing_times_by_site: strawberry.scalars.JSON
109+
total_samples_by_collection_event_name: strawberry.scalars.JSON
110+
samples_lost_after_collection: list[GraphQLOurDNALostSample]
111+
samples_concentration_gt_1ug: strawberry.scalars.JSON
112+
participants_consented_not_collected: list[int]
113+
participants_signed_not_consented: list[int]
114+
115+
92116
# Create cohort GraphQL model
93117
@strawberry.type
94118
class GraphQLCohort:
@@ -244,6 +268,18 @@ async def analysis_runner(
244268
analysis_runners = await alayer.query(filter_)
245269
return [GraphQLAnalysisRunner.from_internal(ar) for ar in analysis_runners]
246270

271+
@strawberry.field
272+
async def ourdna_dashboard(
273+
self, info: Info, root: 'Project'
274+
) -> 'GraphQLOurDNADashboard':
275+
connection = info.context['connection']
276+
ourdna_layer = OurDnaDashboardLayer(connection)
277+
if not root.id:
278+
raise ValueError('Project must have an id')
279+
ourdna_dashboard = await ourdna_layer.query(project_id=root.id)
280+
# pylint: disable=no-member
281+
return GraphQLOurDNADashboard.from_pydantic(ourdna_dashboard)
282+
247283
@strawberry.field()
248284
async def pedigree(
249285
self,

db/python/layers/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from db.python.layers.billing import BillingLayer
77
from db.python.layers.cohort import CohortLayer
88
from db.python.layers.family import FamilyLayer
9+
from db.python.layers.ourdna.dashboard import OurDnaDashboardLayer
910
from db.python.layers.participant import ParticipantLayer
1011
from db.python.layers.sample import SampleLayer
1112
from db.python.layers.search import SearchLayer

db/python/layers/ourdna/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)