Pierre Bourdon 65618fd590 web: replace 'errormsg' with 'errormsg IS NULL' in most cases
This is implement in an extremely hacky way due to poor DBIx feature
support. Ideally, what we'd need is a way to tell DBIx to ignore the
errormsg column unless explicitly requested, and to automatically add a
computed 'errormsg IS NULL' column in others. Since it does not support
that, this commit instead hacks some support via method overrides while
taking care to not break anything obvious.
2025-04-09 11:31:47 -04:00

436 lines
8.1 KiB
Perl

use utf8;
package Hydra::Schema::Result::Jobsets;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
=head1 NAME
Hydra::Schema::Result::Jobsets
=cut
use strict;
use warnings;
use base 'DBIx::Class::Core';
=head1 COMPONENTS LOADED
=over 4
=item * L<Hydra::Component::ToJSON>
=back
=cut
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
=head1 TABLE: C<jobsets>
=cut
__PACKAGE__->table("jobsets");
=head1 ACCESSORS
=head2 name
data_type: 'text'
is_nullable: 0
=head2 id
data_type: 'integer'
is_auto_increment: 1
is_nullable: 0
sequence: 'jobsets_id_seq'
=head2 project
data_type: 'text'
is_foreign_key: 1
is_nullable: 0
=head2 description
data_type: 'text'
is_nullable: 1
=head2 nixexprinput
data_type: 'text'
is_nullable: 1
=head2 nixexprpath
data_type: 'text'
is_nullable: 1
=head2 errormsg
data_type: 'text'
is_nullable: 1
=head2 errortime
data_type: 'integer'
is_nullable: 1
=head2 lastcheckedtime
data_type: 'integer'
is_nullable: 1
=head2 triggertime
data_type: 'integer'
is_nullable: 1
=head2 enabled
data_type: 'integer'
default_value: 1
is_nullable: 0
=head2 enableemail
data_type: 'integer'
default_value: 1
is_nullable: 0
=head2 hidden
data_type: 'integer'
default_value: 0
is_nullable: 0
=head2 emailoverride
data_type: 'text'
is_nullable: 0
=head2 keepnr
data_type: 'integer'
default_value: 3
is_nullable: 0
=head2 checkinterval
data_type: 'integer'
default_value: 300
is_nullable: 0
=head2 schedulingshares
data_type: 'integer'
default_value: 100
is_nullable: 0
=head2 fetcherrormsg
data_type: 'text'
is_nullable: 1
=head2 forceeval
data_type: 'boolean'
is_nullable: 1
=head2 starttime
data_type: 'integer'
is_nullable: 1
=head2 type
data_type: 'integer'
default_value: 0
is_nullable: 0
=head2 flake
data_type: 'text'
is_nullable: 1
=head2 enable_dynamic_run_command
data_type: 'boolean'
default_value: false
is_nullable: 0
=cut
__PACKAGE__->add_columns(
"name",
{ data_type => "text", is_nullable => 0 },
"id",
{
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
sequence => "jobsets_id_seq",
},
"project",
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
"description",
{ data_type => "text", is_nullable => 1 },
"nixexprinput",
{ data_type => "text", is_nullable => 1 },
"nixexprpath",
{ data_type => "text", is_nullable => 1 },
"errormsg",
{ data_type => "text", is_nullable => 1 },
"errortime",
{ data_type => "integer", is_nullable => 1 },
"lastcheckedtime",
{ data_type => "integer", is_nullable => 1 },
"triggertime",
{ data_type => "integer", is_nullable => 1 },
"enabled",
{ data_type => "integer", default_value => 1, is_nullable => 0 },
"enableemail",
{ data_type => "integer", default_value => 1, is_nullable => 0 },
"hidden",
{ data_type => "integer", default_value => 0, is_nullable => 0 },
"emailoverride",
{ data_type => "text", is_nullable => 0 },
"keepnr",
{ data_type => "integer", default_value => 3, is_nullable => 0 },
"checkinterval",
{ data_type => "integer", default_value => 300, is_nullable => 0 },
"schedulingshares",
{ data_type => "integer", default_value => 100, is_nullable => 0 },
"fetcherrormsg",
{ data_type => "text", is_nullable => 1 },
"forceeval",
{ data_type => "boolean", is_nullable => 1 },
"starttime",
{ data_type => "integer", is_nullable => 1 },
"type",
{ data_type => "integer", default_value => 0, is_nullable => 0 },
"flake",
{ data_type => "text", is_nullable => 1 },
"enable_dynamic_run_command",
{ data_type => "boolean", default_value => \"false", is_nullable => 0 },
);
=head1 PRIMARY KEY
=over 4
=item * L</project>
=item * L</name>
=back
=cut
__PACKAGE__->set_primary_key("project", "name");
=head1 UNIQUE CONSTRAINTS
=head2 C<jobsets_id_unique>
=over 4
=item * L</id>
=back
=cut
__PACKAGE__->add_unique_constraint("jobsets_id_unique", ["id"]);
=head1 RELATIONS
=head2 buildmetrics
Type: has_many
Related object: L<Hydra::Schema::Result::BuildMetrics>
=cut
__PACKAGE__->has_many(
"buildmetrics",
"Hydra::Schema::Result::BuildMetrics",
{
"foreign.jobset" => "self.name",
"foreign.project" => "self.project",
},
undef,
);
=head2 builds
Type: has_many
Related object: L<Hydra::Schema::Result::Builds>
=cut
__PACKAGE__->has_many(
"builds",
"Hydra::Schema::Result::Builds",
{ "foreign.jobset_id" => "self.id" },
undef,
);
=head2 jobsetevals
Type: has_many
Related object: L<Hydra::Schema::Result::JobsetEvals>
=cut
__PACKAGE__->has_many(
"jobsetevals",
"Hydra::Schema::Result::JobsetEvals",
{ "foreign.jobset_id" => "self.id" },
undef,
);
=head2 jobsetinputs
Type: has_many
Related object: L<Hydra::Schema::Result::JobsetInputs>
=cut
__PACKAGE__->has_many(
"jobsetinputs",
"Hydra::Schema::Result::JobsetInputs",
{
"foreign.jobset" => "self.name",
"foreign.project" => "self.project",
},
undef,
);
=head2 jobsetrenames
Type: has_many
Related object: L<Hydra::Schema::Result::JobsetRenames>
=cut
__PACKAGE__->has_many(
"jobsetrenames",
"Hydra::Schema::Result::JobsetRenames",
{ "foreign.project" => "self.project", "foreign.to_" => "self.name" },
undef,
);
=head2 project
Type: belongs_to
Related object: L<Hydra::Schema::Result::Projects>
=cut
__PACKAGE__->belongs_to(
"project",
"Hydra::Schema::Result::Projects",
{ name => "project" },
{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },
);
=head2 starredjobs
Type: has_many
Related object: L<Hydra::Schema::Result::StarredJobs>
=cut
__PACKAGE__->has_many(
"starredjobs",
"Hydra::Schema::Result::StarredJobs",
{
"foreign.jobset" => "self.name",
"foreign.project" => "self.project",
},
undef,
);
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2022-01-24 14:17:33
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7wPE5ebeVTkenMCWG9Sgcg
use JSON::MaybeXS;
=head2 builds
Type: has_many
Related object: L<Hydra::Schema::Result::Builds>
=cut
__PACKAGE__->has_many(
"builds",
"Hydra::Schema::Result::Builds",
{ "foreign.jobset_id" => "self.id" },
undef,
);
__PACKAGE__->add_column(
"+id" => { retrieve_on_insert => 1 }
);
__PACKAGE__->mk_group_accessors('column' => 'has_error');
sub supportsDynamicRunCommand {
my ($self) = @_;
return $self->get_column('enable_dynamic_run_command') == 1
&& $self->project->supportsDynamicRunCommand();
}
sub as_json {
my $self = shift;
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::MaybeXS::true : JSON::MaybeXS::false,
"enable_dynamic_run_command" => $self->get_column("enable_dynamic_run_command") ? JSON::MaybeXS::true : JSON::MaybeXS::false,
"visible" => $self->get_column("hidden") ? JSON::MaybeXS::false : JSON::MaybeXS::true,
"inputs" => { map { $_->name => $_ } $self->jobsetinputs }
);
return \%json;
}
1;