Merge remote-tracking branch 'origin/master' into flake
Also update flake.lock
This commit is contained in:
commit
100e09a5b3
17
flake.lock
17
flake.lock
|
@ -2,19 +2,20 @@
|
|||
"inputs": {
|
||||
"nix": {
|
||||
"info": {
|
||||
"lastModified": 1580749449,
|
||||
"narHash": "sha256-wEPYfs8ULx0dK6R4hrsXC/r8omxJLc86OhQg39eCo0c="
|
||||
"lastModified": 1581081721,
|
||||
"narHash": "sha256-Axhas6uySMqevQrjdLaIfFQZgyCueBngzUV7CEYhbWI="
|
||||
},
|
||||
"inputs": {
|
||||
"nixpkgs": {
|
||||
"info": {
|
||||
"narHash": "sha256-V4jz8Hbt+mZkXhH+3KmUQcRGETOFd8mVPhgQlS4Lu5E="
|
||||
"lastModified": 1580555706,
|
||||
"narHash": "sha256-ly5Gxl9yZgW2w1F3aDU5bvg34Ct+juUaOg8vue+Mkbo="
|
||||
},
|
||||
"inputs": {},
|
||||
"locked": {
|
||||
"owner": "edolstra",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "dd45a16733f4469a0dded6ad0bf9a662ea39bdea",
|
||||
"rev": "43e283790fbe330b723ac44b584824cf6d85c1ee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -27,7 +28,7 @@
|
|||
"locked": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nix",
|
||||
"rev": "0a4e911cf478d0d38082a8840a5acc8f57d00086",
|
||||
"rev": "d2032edb2f86e955a8a7724a27c0c3225f386500",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -37,14 +38,14 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"info": {
|
||||
"lastModified": 1580555706,
|
||||
"narHash": "sha256-ly5Gxl9yZgW2w1F3aDU5bvg34Ct+juUaOg8vue+Mkbo="
|
||||
"lastModified": 1581348815,
|
||||
"narHash": "sha256-ZYGphR59gsdFhtZYDoeuCtULm8ym/qJSHIslih9b1s8="
|
||||
},
|
||||
"inputs": {},
|
||||
"locked": {
|
||||
"owner": "edolstra",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "43e283790fbe330b723ac44b584824cf6d85c1ee",
|
||||
"rev": "d959778e0934c4c93896d509a65de798909c7cdd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<AggregateConstituents>
|
||||
=head1 TABLE: C<aggregateconstituents>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("AggregateConstituents");
|
||||
__PACKAGE__->table("aggregateconstituents");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -103,8 +103,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-08-15 00:20:01
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:TLNenyPLIWw2gWsOVhplZw
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:bQfQoSstlaFy7zw8i1R+ow
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<BuildInputs>
|
||||
=head1 TABLE: C<buildinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("BuildInputs");
|
||||
__PACKAGE__->table("buildinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -40,6 +40,7 @@ __PACKAGE__->table("BuildInputs");
|
|||
data_type: 'integer'
|
||||
is_auto_increment: 1
|
||||
is_nullable: 0
|
||||
sequence: 'buildinputs_id_seq'
|
||||
|
||||
=head2 build
|
||||
|
||||
|
@ -98,7 +99,12 @@ __PACKAGE__->table("BuildInputs");
|
|||
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
|
||||
{
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
sequence => "buildinputs_id_seq",
|
||||
},
|
||||
"build",
|
||||
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
|
||||
"name",
|
||||
|
@ -176,8 +182,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-08 13:08:15
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:OaJPzRM+8XGsu3eIkqeYEw
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/Fwb8emBsvwrZlEab2X+gQ
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<BuildMetrics>
|
||||
=head1 TABLE: C<buildmetrics>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("BuildMetrics");
|
||||
__PACKAGE__->table("buildmetrics");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -177,8 +177,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-07-30 16:52:20
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:qoPm5/le+sVHigW4Dmum2Q
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Roy7h/K9u7DQOzet4B1sbA
|
||||
|
||||
sub json_hint {
|
||||
return { columns => ['value', 'unit'] };
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<BuildOutputs>
|
||||
=head1 TABLE: C<buildoutputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("BuildOutputs");
|
||||
__PACKAGE__->table("buildoutputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -94,8 +94,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:V8MbzKvZNEaeHBJV67+ZMQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:71R9clwAP6vzDh10EukTaw
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<BuildProducts>
|
||||
=head1 TABLE: C<buildproducts>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("BuildProducts");
|
||||
__PACKAGE__->table("buildproducts");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -143,8 +143,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2016-04-13 14:49:33
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:kONECZn56f7sqfrLviiUOQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:iI0gmKqQxiPBTy5QsM6tpQ
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<BuildStepOutputs>
|
||||
=head1 TABLE: C<buildstepoutputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("BuildStepOutputs");
|
||||
__PACKAGE__->table("buildstepoutputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -119,8 +119,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:A/4v3ugXYbuYoKPlOvC6mg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Y6DpbTM6z4cOGoYIhD3i1A
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<BuildSteps>
|
||||
=head1 TABLE: C<buildsteps>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("BuildSteps");
|
||||
__PACKAGE__->table("buildsteps");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -215,8 +215,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07045 @ 2016-12-07 13:48:19
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3FYkqSUfgWmiqZzmX8J4TA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:AMjHq4g/fSUv/lZuZOljYg
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<Builds>
|
||||
=head1 TABLE: C<builds>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("Builds");
|
||||
__PACKAGE__->table("builds");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -40,6 +40,7 @@ __PACKAGE__->table("Builds");
|
|||
data_type: 'integer'
|
||||
is_auto_increment: 1
|
||||
is_nullable: 0
|
||||
sequence: 'builds_id_seq'
|
||||
|
||||
=head2 finished
|
||||
|
||||
|
@ -63,6 +64,12 @@ __PACKAGE__->table("Builds");
|
|||
is_foreign_key: 1
|
||||
is_nullable: 0
|
||||
|
||||
=head2 jobset_id
|
||||
|
||||
data_type: 'integer'
|
||||
is_foreign_key: 1
|
||||
is_nullable: 1
|
||||
|
||||
=head2 job
|
||||
|
||||
data_type: 'text'
|
||||
|
@ -200,7 +207,12 @@ __PACKAGE__->table("Builds");
|
|||
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
|
||||
{
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
sequence => "builds_id_seq",
|
||||
},
|
||||
"finished",
|
||||
{ data_type => "integer", is_nullable => 0 },
|
||||
"timestamp",
|
||||
|
@ -209,6 +221,8 @@ __PACKAGE__->add_columns(
|
|||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
"jobset",
|
||||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
"jobset_id",
|
||||
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
|
||||
"job",
|
||||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
"nixname",
|
||||
|
@ -451,6 +465,26 @@ Related object: L<Hydra::Schema::Jobsets>
|
|||
__PACKAGE__->belongs_to(
|
||||
"jobset",
|
||||
"Hydra::Schema::Jobsets",
|
||||
{ id => "jobset_id" },
|
||||
{
|
||||
is_deferrable => 0,
|
||||
join_type => "LEFT",
|
||||
on_delete => "CASCADE",
|
||||
on_update => "NO ACTION",
|
||||
},
|
||||
);
|
||||
|
||||
=head2 jobset_project_jobset
|
||||
|
||||
Type: belongs_to
|
||||
|
||||
Related object: L<Hydra::Schema::Jobsets>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"jobset_project_jobset",
|
||||
"Hydra::Schema::Jobsets",
|
||||
{ name => "jobset", project => "project" },
|
||||
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "CASCADE" },
|
||||
);
|
||||
|
@ -544,8 +578,8 @@ __PACKAGE__->many_to_many(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-08-19 16:12:37
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VjYbAQwv4THW2VfWQ5ajYQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:32:28
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RvrINOAowDcde8Nd9VD6rQ
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"dependents",
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedBazaarInputs>
|
||||
=head1 TABLE: C<cachedbazaarinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedBazaarInputs");
|
||||
__PACKAGE__->table("cachedbazaarinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -83,8 +83,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("uri", "revision");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zvun8uhxwrr7B8EsqBoCjA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:X8L4C57lMOctdqOKSmfA/g
|
||||
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedCVSInputs>
|
||||
=head1 TABLE: C<cachedcvsinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedCVSInputs");
|
||||
__PACKAGE__->table("cachedcvsinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -99,8 +99,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("uri", "module", "sha256hash");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Vi1qzjW52Lnsl0JSmGzy0w
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:6eQ+i/th+oVZNRiDPd2luA
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedDarcsInputs>
|
||||
=head1 TABLE: C<cacheddarcsinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedDarcsInputs");
|
||||
__PACKAGE__->table("cacheddarcsinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -90,8 +90,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("uri", "revision");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-09-20 11:08:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Yl1slt3SAizijgu0KUTn0A
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Buwq42sBXQVfYUy01WMyYw
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedGitInputs>
|
||||
=head1 TABLE: C<cachedgitinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedGitInputs");
|
||||
__PACKAGE__->table("cachedgitinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -92,7 +92,7 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("uri", "branch", "revision");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:I4hI02FKRMkw76WV/KBocA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0sdK9uQZpx869oqS5thRLw
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedHgInputs>
|
||||
=head1 TABLE: C<cachedhginputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedHgInputs");
|
||||
__PACKAGE__->table("cachedhginputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -92,8 +92,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("uri", "branch", "revision");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:qS/eiiZXmpc7KpTHdtaT7g
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dYfjQ0SJG/mBrsZemAW3zw
|
||||
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedPathInputs>
|
||||
=head1 TABLE: C<cachedpathinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedPathInputs");
|
||||
__PACKAGE__->table("cachedpathinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -90,7 +90,7 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("srcpath", "sha256hash");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:28rja0vR1glJJ15hzVfjsQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oV7tbWLNEMC8byKf9UnAlw
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<CachedSubversionInputs>
|
||||
=head1 TABLE: C<cachedsubversioninputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("CachedSubversionInputs");
|
||||
__PACKAGE__->table("cachedsubversioninputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -83,7 +83,7 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("uri", "revision");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3qXfnvkOVj25W94bfhQ65w
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:VGt/0HG84eNZr9OIA8jzow
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<FailedPaths>
|
||||
=head1 TABLE: C<failedpaths>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("FailedPaths");
|
||||
__PACKAGE__->table("failedpaths");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -57,8 +57,8 @@ __PACKAGE__->add_columns("path", { data_type => "text", is_nullable => 0 });
|
|||
__PACKAGE__->set_primary_key("path");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2015-06-10 14:48:16
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:WFgjfjH+szE6Ntcicmaflw
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:jr3XiGO4lWAzqfATbsMwFw
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<Jobs>
|
||||
=head1 TABLE: C<jobs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("Jobs");
|
||||
__PACKAGE__->table("jobs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -47,6 +47,12 @@ __PACKAGE__->table("Jobs");
|
|||
is_foreign_key: 1
|
||||
is_nullable: 0
|
||||
|
||||
=head2 jobset_id
|
||||
|
||||
data_type: 'integer'
|
||||
is_foreign_key: 1
|
||||
is_nullable: 1
|
||||
|
||||
=head2 name
|
||||
|
||||
data_type: 'text'
|
||||
|
@ -59,6 +65,8 @@ __PACKAGE__->add_columns(
|
|||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
"jobset",
|
||||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
"jobset_id",
|
||||
{ data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
|
||||
"name",
|
||||
{ data_type => "text", is_nullable => 0 },
|
||||
);
|
||||
|
@ -130,6 +138,26 @@ Related object: L<Hydra::Schema::Jobsets>
|
|||
__PACKAGE__->belongs_to(
|
||||
"jobset",
|
||||
"Hydra::Schema::Jobsets",
|
||||
{ id => "jobset_id" },
|
||||
{
|
||||
is_deferrable => 0,
|
||||
join_type => "LEFT",
|
||||
on_delete => "CASCADE",
|
||||
on_update => "NO ACTION",
|
||||
},
|
||||
);
|
||||
|
||||
=head2 jobset_project_jobset
|
||||
|
||||
Type: belongs_to
|
||||
|
||||
Related object: L<Hydra::Schema::Jobsets>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"jobset_project_jobset",
|
||||
"Hydra::Schema::Jobsets",
|
||||
{ name => "jobset", project => "project" },
|
||||
{ is_deferrable => 0, on_delete => "CASCADE", on_update => "CASCADE" },
|
||||
);
|
||||
|
@ -169,7 +197,7 @@ __PACKAGE__->has_many(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-07-30 16:52:20
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:vDAo9bzLca+QWfhOb9OLMg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:30:58
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dFusVjxb423gIEoadAw9sw
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<JobsetEvalInputs>
|
||||
=head1 TABLE: C<jobsetevalinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("JobsetEvalInputs");
|
||||
__PACKAGE__->table("jobsetevalinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -166,8 +166,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1Dp8B58leBLh4GK0GPw2zg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:/cFQGBLhvpmBO1UJztgIAg
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<JobsetEvalMembers>
|
||||
=head1 TABLE: C<jobsetevalmembers>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("JobsetEvalMembers");
|
||||
__PACKAGE__->table("jobsetevalmembers");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -110,8 +110,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ccPNQe/QnSjTAC3uGWe8Ng
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:T+dJFh/sDO8WsasqYVLRSQ
|
||||
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<JobsetEvals>
|
||||
=head1 TABLE: C<jobsetevals>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("JobsetEvals");
|
||||
__PACKAGE__->table("jobsetevals");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -40,6 +40,7 @@ __PACKAGE__->table("JobsetEvals");
|
|||
data_type: 'integer'
|
||||
is_auto_increment: 1
|
||||
is_nullable: 0
|
||||
sequence: 'jobsetevals_id_seq'
|
||||
|
||||
=head2 project
|
||||
|
||||
|
@ -97,7 +98,12 @@ __PACKAGE__->table("JobsetEvals");
|
|||
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
|
||||
{
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
sequence => "jobsetevals_id_seq",
|
||||
},
|
||||
"project",
|
||||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
"jobset",
|
||||
|
@ -195,8 +201,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-05-11 00:16:10
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:XwlJFCJiS0LHsLg2fFqfUg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-09 15:21:11
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Ar6GRni8AcAQmuZyg6tFKw
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"buildIds",
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<JobsetInputAlts>
|
||||
=head1 TABLE: C<jobsetinputalts>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("JobsetInputAlts");
|
||||
__PACKAGE__->table("jobsetinputalts");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -121,7 +121,7 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UUO37lIuEYm0GiR92m/fyA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:nh8dQDL9FtgzXcwjDufDMQ
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<JobsetInputs>
|
||||
=head1 TABLE: C<jobsetinputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("JobsetInputs");
|
||||
__PACKAGE__->table("jobsetinputs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -130,28 +130,9 @@ __PACKAGE__->has_many(
|
|||
undef,
|
||||
);
|
||||
|
||||
=head2 jobsets
|
||||
|
||||
Type: has_many
|
||||
|
||||
Related object: L<Hydra::Schema::Jobsets>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"jobsets",
|
||||
"Hydra::Schema::Jobsets",
|
||||
{
|
||||
"foreign.name" => "self.jobset",
|
||||
"foreign.nixexprinput" => "self.name",
|
||||
"foreign.project" => "self.project",
|
||||
},
|
||||
undef,
|
||||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-08 13:06:15
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:+mZZqLjQNwblb/EWW1alLQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:5uKwEhDXso4IR1TFmwRxiA
|
||||
|
||||
my %hint = (
|
||||
relations => {
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<JobsetRenames>
|
||||
=head1 TABLE: C<jobsetrenames>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("JobsetRenames");
|
||||
__PACKAGE__->table("jobsetrenames");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -110,8 +110,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2014-04-23 23:13:51
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SBpKWF9swFc9T1Uc0VFlgA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:eOQbJ2O/p0G1317m3IC/KA
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,20 +27,26 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<Jobsets>
|
||||
=head1 TABLE: C<jobsets>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("Jobsets");
|
||||
__PACKAGE__->table("jobsets");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
=head2 name
|
||||
|
||||
data_type: 'text'
|
||||
is_foreign_key: 1
|
||||
is_nullable: 0
|
||||
|
||||
=head2 id
|
||||
|
||||
data_type: 'integer'
|
||||
is_auto_increment: 1
|
||||
is_nullable: 0
|
||||
sequence: 'jobsets_id_seq'
|
||||
|
||||
=head2 project
|
||||
|
||||
data_type: 'text'
|
||||
|
@ -55,7 +61,6 @@ __PACKAGE__->table("Jobsets");
|
|||
=head2 nixexprinput
|
||||
|
||||
data_type: 'text'
|
||||
is_foreign_key: 1
|
||||
is_nullable: 1
|
||||
|
||||
=head2 nixexprpath
|
||||
|
@ -154,13 +159,20 @@ __PACKAGE__->table("Jobsets");
|
|||
|
||||
__PACKAGE__->add_columns(
|
||||
"name",
|
||||
{ data_type => "text", is_foreign_key => 1, is_nullable => 0 },
|
||||
{ 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_foreign_key => 1, is_nullable => 1 },
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"nixexprpath",
|
||||
{ data_type => "text", is_nullable => 1 },
|
||||
"errormsg",
|
||||
|
@ -211,6 +223,20 @@ __PACKAGE__->add_columns(
|
|||
|
||||
__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
|
||||
|
@ -231,7 +257,7 @@ __PACKAGE__->has_many(
|
|||
undef,
|
||||
);
|
||||
|
||||
=head2 builds
|
||||
=head2 builds_jobset_ids
|
||||
|
||||
Type: has_many
|
||||
|
||||
|
@ -240,7 +266,22 @@ Related object: L<Hydra::Schema::Builds>
|
|||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"builds",
|
||||
"builds_jobset_ids",
|
||||
"Hydra::Schema::Builds",
|
||||
{ "foreign.jobset_id" => "self.id" },
|
||||
undef,
|
||||
);
|
||||
|
||||
=head2 builds_project_jobsets
|
||||
|
||||
Type: has_many
|
||||
|
||||
Related object: L<Hydra::Schema::Builds>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"builds_project_jobsets",
|
||||
"Hydra::Schema::Builds",
|
||||
{
|
||||
"foreign.jobset" => "self.name",
|
||||
|
@ -249,7 +290,7 @@ __PACKAGE__->has_many(
|
|||
undef,
|
||||
);
|
||||
|
||||
=head2 jobs
|
||||
=head2 jobs_jobset_ids
|
||||
|
||||
Type: has_many
|
||||
|
||||
|
@ -258,7 +299,22 @@ Related object: L<Hydra::Schema::Jobs>
|
|||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"jobs",
|
||||
"jobs_jobset_ids",
|
||||
"Hydra::Schema::Jobs",
|
||||
{ "foreign.jobset_id" => "self.id" },
|
||||
undef,
|
||||
);
|
||||
|
||||
=head2 jobs_project_jobsets
|
||||
|
||||
Type: has_many
|
||||
|
||||
Related object: L<Hydra::Schema::Jobs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"jobs_project_jobsets",
|
||||
"Hydra::Schema::Jobs",
|
||||
{
|
||||
"foreign.jobset" => "self.name",
|
||||
|
@ -285,26 +341,6 @@ __PACKAGE__->has_many(
|
|||
undef,
|
||||
);
|
||||
|
||||
=head2 jobsetinput
|
||||
|
||||
Type: belongs_to
|
||||
|
||||
Related object: L<Hydra::Schema::JobsetInputs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"jobsetinput",
|
||||
"Hydra::Schema::JobsetInputs",
|
||||
{ jobset => "name", name => "nixexprinput", project => "project" },
|
||||
{
|
||||
is_deferrable => 0,
|
||||
join_type => "LEFT",
|
||||
on_delete => "NO ACTION",
|
||||
on_update => "NO ACTION",
|
||||
},
|
||||
);
|
||||
|
||||
=head2 jobsetinputs
|
||||
|
||||
Type: has_many
|
||||
|
@ -372,8 +408,49 @@ __PACKAGE__->has_many(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-05-11 00:03:52
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:UVG1D59bXaQ1TUEF237tXQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-09 15:32:17
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:P8+t7rgpOqkGwRdM2b+3Bw
|
||||
|
||||
|
||||
=head2 builds
|
||||
|
||||
Type: has_many
|
||||
|
||||
Related object: L<Hydra::Schema::Builds>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"builds",
|
||||
"Hydra::Schema::Builds",
|
||||
{
|
||||
"foreign.jobset" => "self.name",
|
||||
"foreign.project" => "self.project",
|
||||
},
|
||||
undef,
|
||||
);
|
||||
|
||||
=head2 jobs
|
||||
|
||||
Type: has_many
|
||||
|
||||
Related object: L<Hydra::Schema::Jobs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"jobs",
|
||||
"Hydra::Schema::Jobs",
|
||||
{
|
||||
"foreign.jobset" => "self.name",
|
||||
"foreign.project" => "self.project",
|
||||
},
|
||||
undef,
|
||||
);
|
||||
|
||||
__PACKAGE__->add_column(
|
||||
"+id" => { retrieve_on_insert => 1 }
|
||||
);
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<NewsItems>
|
||||
=head1 TABLE: C<newsitems>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("NewsItems");
|
||||
__PACKAGE__->table("newsitems");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -40,6 +40,7 @@ __PACKAGE__->table("NewsItems");
|
|||
data_type: 'integer'
|
||||
is_auto_increment: 1
|
||||
is_nullable: 0
|
||||
sequence: 'newsitems_id_seq'
|
||||
|
||||
=head2 contents
|
||||
|
||||
|
@ -61,7 +62,12 @@ __PACKAGE__->table("NewsItems");
|
|||
|
||||
__PACKAGE__->add_columns(
|
||||
"id",
|
||||
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
|
||||
{
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
sequence => "newsitems_id_seq",
|
||||
},
|
||||
"contents",
|
||||
{ data_type => "text", is_nullable => 0 },
|
||||
"createtime",
|
||||
|
@ -100,7 +106,7 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3CRNsvd+YnZp9c80tuZREQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:r6vX8VG/+NQraIVKFgHzxQ
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<NrBuilds>
|
||||
=head1 TABLE: C<nrbuilds>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("NrBuilds");
|
||||
__PACKAGE__->table("nrbuilds");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -67,8 +67,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("what");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-08-12 17:59:18
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:CK8eJGC803nGj0wnete9xg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:qv1I8Wu7KXHAs+pyBn2ofA
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<ProjectMembers>
|
||||
=head1 TABLE: C<projectmembers>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("ProjectMembers");
|
||||
__PACKAGE__->table("projectmembers");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -103,8 +103,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:imPoiaitrTbX0vVNlF6dPA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:e/hYmoNmcEUoGhRqtwdyQw
|
||||
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<Projects>
|
||||
=head1 TABLE: C<projects>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("Projects");
|
||||
__PACKAGE__->table("projects");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -303,8 +303,8 @@ Composing rels: L</projectmembers> -> username
|
|||
__PACKAGE__->many_to_many("usernames", "projectmembers", "username");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2016-03-11 10:39:17
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1ats3brIVhRTWLToIYSoaQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:pcF/8351zyo9VL6N5eimdQ
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<ReleaseMembers>
|
||||
=head1 TABLE: C<releasemembers>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("ReleaseMembers");
|
||||
__PACKAGE__->table("releasemembers");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -135,7 +135,7 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:7M7WPlGQT6rNHKJ+82/KSA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:k4z2YeB4gRAeAP6hmR93sQ
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<Releases>
|
||||
=head1 TABLE: C<releases>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("Releases");
|
||||
__PACKAGE__->table("releases");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -119,7 +119,7 @@ __PACKAGE__->has_many(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:qISBiwvboB8dIdinaE45mg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:b4M/tHOhsy234tgTf+wqjQ
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<SchemaVersion>
|
||||
=head1 TABLE: C<schemaversion>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("SchemaVersion");
|
||||
__PACKAGE__->table("schemaversion");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -45,8 +45,8 @@ __PACKAGE__->table("SchemaVersion");
|
|||
__PACKAGE__->add_columns("version", { data_type => "integer", is_nullable => 0 });
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:08/7gbEQp1TqBiWFJXVY0w
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:2wy4FsRYVVo2RTCWXcmgvg
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<StarredJobs>
|
||||
=head1 TABLE: C<starredjobs>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("StarredJobs");
|
||||
__PACKAGE__->table("starredjobs");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -153,8 +153,8 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-14 15:46:29
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:naj5aKWuw8hLE6klmvW9Eg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fw4FfzmOhzDk0ZoSuNr2ww
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<SystemStatus>
|
||||
=head1 TABLE: C<systemstatus>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("SystemStatus");
|
||||
__PACKAGE__->table("systemstatus");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -67,8 +67,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("what");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2015-07-30 16:01:22
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:JCYi4+HwM22iucdFkhBjMg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:GeXpTVktMXjHENa/P3qOxw
|
||||
|
||||
|
||||
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<SystemTypes>
|
||||
=head1 TABLE: C<systemtypes>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("SystemTypes");
|
||||
__PACKAGE__->table("systemtypes");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -68,7 +68,7 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("system");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:8cC34cEw9T3+x+7uRs4KHQ
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:fYeKQQSS5J8rjO3t+Hbz0g
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<UriRevMapper>
|
||||
=head1 TABLE: C<urirevmapper>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("UriRevMapper");
|
||||
__PACKAGE__->table("urirevmapper");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -67,8 +67,8 @@ __PACKAGE__->add_columns(
|
|||
__PACKAGE__->set_primary_key("baseuri");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:G2GAF/Rb7cRkRegH94LwIA
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:FOg2/BVJK3yg8MAYMrqZOQ
|
||||
|
||||
|
||||
# You can replace this text with custom content, and it will be preserved on regeneration
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<UserRoles>
|
||||
=head1 TABLE: C<userroles>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("UserRoles");
|
||||
__PACKAGE__->table("userroles");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -87,7 +87,7 @@ __PACKAGE__->belongs_to(
|
|||
);
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-06-13 01:54:50
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:aS+ivlFpndqIv8U578zz9A
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:LUw2PDFvUHs0E0UZ3oHFxw
|
||||
|
||||
1;
|
||||
|
|
|
@ -27,11 +27,11 @@ use base 'DBIx::Class::Core';
|
|||
|
||||
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||
|
||||
=head1 TABLE: C<Users>
|
||||
=head1 TABLE: C<users>
|
||||
|
||||
=cut
|
||||
|
||||
__PACKAGE__->table("Users");
|
||||
__PACKAGE__->table("users");
|
||||
|
||||
=head1 ACCESSORS
|
||||
|
||||
|
@ -192,8 +192,8 @@ Composing rels: L</projectmembers> -> project
|
|||
__PACKAGE__->many_to_many("projects", "projectmembers", "project");
|
||||
|
||||
|
||||
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2016-05-27 11:32:14
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Az1+V+ztJoWUt50NLQR3xg
|
||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-02-06 12:22:36
|
||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:4/WZ95asbnGmK+nEHb4sLQ
|
||||
|
||||
my %hint = (
|
||||
columns => [
|
||||
|
|
|
@ -3,6 +3,7 @@ EXTRA_DIST = \
|
|||
hydra-eval-guile-jobs.in
|
||||
|
||||
distributable_scripts = \
|
||||
hydra-backfill-ids \
|
||||
hydra-init \
|
||||
hydra-eval-jobset \
|
||||
hydra-server \
|
||||
|
|
164
src/script/hydra-backfill-ids
Executable file
164
src/script/hydra-backfill-ids
Executable file
|
@ -0,0 +1,164 @@
|
|||
#! /usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use utf8;
|
||||
use Hydra::Model::DB;
|
||||
|
||||
STDOUT->autoflush();
|
||||
STDERR->autoflush(1);
|
||||
binmode STDERR, ":encoding(utf8)";
|
||||
|
||||
my $db = Hydra::Model::DB->new();
|
||||
my $vacuum = $db->storage->dbh->prepare("VACUUM;");
|
||||
|
||||
my $dryRun = defined $ENV{'HYDRA_DRY_RUN'};
|
||||
|
||||
my $batchSize = 10000;
|
||||
my $iterationsPerVacuum = 500;
|
||||
|
||||
sub backfillJobsJobsetId {
|
||||
my ($skipLocked) = @_;
|
||||
my $logPrefix;
|
||||
|
||||
if ($skipLocked) {
|
||||
$logPrefix = "(pass 1/2)";
|
||||
} else {
|
||||
$logPrefix = "(pass 2/2)";
|
||||
}
|
||||
|
||||
print STDERR "$logPrefix Backfilling Jobs records where jobset_id is NULL...\n";
|
||||
|
||||
my $totalToGoSth = $db->storage->dbh->prepare(<<QUERY);
|
||||
SELECT COUNT(*) FROM jobs WHERE jobset_id IS NULL
|
||||
QUERY
|
||||
|
||||
$totalToGoSth->execute();
|
||||
my ($totalToGo) = $totalToGoSth->fetchrow_array;
|
||||
|
||||
my $skipLockedStmt = $skipLocked ? "FOR UPDATE SKIP LOCKED" : "";
|
||||
my $update10kJobs = $db->storage->dbh->prepare(<<QUERY);
|
||||
UPDATE jobs
|
||||
SET jobset_id = (
|
||||
SELECT jobsets.id
|
||||
FROM jobsets
|
||||
WHERE jobsets.name = jobs.jobset
|
||||
AND jobsets.project = jobs.project
|
||||
)
|
||||
WHERE (jobs.project, jobs.jobset, jobs.name) in (
|
||||
SELECT jobsprime.project, jobsprime.jobset, jobsprime.name
|
||||
FROM jobs jobsprime
|
||||
WHERE jobsprime.jobset_id IS NULL
|
||||
$skipLockedStmt
|
||||
LIMIT ?
|
||||
);
|
||||
QUERY
|
||||
|
||||
print STDERR "$logPrefix Total Jobs records without a jobset_id: $totalToGo\n";
|
||||
|
||||
my $iteration = 0;
|
||||
my $affected;
|
||||
do {
|
||||
$iteration++;
|
||||
$affected = $update10kJobs->execute($batchSize);
|
||||
print STDERR "$logPrefix (batch #$iteration; $totalToGo remaining) Jobs.jobset_id: affected $affected rows...\n";
|
||||
$totalToGo -= $affected;
|
||||
|
||||
if ($iteration % $iterationsPerVacuum == 0) {
|
||||
print STDERR "$logPrefix (batch #$iteration) Vacuuming...\n";
|
||||
$vacuum->execute();
|
||||
}
|
||||
} while ($affected > 0);
|
||||
|
||||
|
||||
if ($skipLocked) {
|
||||
backfillJobsJobsetId(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub backfillBuildsJobsetId {
|
||||
my ($skipLocked) = @_;
|
||||
my $logPrefix;
|
||||
|
||||
if ($skipLocked) {
|
||||
$logPrefix = "(pass 1/2)";
|
||||
print STDERR "$logPrefix Backfilling unlocked Builds records where jobset_id is NULL...\n";
|
||||
} else {
|
||||
$logPrefix = "(pass 2/2)";
|
||||
print STDERR "$logPrefix Backfilling all Builds records where jobset_id is NULL...\n";
|
||||
}
|
||||
|
||||
my $skipLockedStmt = $skipLocked ? "FOR UPDATE SKIP LOCKED" : "";
|
||||
my $update10kBuilds = $db->storage->dbh->prepare(<<"QUERY");
|
||||
WITH updateprogress AS (
|
||||
UPDATE builds
|
||||
SET jobset_id = (
|
||||
SELECT jobsets.id
|
||||
FROM jobsets
|
||||
WHERE jobsets.name = builds.jobset
|
||||
AND jobsets.project = builds.project
|
||||
)
|
||||
WHERE builds.id in (
|
||||
SELECT buildprime.id
|
||||
FROM builds buildprime
|
||||
WHERE buildprime.jobset_id IS NULL
|
||||
AND buildprime.id >= ?
|
||||
ORDER BY buildprime.id
|
||||
$skipLockedStmt
|
||||
LIMIT ?
|
||||
)
|
||||
RETURNING id
|
||||
)
|
||||
SELECT
|
||||
count(*) AS affected,
|
||||
max(updateprogress.id) AS highest_id
|
||||
FROM updateprogress;
|
||||
|
||||
QUERY
|
||||
|
||||
my $lowestNullIdSth = $db->storage->dbh->prepare(<<QUERY);
|
||||
SELECT id FROM builds WHERE jobset_id IS NULL ORDER BY id LIMIT 1
|
||||
QUERY
|
||||
$lowestNullIdSth->execute();
|
||||
my ($highestId) = $lowestNullIdSth->fetchrow_array;
|
||||
|
||||
my $totalToGoSth = $db->storage->dbh->prepare(<<QUERY);
|
||||
SELECT COUNT(*) FROM builds WHERE jobset_id IS NULL AND id >= ?
|
||||
QUERY
|
||||
$totalToGoSth->execute($highestId);
|
||||
my ($totalToGo) = $totalToGoSth->fetchrow_array;
|
||||
|
||||
print STDERR "$logPrefix Total Builds records without a jobset_id: $totalToGo, starting at $highestId\n";
|
||||
|
||||
my $iteration = 0;
|
||||
my $affected;
|
||||
do {
|
||||
my $previousHighId = $highestId;
|
||||
$iteration++;
|
||||
$update10kBuilds->execute($highestId, $batchSize);
|
||||
($affected, $highestId) = $update10kBuilds->fetchrow_array;
|
||||
|
||||
print STDERR "$logPrefix (batch #$iteration; $totalToGo remaining) Builds.jobset_id: affected $affected rows; max ID: $previousHighId -> $highestId\n";
|
||||
$totalToGo -= $affected;
|
||||
|
||||
if ($iteration % $iterationsPerVacuum == 0) {
|
||||
print STDERR "$logPrefix (batch #$iteration) Vacuuming...\n";
|
||||
$vacuum->execute();
|
||||
}
|
||||
} while ($affected > 0);
|
||||
|
||||
if ($skipLocked) {
|
||||
backfillBuildsJobsetId(0);
|
||||
}
|
||||
}
|
||||
|
||||
die "syntax: $0\n" unless @ARGV == 0;
|
||||
|
||||
print STDERR "Beginning with a VACUUM\n";
|
||||
$vacuum->execute();
|
||||
|
||||
backfillJobsJobsetId(1);
|
||||
backfillBuildsJobsetId(1);
|
||||
|
||||
print STDERR "Ending with a VACUUM\n";
|
||||
$vacuum->execute();
|
|
@ -426,7 +426,12 @@ sub checkBuild {
|
|||
my $build;
|
||||
|
||||
txn_do($db, sub {
|
||||
my $job = $jobset->jobs->update_or_create({ name => $jobName });
|
||||
my $job = $jobset->jobs->update_or_create({
|
||||
name => $jobName,
|
||||
jobset_id => $jobset->id,
|
||||
project => $jobset->project,
|
||||
jobset => $jobset->name,
|
||||
});
|
||||
|
||||
# Don't add a build that has already been scheduled for this
|
||||
# job, or has been built but is still a "current" build for
|
||||
|
@ -473,6 +478,9 @@ sub checkBuild {
|
|||
# Add the build to the database.
|
||||
$build = $job->builds->create(
|
||||
{ timestamp => $time
|
||||
, project => $jobset->project
|
||||
, jobset => $jobset->name
|
||||
, jobset_id => $jobset->id
|
||||
, description => null($buildInfo->{description})
|
||||
, license => null($buildInfo->{license})
|
||||
, homepage => null($buildInfo->{homepage})
|
||||
|
|
|
@ -44,6 +44,17 @@ my @versions = $db->resultset('SchemaVersion')->all;
|
|||
die "couldn't get Hydra schema version!" if scalar @versions != 1;
|
||||
my $schemaVersion = $versions[0]->version;
|
||||
|
||||
if ($schemaVersion <= 60) {
|
||||
print STDERR <<QUOTE;
|
||||
WARNING: Schema version 62 and 63 make nullable jobset_id fields on
|
||||
Builds and Jobs non-nullable. On big Hydra servers, this
|
||||
migration will take many hours. Because of that, the
|
||||
migration is not automatic, and must be performed manually.
|
||||
|
||||
To backfill these IDs, run: hydra-fill-ids
|
||||
QUOTE
|
||||
}
|
||||
|
||||
for (my $n = $schemaVersion; $n < $maxSchemaVersion; $n++) {
|
||||
my $m = $n + 1;
|
||||
print STDERR "upgrading Hydra schema from version $n to $m\n";
|
||||
|
|
|
@ -2,7 +2,6 @@ sqldir = $(libexecdir)/hydra/sql
|
|||
nobase_dist_sql_DATA = \
|
||||
hydra-postgresql.sql \
|
||||
hydra.sql \
|
||||
hydra-sqlite.sql \
|
||||
test.sql \
|
||||
upgrade-*.sql \
|
||||
update-dbix.pl
|
||||
|
@ -10,10 +9,5 @@ nobase_dist_sql_DATA = \
|
|||
hydra-postgresql.sql: hydra.sql
|
||||
cpp -P -E -traditional-cpp -DPOSTGRESQL hydra.sql > $@ || rm -f $@
|
||||
|
||||
hydra-sqlite.sql: hydra.sql
|
||||
cpp -P -E -traditional-cpp -DSQLITE hydra.sql > $@ || rm -f $@
|
||||
|
||||
update-dbix: hydra-sqlite.sql
|
||||
rm -f tmp.sqlite
|
||||
sqlite3 tmp.sqlite < hydra-sqlite.sql
|
||||
perl -I ../lib -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:../lib update-dbix.pl
|
||||
update-dbix: hydra-postgresql.sql
|
||||
./update-dbix-harness.sh
|
||||
|
|
|
@ -52,6 +52,7 @@ create table ProjectMembers (
|
|||
-- describing build jobs.
|
||||
create table Jobsets (
|
||||
name text not null,
|
||||
id serial not null,
|
||||
project text not null,
|
||||
description text,
|
||||
nixExprInput text, -- name of the jobsetInput containing the Nix or Guix expression
|
||||
|
@ -76,7 +77,8 @@ create table Jobsets (
|
|||
check ((type = 0) = (nixExprInput is not null and nixExprPath is not null)),
|
||||
check ((type = 1) = (flake is not null)),
|
||||
primary key (project, name),
|
||||
foreign key (project) references Projects(name) on delete cascade on update cascade
|
||||
foreign key (project) references Projects(name) on delete cascade on update cascade,
|
||||
constraint Jobsets_id_unique UNIQUE(id)
|
||||
#ifdef SQLITE
|
||||
,
|
||||
foreign key (project, name, nixExprInput) references JobsetInputs(project, jobset, name)
|
||||
|
@ -144,9 +146,11 @@ create table JobsetInputAlts (
|
|||
create table Jobs (
|
||||
project text not null,
|
||||
jobset text not null,
|
||||
jobset_id integer null,
|
||||
name text not null,
|
||||
|
||||
primary key (project, jobset, name),
|
||||
foreign key (jobset_id) references Jobsets(id) on delete cascade,
|
||||
foreign key (project) references Projects(name) on delete cascade on update cascade,
|
||||
foreign key (project, jobset) references Jobsets(project, name) on delete cascade on update cascade
|
||||
);
|
||||
|
@ -166,6 +170,7 @@ create table Builds (
|
|||
-- Info about the inputs.
|
||||
project text not null,
|
||||
jobset text not null,
|
||||
jobset_id integer null,
|
||||
job text not null,
|
||||
|
||||
-- Info about the build result.
|
||||
|
@ -232,6 +237,7 @@ create table Builds (
|
|||
check (finished = 0 or (stoptime is not null and stoptime != 0)),
|
||||
check (finished = 0 or (starttime is not null and starttime != 0)),
|
||||
|
||||
foreign key (jobset_id) references Jobsets(id) on delete cascade,
|
||||
foreign key (project) references Projects(name) on update cascade,
|
||||
foreign key (project, jobset) references Jobsets(project, name) on update cascade,
|
||||
foreign key (project, jobset, job) references Jobs(project, jobset, name) on update cascade
|
||||
|
|
40
src/sql/update-dbix-harness.sh
Executable file
40
src/sql/update-dbix-harness.sh
Executable file
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
readonly scratch=$(mktemp -d -t tmp.XXXXXXXXXX)
|
||||
|
||||
readonly socket=$scratch/socket
|
||||
readonly data=$scratch/data
|
||||
readonly dbname=hydra-update-dbix
|
||||
|
||||
function finish {
|
||||
set +e
|
||||
pg_ctl -D "$data" \
|
||||
-o "-F -h '' -k \"$socket\"" \
|
||||
-w stop -m immediate
|
||||
|
||||
if [ -f "$data/postmaster.pid" ]; then
|
||||
pg_ctl -D "$data" \
|
||||
-o "-F -h '' -k \"$socket\"" \
|
||||
-w kill TERM "$(cat "$data/postmaster.pid")"
|
||||
fi
|
||||
|
||||
rm -rf "$scratch"
|
||||
}
|
||||
trap finish EXIT
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p "$socket"
|
||||
initdb -D "$data"
|
||||
|
||||
pg_ctl -D "$data" \
|
||||
-o "-F -h '' -k \"${socket}\"" \
|
||||
-w start
|
||||
|
||||
createdb -h "$socket" "$dbname"
|
||||
|
||||
psql -h "$socket" "$dbname" -f ./hydra-postgresql.sql
|
||||
|
||||
perl -I ../lib \
|
||||
-MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:../lib \
|
||||
update-dbix.pl "dbi:Pg:dbname=$dbname;host=$socket"
|
|
@ -1,8 +1,49 @@
|
|||
use Cwd;
|
||||
|
||||
die "$0: dbi connection string required \n" if scalar @ARGV != 1;
|
||||
|
||||
make_schema_at("Hydra::Schema", {
|
||||
naming => { ALL => "v5" },
|
||||
relationships => 1,
|
||||
moniker_map => sub { return "$_"; },
|
||||
moniker_map => {
|
||||
"aggregateconstituents" => "AggregateConstituents",
|
||||
"buildinputs" => "BuildInputs",
|
||||
"buildmetrics" => "BuildMetrics",
|
||||
"buildoutputs" => "BuildOutputs",
|
||||
"buildproducts" => "BuildProducts",
|
||||
"builds" => "Builds",
|
||||
"buildstepoutputs" => "BuildStepOutputs",
|
||||
"buildsteps" => "BuildSteps",
|
||||
"cachedbazaarinputs" => "CachedBazaarInputs",
|
||||
"cachedcvsinputs" => "CachedCVSInputs",
|
||||
"cacheddarcsinputs" => "CachedDarcsInputs",
|
||||
"cachedgitinputs" => "CachedGitInputs",
|
||||
"cachedhginputs" => "CachedHgInputs",
|
||||
"cachedpathinputs" => "CachedPathInputs",
|
||||
"cachedsubversioninputs" => "CachedSubversionInputs",
|
||||
"failedpaths" => "FailedPaths",
|
||||
"jobs" => "Jobs",
|
||||
"jobsetevalinputs" => "JobsetEvalInputs",
|
||||
"jobsetevalmembers" => "JobsetEvalMembers",
|
||||
"jobsetevals" => "JobsetEvals",
|
||||
"jobsetinputalts" => "JobsetInputAlts",
|
||||
"jobsetinputs" => "JobsetInputs",
|
||||
"jobsetrenames" => "JobsetRenames",
|
||||
"jobsets" => "Jobsets",
|
||||
"newsitems" => "NewsItems",
|
||||
"nrbuilds" => "NrBuilds",
|
||||
"projectmembers" => "ProjectMembers",
|
||||
"projects" => "Projects",
|
||||
"releasemembers" => "ReleaseMembers",
|
||||
"releases" => "Releases",
|
||||
"schemaversion" => "SchemaVersion",
|
||||
"starredjobs" => "StarredJobs",
|
||||
"systemstatus" => "SystemStatus",
|
||||
"systemtypes" => "SystemTypes",
|
||||
"urirevmapper" => "UriRevMapper",
|
||||
"userroles" => "UserRoles",
|
||||
"users" => "Users",
|
||||
} , #sub { return "$_"; },
|
||||
components => [ "+Hydra::Component::ToJSON" ],
|
||||
rel_name_map => { buildsteps_builds => "buildsteps" }
|
||||
}, ["dbi:SQLite:tmp.sqlite"]);
|
||||
|
||||
}, [$ARGV[0]]);
|
||||
|
|
4
src/sql/upgrade-59.sql
Normal file
4
src/sql/upgrade-59.sql
Normal file
|
@ -0,0 +1,4 @@
|
|||
-- will automatically add unique IDs to Jobsets.
|
||||
ALTER TABLE Jobsets
|
||||
ADD COLUMN id SERIAL NOT NULL,
|
||||
ADD CONSTRAINT Jobsets_id_unique UNIQUE (id);
|
10
src/sql/upgrade-60.sql
Normal file
10
src/sql/upgrade-60.sql
Normal file
|
@ -0,0 +1,10 @@
|
|||
-- Add the jobset_id columns to the Jobs table. This will go
|
||||
-- quickly, since the field is nullable. Note this is just part one of
|
||||
-- this migration. Future steps involve a piecemeal backfilling, and
|
||||
-- then making the column non-null.
|
||||
|
||||
ALTER TABLE Jobs
|
||||
ADD COLUMN jobset_id integer NULL,
|
||||
ADD FOREIGN KEY (jobset_id)
|
||||
REFERENCES Jobsets(id)
|
||||
ON DELETE CASCADE;
|
10
src/sql/upgrade-61.sql
Normal file
10
src/sql/upgrade-61.sql
Normal file
|
@ -0,0 +1,10 @@
|
|||
-- Add the jobset_id columns to the Builds table. This will go
|
||||
-- quickly, since the field is nullable. Note this is just part one of
|
||||
-- this migration. Future steps involve a piecemeal backfilling, and
|
||||
-- then making the column non-null.
|
||||
|
||||
ALTER TABLE Builds
|
||||
ADD COLUMN jobset_id integer NULL,
|
||||
ADD FOREIGN KEY (jobset_id)
|
||||
REFERENCES Jobsets(id)
|
||||
ON DELETE CASCADE;
|
Loading…
Reference in a new issue