Jobsets: update schema to align with the API

To further align with the API, we return custom JSON in order to display a
`visible` field rather than `hidden` -- a `PUT` request expects `visible`, while
a `GET` request returns `hidden`.

This also allows us to rename the `jobsetinputs` field to `inputs` for the same
reason: `PUT` expects `inputs`, while `GET` returns `jobsetinputs`.
This commit is contained in:
Cole Helbling
2021-04-28 12:41:05 -07:00
committed by Graham Christensen
parent d23f431889
commit f1dd5d202e
6 changed files with 58 additions and 60 deletions

View File

@ -270,8 +270,8 @@ sub updateJobset {
$jobset->jobsetinputs->delete;
if ($type == 0) {
foreach my $name (keys %{$c->stash->{params}->{jobsetinputs}}) {
my $inputData = $c->stash->{params}->{jobsetinputs}->{$name};
foreach my $name (keys %{$c->stash->{params}->{inputs}}) {
my $inputData = $c->stash->{params}->{inputs}->{$name};
my $type = $inputData->{type};
my $value = $inputData->{value};
my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;

View File

@ -410,40 +410,40 @@ __PACKAGE__->add_column(
"+id" => { retrieve_on_insert => 1 }
);
my %hint = (
columns => [
"errortime",
"lastcheckedtime",
"triggertime",
"enabled",
"keepnr",
"checkinterval",
"schedulingshares",
"starttime"
],
string_columns => [
"name",
"project",
"description",
"nixexprinput",
"nixexprpath",
"errormsg",
"emailoverride",
"fetcherrormsg",
"type",
"flake"
],
boolean_columns => [
"enableemail",
"hidden"
],
eager_relations => {
jobsetinputs => "name"
}
);
sub as_json {
my $self = shift;
sub json_hint {
return \%hint;
my %json = (
# columns
"errortime" => $self->get_column("errortime"),
"lastcheckedtime" => $self->get_column("lastcheckedtime"),
"triggertime" => $self->get_column("triggertime"),
"enabled" => $self->get_column("enabled"),
"keepnr" => $self->get_column("keepnr"),
"checkinterval" => $self->get_column("checkinterval"),
"schedulingshares" => $self->get_column("schedulingshares"),
"starttime" => $self->get_column("starttime"),
# string_columns
"name" => $self->get_column("name") // "",
"project" => $self->get_column("project") // "",
"description" => $self->get_column("description") // "",
"nixexprinput" => $self->get_column("nixexprinput") // "",
"nixexprpath" => $self->get_column("nixexprpath") // "",
"errormsg" => $self->get_column("errormsg") // "",
"emailoverride" => $self->get_column("emailoverride") // "",
"fetcherrormsg" => $self->get_column("fetcherrormsg") // "",
"type" => $self->get_column("type") // "",
"flake" => $self->get_column("flake") // "",
# boolean_columns
"enableemail" => $self->get_column("enableemail") ? JSON::true : JSON::false,
"visible" => $self->get_column("hidden") ? JSON::false : JSON::true,
"inputs" => { map { $_->name => $_ } $self->jobsetinputs }
);
return \%json;
}
1;