@@ -43,10 +43,12 @@ func (h *StrictHandlers) CreateWorkitem(c *gin.Context, request CreateWorkitemRe
4343 span .SetAttributes (tracing .MetadataAttribute (jsonBody ))
4444 c .Request .Body = io .NopCloser (bytes .NewBuffer (jsonBody ))
4545
46- // body := &models.CreateWorkItemRequest{}
47- // if err := json.Unmarshal(jsonBody, body); err != nil {
48- // return nil, nil
49- // }
46+ project , err := projectByDiscriminator (request .Body )
47+ if err != nil {
48+ renderErrorResponse (c , "Failed to get project" , err )
49+
50+ return nil , nil
51+ }
5052
5153 var res any // depends on project
5254 b , err := request .Body .ValueByDiscriminator ()
@@ -56,16 +58,18 @@ func (h *StrictHandlers) CreateWorkitem(c *gin.Context, request CreateWorkitemRe
5658 return nil , nil
5759 }
5860
59- switch body := b .(type ) {
60- case models.CreateDemoWorkItemRequest :
61+ //exhaustive:enforce
62+ switch project {
63+ case models .ProjectNameDemo :
64+ body , _ := b .(models.CreateDemoWorkItemRequest )
6165 workItem , err := h .svc .DemoWorkItem .Create (ctx , tx , caller , services.DemoWorkItemCreateParams {
6266 DemoWorkItemCreateParams : repos.DemoWorkItemCreateParams {
6367 DemoProject : body .DemoProject ,
6468 Base : body .Base ,
6569 },
6670 WorkItemCreateParams : services.WorkItemCreateParams {
67- // TagIDs: body.TagIDs,
68- // Members: body.Members,
71+ TagIDs : body .TagIDs ,
72+ Members : restMembersToServices ( body .Members ) ,
6973 },
7074 })
7175 if err != nil {
@@ -78,8 +82,18 @@ func (h *StrictHandlers) CreateWorkitem(c *gin.Context, request CreateWorkitemRe
7882 WorkItemBase : fillBaseWorkItemResponse (workItem ),
7983 DemoWorkItem : * workItem .DemoWorkItemJoin ,
8084 }
81- case models.CreateDemoTwoWorkItemRequest :
82- workItem , err := h .svc .DemoTwoWorkItem .Create (ctx , tx , caller , services.DemoTwoWorkItemCreateParams {})
85+ case models .ProjectNameDemoTwo :
86+ body , _ := b .(models.CreateDemoTwoWorkItemRequest )
87+ workItem , err := h .svc .DemoTwoWorkItem .Create (ctx , tx , caller , services.DemoTwoWorkItemCreateParams {
88+ DemoTwoWorkItemCreateParams : repos.DemoTwoWorkItemCreateParams {
89+ DemoTwoProject : body .DemoTwoProject ,
90+ Base : body .Base ,
91+ },
92+ WorkItemCreateParams : services.WorkItemCreateParams {
93+ TagIDs : body .TagIDs ,
94+ Members : restMembersToServices (body .Members ),
95+ },
96+ })
8397 if err != nil {
8498 renderErrorResponse (c , "Could not create work item" , err )
8599
@@ -91,7 +105,7 @@ func (h *StrictHandlers) CreateWorkitem(c *gin.Context, request CreateWorkitemRe
91105 DemoTwoWorkItem : * workItem .DemoTwoWorkItemJoin ,
92106 }
93107 default :
94- renderErrorResponse (c , "Unknown body " , internal .NewErrorf (models .ErrorCodeUnknown , "%+v" , b ))
108+ renderErrorResponse (c , "Unknown discriminator " , internal .NewErrorf (models .ErrorCodeUnknown , "%+v" , b ))
95109
96110 return nil , nil
97111 }
0 commit comments