@@ -52,7 +52,7 @@ AND finished_at IS NULL`,
5252
5353 updateAllValidationJobFilesOnErrorQuery : `
5454UPDATE file_validation_job SET
55- finished_at = $1, file_result = " error" , validator_messages = $2, validator_result = " error"
55+ finished_at = $1, file_result = ' error' , validator_messages = $2, validator_result = ' error'
5656WHERE validation_id = $3` ,
5757}
5858
@@ -68,10 +68,12 @@ func (db *pgDb) readValidationResult(ctx context.Context, stmt *sql.Stmt, valida
6868 validatorResults := make (map [string ]* model.ValidatorResult )
6969
7070 for rows .Next () {
71- var validatorMessages , fileMessages , startedAt , finishedAt string
71+ var startedAt string
7272 fileResult := new (model.FileResult )
7373 validatorResult := new (model.ValidatorResult )
7474
75+ var validatorMessages , fileMessages , finishedAt sql.NullString
76+
7577 if err := rows .Scan (
7678 & validatorResult .ValidatorID ,
7779 & validatorResult .Result ,
@@ -84,8 +86,10 @@ func (db *pgDb) readValidationResult(ctx context.Context, stmt *sql.Stmt, valida
8486 return nil , err
8587 }
8688
87- if err := json .Unmarshal ([]byte (fileMessages ), & fileResult .Messages ); err != nil {
88- return nil , fmt .Errorf ("failed to unmarshal file messages: %v" , err )
89+ if fileMessages .Valid {
90+ if err := json .Unmarshal ([]byte (fileMessages .String ), & fileResult .Messages ); err != nil {
91+ return nil , fmt .Errorf ("failed to unmarshal file messages: %v" , err )
92+ }
8993 }
9094
9195 if readValidatorResult , ok := validatorResults [validatorResult .ValidatorID ]; ok {
@@ -94,17 +98,21 @@ func (db *pgDb) readValidationResult(ctx context.Context, stmt *sql.Stmt, valida
9498 continue
9599 }
96100
97- if err := json .Unmarshal ([]byte (validatorMessages ), & validatorResult .Messages ); err != nil {
98- return nil , fmt .Errorf ("failed to unmarshal file messages: %v" , err )
101+ if validatorMessages .Valid {
102+ if err := json .Unmarshal ([]byte (validatorMessages .String ), & validatorResult .Messages ); err != nil {
103+ return nil , fmt .Errorf ("failed to unmarshal file messages: %v" , err )
104+ }
99105 }
100106
101107 validatorResult .StartedAt , err = time .Parse (time .RFC3339 , startedAt )
102108 if err != nil {
103109 return nil , fmt .Errorf ("failed to parse started at: %v" , err )
104110 }
105- validatorResult .FinishedAt , err = time .Parse (time .RFC3339 , startedAt )
106- if err != nil {
107- return nil , fmt .Errorf ("failed to parse started at: %v" , err )
111+ if finishedAt .Valid {
112+ validatorResult .FinishedAt , err = time .Parse (time .RFC3339 , finishedAt .String )
113+ if err != nil {
114+ return nil , fmt .Errorf ("failed to parse started at: %v" , err )
115+ }
108116 }
109117 validatorResult .Files = append (validatorResult .Files , fileResult )
110118 validatorResults [validatorResult .ValidatorID ] = validatorResult
@@ -180,20 +188,34 @@ func (db *pgDb) readValidationInformation(ctx context.Context, stmt *sql.Stmt, v
180188}
181189
182190func (db * pgDb ) updateFileValidationJob (ctx context.Context , stmt * sql.Stmt , params * model.UpdateFileValidationJobParameters ) error {
183- fileMessagesJSON , err := json .Marshal (params .FileMessages )
184- if err != nil {
185- return fmt .Errorf ("failed to marshal file messages: %v" , err )
191+
192+ fileMessages := sql.NullString {}
193+ if len (params .FileMessages ) > 0 {
194+ fileMessagesJSON , err := json .Marshal (params .FileMessages )
195+ if err != nil {
196+ return fmt .Errorf ("failed to marshal file messages: %v" , err )
197+ }
198+
199+ fileMessages .Valid = true
200+ fileMessages .String = string (fileMessagesJSON )
186201 }
187- validatorMessagesJSON , err := json .Marshal (params .ValidatorMessages )
188- if err != nil {
189- return fmt .Errorf ("failed to marshal validator messages: %v" , err )
202+
203+ validatorMessages := sql.NullString {}
204+ if len (params .ValidatorMessages ) > 0 {
205+ validatorMessagesJSON , err := json .Marshal (params .ValidatorMessages )
206+ if err != nil {
207+ return fmt .Errorf ("failed to marshal validator messages: %v" , err )
208+ }
209+
210+ validatorMessages .Valid = true
211+ validatorMessages .String = string (validatorMessagesJSON )
190212 }
191213
192214 if _ , err := stmt .ExecContext (ctx ,
193215 params .FinishedAt .Format (time .RFC3339 ),
194216 params .FileResult ,
195- validatorMessagesJSON ,
196- fileMessagesJSON ,
217+ validatorMessages ,
218+ fileMessages ,
197219 params .ValidatorResult ,
198220 params .FileID ,
199221 params .ValidatorID ,
@@ -236,14 +258,21 @@ func (db *pgDb) insertFileValidationJob(ctx context.Context, stmt *sql.Stmt, par
236258}
237259
238260func (db * pgDb ) updateAllValidationJobFilesOnError (ctx context.Context , stmt * sql.Stmt , validationId string , validatorMessage * model.Message ) error {
239- validatorMessagesJSON , err := json .Marshal ([]* model.Message {validatorMessage })
240- if err != nil {
241- return fmt .Errorf ("failed to marshal validator message: %v" , err )
261+
262+ validatorMessages := & sql.NullString {}
263+ if validatorMessage != nil {
264+ validatorMessagesJSON , err := json .Marshal ([]* model.Message {validatorMessage })
265+ if err != nil {
266+ return fmt .Errorf ("failed to marshal validator messages: %v" , err )
267+ }
268+
269+ validatorMessages .Valid = true
270+ validatorMessages .String = string (validatorMessagesJSON )
242271 }
243272
244273 if _ , err := stmt .ExecContext (ctx ,
245274 time .Now ().Format (time .RFC3339 ),
246- validatorMessagesJSON ,
275+ validatorMessages ,
247276 validationId ); err != nil {
248277 return err
249278 }
0 commit comments