Handle missing values in declarative jobsets

The current implementation will pass all values to create_or_update method. The missing values will end up as undef (or NULL) when assigned to %update. Thus, for columns that are NOT NULL, when, for example, flakes are not used, will result in a horrible:

DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::Pg::st execute failed:
ERROR:  null value in column "type" violates not-null constraint

DETAIL:  Failing row contains (.jobsets, 118, hydra, hydra jobsets, src, hydra/jobsets.nix, null,
null, null, 1589536378, 1, 0, 0, , 3, 30, 100, null, null, 1589536379, null, null). [for Statement
"UPDATE jobsets SET checkinterval = ?, description = ?, enableemail = ?, nixexprinput = ?,
nixexprpath = ?, type = ? WHERE ( ( name = ? AND project = ? ) )" with ParamValues: 1='30',
2='hydra jobsets', 3='0', 4='src', 5='hydra/jobsets.nix', 6=undef, 7='.jobsets', 8='hydra'] at
/nix/store/lsf81ip9ybxihk5praf2n0nh14a6i9j0-hydra-0.1.19700101.DIRTY/libexec/hydra/lib/Hydra/Helper/AddBuilds.pm line 50

This change just omits adding such values to %update, which results in PostgreSQL assigning the default values.

Created by  Nikola Knezevic  on May 15, 2020
AX44ZFH5LL5QS5X7DZGLB7GXOCNOVX5YJXTDFFVR3BIA3CWMTBBQC
Change contents