@@ -194,7 +194,7 @@ pub struct SubmissionCancelled {
194194 pub chunks_total : ChunkCount ,
195195 pub chunks_done : ChunkCount ,
196196 pub metadata : Option < Metadata > ,
197- // TODO pub strategic_metadata: Option<StrategicMetadataMap>,
197+ pub strategic_metadata : Option < StrategicMetadataMap > ,
198198 pub cancelled_at : DateTime < Utc > ,
199199}
200200
@@ -624,24 +624,36 @@ pub mod db {
624624 ) ) ) ;
625625 }
626626
627- let cancelled = query_as ! (
628- SubmissionCancelled ,
627+ let cancelled_row_opt = query ! (
629628 r#"
630629 SELECT
631630 id AS "id: SubmissionId"
632631 , prefix
633632 , chunks_total AS "chunks_total: ChunkCount"
634633 , chunks_done AS "chunks_done: ChunkCount"
635634 , metadata
635+ , ( SELECT json_group_object(metadata_key, metadata_value)
636+ FROM submissions_metadata
637+ WHERE submission_id = submissions_cancelled.id
638+ ) AS "strategic_metadata: sqlx::types::Json<StrategicMetadataMap>"
636639 , cancelled_at AS "cancelled_at: DateTime<Utc>"
637640 FROM submissions_cancelled WHERE id = $1
638641 "# ,
639642 id
640643 )
641644 . fetch_optional ( conn. get_inner ( ) )
642645 . await ?;
643- if let Some ( cancelled) = cancelled {
644- return Ok ( Some ( SubmissionStatus :: Cancelled ( cancelled) ) ) ;
646+ if let Some ( row) = cancelled_row_opt {
647+ let cancelled_submission = SubmissionCancelled {
648+ id : row. id ,
649+ prefix : row. prefix ,
650+ chunks_total : row. chunks_total ,
651+ chunks_done : row. chunks_done ,
652+ metadata : row. metadata ,
653+ strategic_metadata : row. strategic_metadata . map ( |json| json. 0 ) ,
654+ cancelled_at : row. cancelled_at ,
655+ } ;
656+ return Ok ( Some ( SubmissionStatus :: Cancelled ( cancelled_submission) ) ) ;
645657 }
646658
647659 Ok ( None )
0 commit comments