@@ -3,9 +3,12 @@ import {
33 EditItemInput ,
44 Item ,
55 PinboardIdWithClaimCounts ,
6- } from "../../../shared/graphql/graphql" ;
7- import { Sql } from "../../../shared/database/types" ;
8- import { Range } from "../../../shared/types/grafanaType" ;
6+ } from "shared/graphql/graphql" ;
7+ import { Sql } from "shared/database/types" ;
8+ import { Range } from "shared/types/grafanaType" ;
9+ import { performImagingRequest } from "../imagingRequestCallout" ;
10+ import { IMAGING_REQUEST_ITEM_TYPE } from "shared/octopusImaging" ;
11+ import { ItemWithParsedPayload } from "shared/types/ItemWithParsedPayload" ;
912
1013const fragmentIndividualMentionsToMentionHandles = (
1114 sql : Sql ,
@@ -59,10 +62,32 @@ export const createItem = async (
5962 args : { input : CreateItemInput } ,
6063 userEmail : string
6164) =>
62- sql `
65+ sql . begin ( async ( sql ) => {
66+ const insertResult = ( await sql `
6367 INSERT INTO "Item" ${ sql ( { userEmail, ...args . input } ) }
6468 RETURNING ${ fragmentItemFields ( sql , userEmail ) }
65- ` . then ( ( rows ) => rows [ 0 ] ) ;
69+ ` . then ( ( rows ) => rows [ 0 ] ) ) as ItemWithParsedPayload ;
70+ if (
71+ insertResult . type === IMAGING_REQUEST_ITEM_TYPE &&
72+ insertResult . payload
73+ ) {
74+ // if this throws, the SQL transaction should be rolled back TODO test/confirm this
75+ const octopusImagingOrderId = await performImagingRequest ( {
76+ item : insertResult ,
77+ } ) ;
78+ return sql `
79+ UPDATE "Item"
80+ SET "payload" = ${ {
81+ ...insertResult . payload ,
82+ octopusImagingOrderId,
83+ } }
84+ WHERE "id" = ${ insertResult . id }
85+ RETURNING ${ fragmentItemFields ( sql , userEmail ) } ` . then (
86+ ( rows ) => rows [ 0 ]
87+ ) ;
88+ }
89+ return insertResult ;
90+ } ) ;
6691
6792export const editItem = async (
6893 sql : Sql ,
0 commit comments