diff --git a/author_tools/regen_schema.pl b/author_tools/regen_schema.pl
index 10cc76dc3..6c990e27a 100644
--- a/author_tools/regen_schema.pl
+++ b/author_tools/regen_schema.pl
@@ -475,7 +475,7 @@ sub process_uuid {
my @uuids;
for my $col (keys %cols) {
my $data = $cols{$col} or next;
- next unless $col eq 'owner' || $col =~ m/_(id|key)$/;
+ next unless $col =~ m/_uuid$/;
next unless $data->{data_type} eq 'binary';
next unless $data->{size} == 16;
push @uuids => $col;
@@ -485,12 +485,8 @@ sub process_uuid {
print $fh @lines;
if (@uuids) {
- my $specs = join "\n" => map { "__PACKAGE__->inflate_column('$_' => { inflate => \\&uuid_inflate, deflate => \\&uuid_deflate });" } @uuids;
-
- print $fh <<" EOT";
-use App::Yath::Schema::UUID qw/uuid_inflate uuid_deflate/;
-$specs
- EOT
+ my $specs = join "\n" => map { "__PACKAGE__->inflate_column('$_' => { inflate => \\&App::Yath::Schema::Util::format_uuid_for_app, deflate => \\&App::Yath::Schema::Util::format_uuid_for_db });" } @uuids;
+ print $fh "$specs\n";
}
print $fh "# DO NOT MODIFY ANY PART OF THIS FILE\n";
diff --git a/dist.ini b/dist.ini
index 0cd72373e..4952ee375 100644
--- a/dist.ini
+++ b/dist.ini
@@ -130,7 +130,7 @@ Test2::Event = 1.302198
Test2::Event::V2 = 1.302198
Test2::Formatter = 1.302198
Test2::Plugin::MemUsage = 0.002003
-Test2::Plugin::UUID = 0.002003
+Test2::Plugin::UUID = 0.002008
Test2::Tools::AsyncSubtest = 0.000159
Test2::Tools::Basic = 0
Test2::Tools::Compare = 0
diff --git a/lib/App/Yath/Schema.pm b/lib/App/Yath/Schema.pm
index 5726486b6..15ef644e5 100644
--- a/lib/App/Yath/Schema.pm
+++ b/lib/App/Yath/Schema.pm
@@ -3,11 +3,14 @@ use utf8;
use strict;
use warnings;
use Carp qw/confess/;
+use Carp::Always;
our $VERSION = '2.000000';
use base 'DBIx::Class::Schema';
+use Test2::Util::UUID qw/uuid2bin bin2uuid/;
+
confess "You must first load a App::Yath::Schema::NAME module"
unless $App::Yath::Schema::LOADED;
@@ -20,6 +23,49 @@ __PACKAGE__->load_namespaces(
default_resultset_class => 'ResultSet',
);
+sub is_mysql {
+ return 1 if is_mariadb();
+ return 1 if is_percona();
+ return 1 if $App::Yath::Schema::LOADED =~ m/MySQL/;
+ return 0;
+}
+
+sub is_postgresql {
+ return 1 if $App::Yath::Schema::LOADED =~ m/PostgreSQL/;
+ return 0;
+}
+
+sub is_sqlite {
+ return 1 if $App::Yath::Schema::LOADED =~ m/SQLite/;
+ return 0;
+}
+
+sub is_percona {
+ return 1 if $App::Yath::Schema::LOADED =~ m/Percona/;
+ return 0;
+}
+
+sub is_mariadb {
+ return 1 if $App::Yath::Schema::LOADED =~ m/MariaDB/;
+ return 0;
+}
+
+sub format_uuid_for_db {
+ my $class = shift;
+ my ($uuid) = @_;
+
+ return $uuid unless is_percona();
+ return uuid2bin($uuid);
+}
+
+sub format_uuid_for_app {
+ my $class = shift;
+ my ($uuid_bin) = @_;
+
+ return $uuid_bin unless is_percona();
+ return bin2uuid($uuid_bin);
+}
+
sub config {
my $self = shift;
my ($setting, @val) = @_;
diff --git a/lib/App/Yath/Schema/MariaDB/ApiKey.pm b/lib/App/Yath/Schema/MariaDB/ApiKey.pm
new file mode 100644
index 000000000..c3bffa7d8
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/ApiKey.pm
@@ -0,0 +1,94 @@
+use utf8;
+package App::Yath::Schema::MariaDB::ApiKey;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::ApiKey;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("api_keys");
+__PACKAGE__->add_columns(
+ "value",
+ { data_type => "uuid", is_nullable => 0 },
+ "api_key_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "status",
+ {
+ data_type => "enum",
+ default_value => "active",
+ extra => { list => ["active", "disabled", "revoked"] },
+ is_nullable => 0,
+ },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+);
+__PACKAGE__->set_primary_key("api_key_id");
+__PACKAGE__->add_unique_constraint("value", ["value"]);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::ApiKey - Autogenerated result class for ApiKey in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Binary.pm b/lib/App/Yath/Schema/MariaDB/Binary.pm
new file mode 100644
index 000000000..11c557a3d
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Binary.pm
@@ -0,0 +1,97 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Binary;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Binary;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("binaries");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "binary_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "event_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "is_image",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
+ "filename",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+ "description",
+ { data_type => "text", is_nullable => 1 },
+ "data",
+ { data_type => "longblob", is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("binary_id");
+__PACKAGE__->belongs_to(
+ "event",
+ "App::Yath::Schema::Result::Event",
+ { event_id => "event_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Binary - Autogenerated result class for Binary in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Config.pm b/lib/App/Yath/Schema/MariaDB/Config.pm
new file mode 100644
index 000000000..db7f159f8
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Config.pm
@@ -0,0 +1,79 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Config;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Config;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("config");
+__PACKAGE__->add_columns(
+ "config_id",
+ { data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
+ "setting",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+ "value",
+ { data_type => "varchar", is_nullable => 0, size => 256 },
+);
+__PACKAGE__->set_primary_key("config_id");
+__PACKAGE__->add_unique_constraint("setting", ["setting"]);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Config - Autogenerated result class for Config in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Coverage.pm b/lib/App/Yath/Schema/MariaDB/Coverage.pm
new file mode 100644
index 000000000..4df03baaa
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Coverage.pm
@@ -0,0 +1,146 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Coverage;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Coverage;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("coverage");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "coverage_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "coverage_manager_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "test_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "source_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "source_sub_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "metadata",
+ { data_type => "longtext", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("coverage_id");
+__PACKAGE__->add_unique_constraint(
+ "run_id",
+ [
+ "run_id",
+ "job_try_id",
+ "test_file_id",
+ "source_file_id",
+ "source_sub_id",
+ ],
+);
+__PACKAGE__->belongs_to(
+ "coverage_manager",
+ "App::Yath::Schema::Result::CoverageManager",
+ { coverage_manager_id => "coverage_manager_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "source_file",
+ "App::Yath::Schema::Result::SourceFile",
+ { source_file_id => "source_file_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "source_sub",
+ "App::Yath::Schema::Result::SourceSub",
+ { source_sub_id => "source_sub_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "test_file",
+ "App::Yath::Schema::Result::TestFile",
+ { test_file_id => "test_file_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Coverage - Autogenerated result class for Coverage in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/CoverageManager.pm b/lib/App/Yath/Schema/MariaDB/CoverageManager.pm
new file mode 100644
index 000000000..147c41ebb
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/CoverageManager.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MariaDB::CoverageManager;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::CoverageManager;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("coverage_manager");
+__PACKAGE__->add_columns(
+ "coverage_manager_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "package",
+ { data_type => "varchar", is_nullable => 0, size => 256 },
+);
+__PACKAGE__->set_primary_key("coverage_manager_id");
+__PACKAGE__->add_unique_constraint("package", ["package"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.coverage_manager_id" => "self.coverage_manager_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::CoverageManager - Autogenerated result class for CoverageManager in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Email.pm b/lib/App/Yath/Schema/MariaDB/Email.pm
new file mode 100644
index 000000000..40399dc40
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Email.pm
@@ -0,0 +1,101 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Email;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Email;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("email");
+__PACKAGE__->add_columns(
+ "email_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "verified",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
+ "local",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+ "domain",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+);
+__PACKAGE__->set_primary_key("email_id");
+__PACKAGE__->add_unique_constraint("local", ["local", "domain"]);
+__PACKAGE__->might_have(
+ "email_verification_code",
+ "App::Yath::Schema::Result::EmailVerificationCode",
+ { "foreign.email_id" => "self.email_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->might_have(
+ "primary_email",
+ "App::Yath::Schema::Result::PrimaryEmail",
+ { "foreign.email_id" => "self.email_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Email - Autogenerated result class for Email in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/EmailVerificationCode.pm b/lib/App/Yath/Schema/MariaDB/EmailVerificationCode.pm
new file mode 100644
index 000000000..c065c5d38
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/EmailVerificationCode.pm
@@ -0,0 +1,82 @@
+use utf8;
+package App::Yath::Schema::MariaDB::EmailVerificationCode;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::EmailVerificationCode;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("email_verification_codes");
+__PACKAGE__->add_columns(
+ "evcode",
+ { data_type => "uuid", is_nullable => 0 },
+ "email_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("email_id");
+__PACKAGE__->belongs_to(
+ "email",
+ "App::Yath::Schema::Result::Email",
+ { email_id => "email_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::EmailVerificationCode - Autogenerated result class for EmailVerificationCode in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Event.pm b/lib/App/Yath/Schema/MariaDB/Event.pm
new file mode 100644
index 000000000..62cdac619
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Event.pm
@@ -0,0 +1,166 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Event;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Event;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("events");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "trace_uuid",
+ { data_type => "uuid", is_nullable => 1 },
+ "parent_uuid",
+ { data_type => "uuid", is_foreign_key => 1, is_nullable => 1 },
+ "event_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "parent_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "event_idx",
+ { data_type => "integer", is_nullable => 0 },
+ "event_sdx",
+ { data_type => "integer", is_nullable => 0 },
+ "stamp",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "nested",
+ { data_type => "smallint", is_nullable => 0 },
+ "is_subtest",
+ { data_type => "tinyint", is_nullable => 0 },
+ "is_diag",
+ { data_type => "tinyint", is_nullable => 0 },
+ "is_harness",
+ { data_type => "tinyint", is_nullable => 0 },
+ "is_time",
+ { data_type => "tinyint", is_nullable => 0 },
+ "causes_fail",
+ { data_type => "tinyint", is_nullable => 0 },
+ "has_facets",
+ { data_type => "tinyint", is_nullable => 0 },
+ "has_orphan",
+ { data_type => "tinyint", is_nullable => 0 },
+ "has_binary",
+ { data_type => "tinyint", is_nullable => 0 },
+ "facets",
+ { data_type => "longtext", is_nullable => 1 },
+ "orphan",
+ { data_type => "longtext", is_nullable => 1 },
+ "rendered",
+ { data_type => "longtext", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("event_id");
+__PACKAGE__->add_unique_constraint("event_uuid", ["event_uuid"]);
+__PACKAGE__->add_unique_constraint("job_try_id", ["job_try_id", "event_idx", "event_sdx"]);
+__PACKAGE__->has_many(
+ "binaries",
+ "App::Yath::Schema::Result::Binary",
+ { "foreign.event_id" => "self.event_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "events_parent_uuids",
+ "App::Yath::Schema::Result::Event",
+ { "foreign.parent_uuid" => "self.event_uuid" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "events_parents",
+ "App::Yath::Schema::Result::Event",
+ { "foreign.parent_id" => "self.event_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "parent",
+ "App::Yath::Schema::Result::Event",
+ { event_id => "parent_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "parent_uuid",
+ "App::Yath::Schema::Result::Event",
+ { event_uuid => "parent_uuid" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "RESTRICT",
+ on_update => "RESTRICT",
+ },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Event - Autogenerated result class for Event in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Host.pm b/lib/App/Yath/Schema/MariaDB/Host.pm
new file mode 100644
index 000000000..59c43fb08
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Host.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Host;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Host;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("hosts");
+__PACKAGE__->add_columns(
+ "host_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "hostname",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+);
+__PACKAGE__->set_primary_key("host_id");
+__PACKAGE__->add_unique_constraint("hostname", ["hostname"]);
+__PACKAGE__->has_many(
+ "resources",
+ "App::Yath::Schema::Result::Resource",
+ { "foreign.host_id" => "self.host_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Host - Autogenerated result class for Host in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Job.pm b/lib/App/Yath/Schema/MariaDB/Job.pm
new file mode 100644
index 000000000..9d98dfb59
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Job.pm
@@ -0,0 +1,105 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Job;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Job;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("jobs");
+__PACKAGE__->add_columns(
+ "job_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "job_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "test_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "is_harness_out",
+ { data_type => "tinyint", is_nullable => 0 },
+ "failed",
+ { data_type => "tinyint", is_nullable => 0 },
+ "passed",
+ { data_type => "tinyint", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("job_id");
+__PACKAGE__->add_unique_constraint("job_uuid", ["job_uuid"]);
+__PACKAGE__->has_many(
+ "jobs_tries",
+ "App::Yath::Schema::Result::JobTry",
+ { "foreign.job_id" => "self.job_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "test_file",
+ "App::Yath::Schema::Result::TestFile",
+ { test_file_id => "test_file_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Job - Autogenerated result class for Job in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/JobTry.pm b/lib/App/Yath/Schema/MariaDB/JobTry.pm
new file mode 100644
index 000000000..7efcb8a2c
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/JobTry.pm
@@ -0,0 +1,154 @@
+use utf8;
+package App::Yath::Schema::MariaDB::JobTry;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::JobTry;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("job_tries");
+__PACKAGE__->add_columns(
+ "job_try_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "pass_count",
+ { data_type => "bigint", is_nullable => 1 },
+ "fail_count",
+ { data_type => "bigint", is_nullable => 1 },
+ "exit_code",
+ { data_type => "integer", is_nullable => 1 },
+ "launch",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "start",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "ended",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "status",
+ {
+ data_type => "enum",
+ default_value => "pending",
+ extra => {
+ list => ["pending", "running", "complete", "broken", "canceled"],
+ },
+ is_nullable => 0,
+ },
+ "job_try_ord",
+ { data_type => "smallint", is_nullable => 0 },
+ "fail",
+ { data_type => "tinyint", is_nullable => 1 },
+ "retry",
+ { data_type => "tinyint", is_nullable => 1 },
+ "duration",
+ { data_type => "decimal", is_nullable => 1, size => [14, 4] },
+ "parameters",
+ { data_type => "longtext", is_nullable => 1 },
+ "stdout",
+ { data_type => "text", is_nullable => 1 },
+ "stderr",
+ { data_type => "text", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("job_try_id");
+__PACKAGE__->add_unique_constraint("job_try_id", ["job_try_id", "job_try_ord"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "events",
+ "App::Yath::Schema::Result::Event",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "job",
+ "App::Yath::Schema::Result::Job",
+ { job_id => "job_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->has_many(
+ "job_try_fields",
+ "App::Yath::Schema::Result::JobTryField",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "reports",
+ "App::Yath::Schema::Result::Reporting",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::JobTry - Autogenerated result class for JobTry in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/JobTryField.pm b/lib/App/Yath/Schema/MariaDB/JobTryField.pm
new file mode 100644
index 000000000..23be8ad20
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/JobTryField.pm
@@ -0,0 +1,94 @@
+use utf8;
+package App::Yath::Schema::MariaDB::JobTryField;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::JobTryField;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("job_try_fields");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "job_field_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 64 },
+ "data",
+ { data_type => "longtext", is_nullable => 1 },
+ "details",
+ { data_type => "text", is_nullable => 1 },
+ "raw",
+ { data_type => "text", is_nullable => 1 },
+ "link",
+ { data_type => "text", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("job_field_id");
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::JobTryField - Autogenerated result class for JobTryField in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/LogFile.pm b/lib/App/Yath/Schema/MariaDB/LogFile.pm
new file mode 100644
index 000000000..315809961
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/LogFile.pm
@@ -0,0 +1,86 @@
+use utf8;
+package App::Yath::Schema::MariaDB::LogFile;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::LogFile;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("log_files");
+__PACKAGE__->add_columns(
+ "log_file_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "name",
+ { data_type => "text", is_nullable => 0 },
+ "local_file",
+ { data_type => "text", is_nullable => 1 },
+ "data",
+ { data_type => "longblob", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("log_file_id");
+__PACKAGE__->has_many(
+ "runs",
+ "App::Yath::Schema::Result::Run",
+ { "foreign.log_file_id" => "self.log_file_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::LogFile - Autogenerated result class for LogFile in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Permission.pm b/lib/App/Yath/Schema/MariaDB/Permission.pm
new file mode 100644
index 000000000..9fdad35c9
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Permission.pm
@@ -0,0 +1,98 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Permission;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Permission;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("permissions");
+__PACKAGE__->add_columns(
+ "permission_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "project_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "updated",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ default_value => "current_timestamp()",
+ is_nullable => 0,
+ },
+);
+__PACKAGE__->set_primary_key("permission_id");
+__PACKAGE__->add_unique_constraint("project_id", ["project_id", "user_id"]);
+__PACKAGE__->belongs_to(
+ "project",
+ "App::Yath::Schema::Result::Project",
+ { project_id => "project_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Permission - Autogenerated result class for Permission in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/PrimaryEmail.pm b/lib/App/Yath/Schema/MariaDB/PrimaryEmail.pm
new file mode 100644
index 000000000..f2a78ec9a
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/PrimaryEmail.pm
@@ -0,0 +1,89 @@
+use utf8;
+package App::Yath::Schema::MariaDB::PrimaryEmail;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::PrimaryEmail;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("primary_email");
+__PACKAGE__->add_columns(
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "email_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("user_id");
+__PACKAGE__->add_unique_constraint("email_id", ["email_id"]);
+__PACKAGE__->belongs_to(
+ "email",
+ "App::Yath::Schema::Result::Email",
+ { email_id => "email_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::PrimaryEmail - Autogenerated result class for PrimaryEmail in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Project.pm b/lib/App/Yath/Schema/MariaDB/Project.pm
new file mode 100644
index 000000000..a3198d1c1
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Project.pm
@@ -0,0 +1,108 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Project;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Project;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("projects");
+__PACKAGE__->add_columns(
+ "project_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "owner",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+);
+__PACKAGE__->set_primary_key("project_id");
+__PACKAGE__->add_unique_constraint("name", ["name"]);
+__PACKAGE__->belongs_to(
+ "owner",
+ "App::Yath::Schema::Result::User",
+ { user_id => "owner" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->has_many(
+ "permissions",
+ "App::Yath::Schema::Result::Permission",
+ { "foreign.project_id" => "self.project_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "reports",
+ "App::Yath::Schema::Result::Reporting",
+ { "foreign.project_id" => "self.project_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "runs",
+ "App::Yath::Schema::Result::Run",
+ { "foreign.project_id" => "self.project_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Project - Autogenerated result class for Project in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Reporting.pm b/lib/App/Yath/Schema/MariaDB/Reporting.pm
new file mode 100644
index 000000000..6a20e6832
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Reporting.pm
@@ -0,0 +1,138 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Reporting;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Reporting;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("reporting");
+__PACKAGE__->add_columns(
+ "reporting_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "test_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "project_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "job_try",
+ { data_type => "smallint", is_nullable => 1 },
+ "retry",
+ { data_type => "smallint", is_nullable => 0 },
+ "abort",
+ { data_type => "smallint", is_nullable => 0 },
+ "fail",
+ { data_type => "smallint", is_nullable => 0 },
+ "pass",
+ { data_type => "smallint", is_nullable => 0 },
+ "subtest",
+ { data_type => "varchar", is_nullable => 1, size => 512 },
+ "duration",
+ { data_type => "decimal", is_nullable => 0, size => [14, 4] },
+);
+__PACKAGE__->set_primary_key("reporting_id");
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "project",
+ "App::Yath::Schema::Result::Project",
+ { project_id => "project_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "test_file",
+ "App::Yath::Schema::Result::TestFile",
+ { test_file_id => "test_file_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Reporting - Autogenerated result class for Reporting in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Resource.pm b/lib/App/Yath/Schema/MariaDB/Resource.pm
new file mode 100644
index 000000000..b7cfc5107
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Resource.pm
@@ -0,0 +1,116 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Resource;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Resource;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("resources");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "resource_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "resource_type_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "host_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "stamp",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 0,
+ },
+ "resource_ord",
+ { data_type => "integer", is_nullable => 0 },
+ "data",
+ { data_type => "longtext", is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("resource_id");
+__PACKAGE__->add_unique_constraint("run_id", ["run_id", "resource_ord"]);
+__PACKAGE__->belongs_to(
+ "host",
+ "App::Yath::Schema::Result::Host",
+ { host_id => "host_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "resource_type",
+ "App::Yath::Schema::Result::ResourceType",
+ { resource_type_id => "resource_type_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Resource - Autogenerated result class for Resource in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/ResourceType.pm b/lib/App/Yath/Schema/MariaDB/ResourceType.pm
new file mode 100644
index 000000000..d82844afa
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/ResourceType.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MariaDB::ResourceType;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::ResourceType;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("resource_types");
+__PACKAGE__->add_columns(
+ "resource_type_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+);
+__PACKAGE__->set_primary_key("resource_type_id");
+__PACKAGE__->add_unique_constraint("name", ["name"]);
+__PACKAGE__->has_many(
+ "resources",
+ "App::Yath::Schema::Result::Resource",
+ { "foreign.resource_type_id" => "self.resource_type_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::ResourceType - Autogenerated result class for ResourceType in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Run.pm b/lib/App/Yath/Schema/MariaDB/Run.pm
new file mode 100644
index 000000000..da207ccec
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Run.pm
@@ -0,0 +1,206 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Run;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Run;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("runs");
+__PACKAGE__->add_columns(
+ "run_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "project_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "log_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "sync_id",
+ { data_type => "integer", is_foreign_key => 1, is_nullable => 1 },
+ "passed",
+ { data_type => "integer", is_nullable => 1 },
+ "failed",
+ { data_type => "integer", is_nullable => 1 },
+ "to_retry",
+ { data_type => "integer", is_nullable => 1 },
+ "retried",
+ { data_type => "integer", is_nullable => 1 },
+ "concurrency_j",
+ { data_type => "integer", is_nullable => 1 },
+ "concurrency_x",
+ { data_type => "integer", is_nullable => 1 },
+ "added",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ default_value => "current_timestamp()",
+ is_nullable => 0,
+ },
+ "status",
+ {
+ data_type => "enum",
+ default_value => "pending",
+ extra => {
+ list => ["pending", "running", "complete", "broken", "canceled"],
+ },
+ is_nullable => 0,
+ },
+ "mode",
+ {
+ data_type => "enum",
+ default_value => "qvfd",
+ extra => { list => ["qvfds", "qvfd", "qvf", "summary", "complete"] },
+ is_nullable => 0,
+ },
+ "canon",
+ { data_type => "tinyint", is_nullable => 0 },
+ "pinned",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
+ "has_coverage",
+ { data_type => "tinyint", is_nullable => 1 },
+ "has_resources",
+ { data_type => "tinyint", is_nullable => 1 },
+ "parameters",
+ { data_type => "longtext", is_nullable => 1 },
+ "worker_id",
+ { data_type => "text", is_nullable => 1 },
+ "error",
+ { data_type => "text", is_nullable => 1 },
+ "duration",
+ { data_type => "decimal", is_nullable => 1, size => [14, 4] },
+);
+__PACKAGE__->set_primary_key("run_id");
+__PACKAGE__->add_unique_constraint("run_uuid", ["run_uuid"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.run_id" => "self.run_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "jobs",
+ "App::Yath::Schema::Result::Job",
+ { "foreign.run_id" => "self.run_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "log_file",
+ "App::Yath::Schema::Result::LogFile",
+ { log_file_id => "log_file_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "project",
+ "App::Yath::Schema::Result::Project",
+ { project_id => "project_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->has_many(
+ "reports",
+ "App::Yath::Schema::Result::Reporting",
+ { "foreign.run_id" => "self.run_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "resources",
+ "App::Yath::Schema::Result::Resource",
+ { "foreign.run_id" => "self.run_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "run_fields",
+ "App::Yath::Schema::Result::RunField",
+ { "foreign.run_id" => "self.run_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "sweeps",
+ "App::Yath::Schema::Result::Sweep",
+ { "foreign.run_id" => "self.run_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "sync",
+ "App::Yath::Schema::Result::Sync",
+ { sync_id => "sync_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Run - Autogenerated result class for Run in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/RunField.pm b/lib/App/Yath/Schema/MariaDB/RunField.pm
new file mode 100644
index 000000000..66fc36a5f
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/RunField.pm
@@ -0,0 +1,94 @@
+use utf8;
+package App::Yath::Schema::MariaDB::RunField;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::RunField;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("run_fields");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "run_field_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 64 },
+ "data",
+ { data_type => "longtext", is_nullable => 1 },
+ "details",
+ { data_type => "text", is_nullable => 1 },
+ "raw",
+ { data_type => "text", is_nullable => 1 },
+ "link",
+ { data_type => "text", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("run_field_id");
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::RunField - Autogenerated result class for RunField in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Session.pm b/lib/App/Yath/Schema/MariaDB/Session.pm
new file mode 100644
index 000000000..42a44885d
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Session.pm
@@ -0,0 +1,85 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Session;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Session;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("sessions");
+__PACKAGE__->add_columns(
+ "session_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "session_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "active",
+ { data_type => "tinyint", default_value => 1, is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("session_id");
+__PACKAGE__->add_unique_constraint("session_uuid", ["session_uuid"]);
+__PACKAGE__->has_many(
+ "session_hosts",
+ "App::Yath::Schema::Result::SessionHost",
+ { "foreign.session_id" => "self.session_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Session - Autogenerated result class for Session in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/SessionHost.pm b/lib/App/Yath/Schema/MariaDB/SessionHost.pm
new file mode 100644
index 000000000..a38d9c33e
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/SessionHost.pm
@@ -0,0 +1,114 @@
+use utf8;
+package App::Yath::Schema::MariaDB::SessionHost;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::SessionHost;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("session_hosts");
+__PACKAGE__->add_columns(
+ "session_host_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "session_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "created",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ default_value => "current_timestamp()",
+ is_nullable => 0,
+ },
+ "accessed",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ default_value => "current_timestamp()",
+ is_nullable => 0,
+ },
+ "address",
+ { data_type => "text", is_nullable => 0 },
+ "agent",
+ { data_type => "text", is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("session_host_id");
+__PACKAGE__->add_unique_constraint("address", ["address", "agent", "session_id"]);
+__PACKAGE__->belongs_to(
+ "session",
+ "App::Yath::Schema::Result::Session",
+ { session_id => "session_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::SessionHost - Autogenerated result class for SessionHost in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/SourceFile.pm b/lib/App/Yath/Schema/MariaDB/SourceFile.pm
new file mode 100644
index 000000000..8186985d1
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/SourceFile.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MariaDB::SourceFile;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::SourceFile;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("source_files");
+__PACKAGE__->add_columns(
+ "source_file_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "filename",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+);
+__PACKAGE__->set_primary_key("source_file_id");
+__PACKAGE__->add_unique_constraint("filename", ["filename"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.source_file_id" => "self.source_file_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::SourceFile - Autogenerated result class for SourceFile in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/SourceSub.pm b/lib/App/Yath/Schema/MariaDB/SourceSub.pm
new file mode 100644
index 000000000..c153a9567
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/SourceSub.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MariaDB::SourceSub;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::SourceSub;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("source_subs");
+__PACKAGE__->add_columns(
+ "source_sub_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "subname",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+);
+__PACKAGE__->set_primary_key("source_sub_id");
+__PACKAGE__->add_unique_constraint("subname", ["subname"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.source_sub_id" => "self.source_sub_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::SourceSub - Autogenerated result class for SourceSub in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Sweep.pm b/lib/App/Yath/Schema/MariaDB/Sweep.pm
new file mode 100644
index 000000000..c8519dcd9
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Sweep.pm
@@ -0,0 +1,85 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Sweep;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Sweep;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("sweeps");
+__PACKAGE__->add_columns(
+ "sweep_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 64 },
+);
+__PACKAGE__->set_primary_key("sweep_id");
+__PACKAGE__->add_unique_constraint("run_id", ["run_id", "name"]);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Sweep - Autogenerated result class for Sweep in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Sync.pm b/lib/App/Yath/Schema/MariaDB/Sync.pm
new file mode 100644
index 000000000..c43b03be5
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Sync.pm
@@ -0,0 +1,89 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Sync;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Sync;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("syncs");
+__PACKAGE__->add_columns(
+ "sync_id",
+ { data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
+ "last_run_id",
+ { data_type => "bigint", is_nullable => 0 },
+ "last_project_id",
+ { data_type => "bigint", is_nullable => 0 },
+ "last_user_id",
+ { data_type => "bigint", is_nullable => 0 },
+ "source",
+ { data_type => "varchar", is_nullable => 0, size => 64 },
+);
+__PACKAGE__->set_primary_key("sync_id");
+__PACKAGE__->add_unique_constraint("source", ["source"]);
+__PACKAGE__->has_many(
+ "runs",
+ "App::Yath::Schema::Result::Run",
+ { "foreign.sync_id" => "self.sync_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Sync - Autogenerated result class for Sync in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/TestFile.pm b/lib/App/Yath/Schema/MariaDB/TestFile.pm
new file mode 100644
index 000000000..09755003c
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/TestFile.pm
@@ -0,0 +1,95 @@
+use utf8;
+package App::Yath::Schema::MariaDB::TestFile;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::TestFile;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("test_files");
+__PACKAGE__->add_columns(
+ "test_file_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "filename",
+ { data_type => "varchar", is_nullable => 0, size => 255 },
+);
+__PACKAGE__->set_primary_key("test_file_id");
+__PACKAGE__->add_unique_constraint("filename", ["filename"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.test_file_id" => "self.test_file_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "jobs",
+ "App::Yath::Schema::Result::Job",
+ { "foreign.test_file_id" => "self.test_file_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "reports",
+ "App::Yath::Schema::Result::Reporting",
+ { "foreign.test_file_id" => "self.test_file_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::TestFile - Autogenerated result class for TestFile in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/User.pm b/lib/App/Yath/Schema/MariaDB/User.pm
new file mode 100644
index 000000000..763f6fd58
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/User.pm
@@ -0,0 +1,138 @@
+use utf8;
+package App::Yath::Schema::MariaDB::User;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::User;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("users");
+__PACKAGE__->add_columns(
+ "user_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "pw_hash",
+ { data_type => "varchar", is_nullable => 1, size => 31 },
+ "pw_salt",
+ { data_type => "varchar", is_nullable => 1, size => 22 },
+ "role",
+ {
+ data_type => "enum",
+ default_value => "user",
+ extra => { list => ["admin", "user"] },
+ is_nullable => 0,
+ },
+ "username",
+ { data_type => "varchar", is_nullable => 0, size => 64 },
+ "realname",
+ { data_type => "text", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("user_id");
+__PACKAGE__->add_unique_constraint("username", ["username"]);
+__PACKAGE__->has_many(
+ "api_keys",
+ "App::Yath::Schema::Result::ApiKey",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "emails",
+ "App::Yath::Schema::Result::Email",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "permissions",
+ "App::Yath::Schema::Result::Permission",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->might_have(
+ "primary_email",
+ "App::Yath::Schema::Result::PrimaryEmail",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "projects",
+ "App::Yath::Schema::Result::Project",
+ { "foreign.owner" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "reports",
+ "App::Yath::Schema::Result::Reporting",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "runs",
+ "App::Yath::Schema::Result::Run",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "session_hosts",
+ "App::Yath::Schema::Result::SessionHost",
+ { "foreign.user_id" => "self.user_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::User - Autogenerated result class for User in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MariaDB/Version.pm b/lib/App/Yath/Schema/MariaDB/Version.pm
new file mode 100644
index 000000000..1e210b5bd
--- /dev/null
+++ b/lib/App/Yath/Schema/MariaDB/Version.pm
@@ -0,0 +1,84 @@
+use utf8;
+package App::Yath::Schema::MariaDB::Version;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Version;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("versions");
+__PACKAGE__->add_columns(
+ "version",
+ { data_type => "decimal", is_nullable => 0, size => [10, 6] },
+ "version_id",
+ { data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
+ "updated",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ default_value => "current_timestamp()",
+ is_nullable => 0,
+ },
+);
+__PACKAGE__->set_primary_key("version_id");
+__PACKAGE__->add_unique_constraint("version", ["version"]);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:09
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MariaDB::Version - Autogenerated result class for Version in MariaDB.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/ApiKey.pm b/lib/App/Yath/Schema/MySQL/ApiKey.pm
new file mode 100644
index 000000000..289848e80
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/ApiKey.pm
@@ -0,0 +1,94 @@
+use utf8;
+package App::Yath::Schema::MySQL::ApiKey;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::ApiKey;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("api_keys");
+__PACKAGE__->add_columns(
+ "value",
+ { data_type => "uuid", is_nullable => 0 },
+ "api_key_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "status",
+ {
+ data_type => "enum",
+ default_value => "active",
+ extra => { list => ["active", "disabled", "revoked"] },
+ is_nullable => 0,
+ },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+);
+__PACKAGE__->set_primary_key("api_key_id");
+__PACKAGE__->add_unique_constraint("value", ["value"]);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::ApiKey - Autogenerated result class for ApiKey in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Binary.pm b/lib/App/Yath/Schema/MySQL/Binary.pm
new file mode 100644
index 000000000..8bf5ec475
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Binary.pm
@@ -0,0 +1,97 @@
+use utf8;
+package App::Yath::Schema::MySQL::Binary;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Binary;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("binaries");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "binary_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "event_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "is_image",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
+ "filename",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+ "description",
+ { data_type => "text", is_nullable => 1 },
+ "data",
+ { data_type => "longblob", is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("binary_id");
+__PACKAGE__->belongs_to(
+ "event",
+ "App::Yath::Schema::Result::Event",
+ { event_id => "event_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Binary - Autogenerated result class for Binary in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Config.pm b/lib/App/Yath/Schema/MySQL/Config.pm
new file mode 100644
index 000000000..1f484e46b
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Config.pm
@@ -0,0 +1,79 @@
+use utf8;
+package App::Yath::Schema::MySQL::Config;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Config;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("config");
+__PACKAGE__->add_columns(
+ "config_id",
+ { data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
+ "setting",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+ "value",
+ { data_type => "varchar", is_nullable => 0, size => 256 },
+);
+__PACKAGE__->set_primary_key("config_id");
+__PACKAGE__->add_unique_constraint("setting", ["setting"]);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Config - Autogenerated result class for Config in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Coverage.pm b/lib/App/Yath/Schema/MySQL/Coverage.pm
new file mode 100644
index 000000000..1a0187ffe
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Coverage.pm
@@ -0,0 +1,146 @@
+use utf8;
+package App::Yath::Schema::MySQL::Coverage;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Coverage;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("coverage");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "coverage_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "coverage_manager_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "test_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "source_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "source_sub_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "metadata",
+ { data_type => "longtext", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("coverage_id");
+__PACKAGE__->add_unique_constraint(
+ "run_id",
+ [
+ "run_id",
+ "job_try_id",
+ "test_file_id",
+ "source_file_id",
+ "source_sub_id",
+ ],
+);
+__PACKAGE__->belongs_to(
+ "coverage_manager",
+ "App::Yath::Schema::Result::CoverageManager",
+ { coverage_manager_id => "coverage_manager_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "SET NULL",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "source_file",
+ "App::Yath::Schema::Result::SourceFile",
+ { source_file_id => "source_file_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "source_sub",
+ "App::Yath::Schema::Result::SourceSub",
+ { source_sub_id => "source_sub_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "test_file",
+ "App::Yath::Schema::Result::TestFile",
+ { test_file_id => "test_file_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Coverage - Autogenerated result class for Coverage in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/CoverageManager.pm b/lib/App/Yath/Schema/MySQL/CoverageManager.pm
new file mode 100644
index 000000000..621b95570
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/CoverageManager.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MySQL::CoverageManager;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::CoverageManager;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("coverage_manager");
+__PACKAGE__->add_columns(
+ "coverage_manager_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "package",
+ { data_type => "varchar", is_nullable => 0, size => 256 },
+);
+__PACKAGE__->set_primary_key("coverage_manager_id");
+__PACKAGE__->add_unique_constraint("package", ["package"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.coverage_manager_id" => "self.coverage_manager_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::CoverageManager - Autogenerated result class for CoverageManager in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Email.pm b/lib/App/Yath/Schema/MySQL/Email.pm
new file mode 100644
index 000000000..d4bc31a7d
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Email.pm
@@ -0,0 +1,101 @@
+use utf8;
+package App::Yath::Schema::MySQL::Email;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Email;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("email");
+__PACKAGE__->add_columns(
+ "email_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "user_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "verified",
+ { data_type => "tinyint", default_value => 0, is_nullable => 0 },
+ "local",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+ "domain",
+ { data_type => "varchar", is_nullable => 0, size => 128 },
+);
+__PACKAGE__->set_primary_key("email_id");
+__PACKAGE__->add_unique_constraint("local", ["local", "domain"]);
+__PACKAGE__->might_have(
+ "email_verification_code",
+ "App::Yath::Schema::Result::EmailVerificationCode",
+ { "foreign.email_id" => "self.email_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->might_have(
+ "primary_email",
+ "App::Yath::Schema::Result::PrimaryEmail",
+ { "foreign.email_id" => "self.email_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "user",
+ "App::Yath::Schema::Result::User",
+ { user_id => "user_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Email - Autogenerated result class for Email in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/EmailVerificationCode.pm b/lib/App/Yath/Schema/MySQL/EmailVerificationCode.pm
new file mode 100644
index 000000000..9358c7957
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/EmailVerificationCode.pm
@@ -0,0 +1,82 @@
+use utf8;
+package App::Yath::Schema::MySQL::EmailVerificationCode;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::EmailVerificationCode;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("email_verification_codes");
+__PACKAGE__->add_columns(
+ "evcode",
+ { data_type => "uuid", is_nullable => 0 },
+ "email_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+);
+__PACKAGE__->set_primary_key("email_id");
+__PACKAGE__->belongs_to(
+ "email",
+ "App::Yath::Schema::Result::Email",
+ { email_id => "email_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::EmailVerificationCode - Autogenerated result class for EmailVerificationCode in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Event.pm b/lib/App/Yath/Schema/MySQL/Event.pm
new file mode 100644
index 000000000..52350192b
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Event.pm
@@ -0,0 +1,166 @@
+use utf8;
+package App::Yath::Schema::MySQL::Event;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Event;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("events");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "trace_uuid",
+ { data_type => "uuid", is_nullable => 1 },
+ "parent_uuid",
+ { data_type => "uuid", is_foreign_key => 1, is_nullable => 1 },
+ "event_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "parent_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 1 },
+ "event_idx",
+ { data_type => "integer", is_nullable => 0 },
+ "event_sdx",
+ { data_type => "integer", is_nullable => 0 },
+ "stamp",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "nested",
+ { data_type => "smallint", is_nullable => 0 },
+ "is_subtest",
+ { data_type => "tinyint", is_nullable => 0 },
+ "is_diag",
+ { data_type => "tinyint", is_nullable => 0 },
+ "is_harness",
+ { data_type => "tinyint", is_nullable => 0 },
+ "is_time",
+ { data_type => "tinyint", is_nullable => 0 },
+ "causes_fail",
+ { data_type => "tinyint", is_nullable => 0 },
+ "has_facets",
+ { data_type => "tinyint", is_nullable => 0 },
+ "has_orphan",
+ { data_type => "tinyint", is_nullable => 0 },
+ "has_binary",
+ { data_type => "tinyint", is_nullable => 0 },
+ "facets",
+ { data_type => "longtext", is_nullable => 1 },
+ "orphan",
+ { data_type => "longtext", is_nullable => 1 },
+ "rendered",
+ { data_type => "longtext", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("event_id");
+__PACKAGE__->add_unique_constraint("event_uuid", ["event_uuid"]);
+__PACKAGE__->add_unique_constraint("job_try_id", ["job_try_id", "event_idx", "event_sdx"]);
+__PACKAGE__->has_many(
+ "binaries",
+ "App::Yath::Schema::Result::Binary",
+ { "foreign.event_id" => "self.event_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "events_parent_uuids",
+ "App::Yath::Schema::Result::Event",
+ { "foreign.parent_uuid" => "self.event_uuid" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "events_parents",
+ "App::Yath::Schema::Result::Event",
+ { "foreign.parent_id" => "self.event_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "parent",
+ "App::Yath::Schema::Result::Event",
+ { event_id => "parent_id" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "CASCADE",
+ on_update => "RESTRICT",
+ },
+);
+__PACKAGE__->belongs_to(
+ "parent_uuid",
+ "App::Yath::Schema::Result::Event",
+ { event_uuid => "parent_uuid" },
+ {
+ is_deferrable => 1,
+ join_type => "LEFT",
+ on_delete => "RESTRICT",
+ on_update => "RESTRICT",
+ },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Event - Autogenerated result class for Event in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Host.pm b/lib/App/Yath/Schema/MySQL/Host.pm
new file mode 100644
index 000000000..864122ad5
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Host.pm
@@ -0,0 +1,83 @@
+use utf8;
+package App::Yath::Schema::MySQL::Host;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Host;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("hosts");
+__PACKAGE__->add_columns(
+ "host_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "hostname",
+ { data_type => "varchar", is_nullable => 0, size => 512 },
+);
+__PACKAGE__->set_primary_key("host_id");
+__PACKAGE__->add_unique_constraint("hostname", ["hostname"]);
+__PACKAGE__->has_many(
+ "resources",
+ "App::Yath::Schema::Result::Resource",
+ { "foreign.host_id" => "self.host_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Host - Autogenerated result class for Host in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/Job.pm b/lib/App/Yath/Schema/MySQL/Job.pm
new file mode 100644
index 000000000..d5210bd6b
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/Job.pm
@@ -0,0 +1,105 @@
+use utf8;
+package App::Yath::Schema::MySQL::Job;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::Job;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("jobs");
+__PACKAGE__->add_columns(
+ "job_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "job_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "run_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "test_file_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "is_harness_out",
+ { data_type => "tinyint", is_nullable => 0 },
+ "failed",
+ { data_type => "tinyint", is_nullable => 0 },
+ "passed",
+ { data_type => "tinyint", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("job_id");
+__PACKAGE__->add_unique_constraint("job_uuid", ["job_uuid"]);
+__PACKAGE__->has_many(
+ "jobs_tries",
+ "App::Yath::Schema::Result::JobTry",
+ { "foreign.job_id" => "self.job_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "run",
+ "App::Yath::Schema::Result::Run",
+ { run_id => "run_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->belongs_to(
+ "test_file",
+ "App::Yath::Schema::Result::TestFile",
+ { test_file_id => "test_file_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::Job - Autogenerated result class for Job in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/JobTry.pm b/lib/App/Yath/Schema/MySQL/JobTry.pm
new file mode 100644
index 000000000..a92981354
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/JobTry.pm
@@ -0,0 +1,154 @@
+use utf8;
+package App::Yath::Schema::MySQL::JobTry;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::JobTry;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("job_tries");
+__PACKAGE__->add_columns(
+ "job_try_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "pass_count",
+ { data_type => "bigint", is_nullable => 1 },
+ "fail_count",
+ { data_type => "bigint", is_nullable => 1 },
+ "exit_code",
+ { data_type => "integer", is_nullable => 1 },
+ "launch",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "start",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "ended",
+ {
+ data_type => "timestamp",
+ datetime_undef_if_invalid => 1,
+ is_nullable => 1,
+ },
+ "status",
+ {
+ data_type => "enum",
+ default_value => "pending",
+ extra => {
+ list => ["pending", "running", "complete", "broken", "canceled"],
+ },
+ is_nullable => 0,
+ },
+ "job_try_ord",
+ { data_type => "smallint", is_nullable => 0 },
+ "fail",
+ { data_type => "tinyint", is_nullable => 1 },
+ "retry",
+ { data_type => "tinyint", is_nullable => 1 },
+ "duration",
+ { data_type => "decimal", is_nullable => 1, size => [14, 4] },
+ "parameters",
+ { data_type => "longtext", is_nullable => 1 },
+ "stdout",
+ { data_type => "text", is_nullable => 1 },
+ "stderr",
+ { data_type => "text", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("job_try_id");
+__PACKAGE__->add_unique_constraint("job_try_id", ["job_try_id", "job_try_ord"]);
+__PACKAGE__->has_many(
+ "coverage",
+ "App::Yath::Schema::Result::Coverage",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "events",
+ "App::Yath::Schema::Result::Event",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->belongs_to(
+ "job",
+ "App::Yath::Schema::Result::Job",
+ { job_id => "job_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+__PACKAGE__->has_many(
+ "job_try_fields",
+ "App::Yath::Schema::Result::JobTryField",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+__PACKAGE__->has_many(
+ "reports",
+ "App::Yath::Schema::Result::Reporting",
+ { "foreign.job_try_id" => "self.job_try_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::JobTry - Autogenerated result class for JobTry in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/JobTryField.pm b/lib/App/Yath/Schema/MySQL/JobTryField.pm
new file mode 100644
index 000000000..4b831a012
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/JobTryField.pm
@@ -0,0 +1,94 @@
+use utf8;
+package App::Yath::Schema::MySQL::JobTryField;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::JobTryField;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("job_try_fields");
+__PACKAGE__->add_columns(
+ "event_uuid",
+ { data_type => "uuid", is_nullable => 0 },
+ "job_field_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "job_try_id",
+ { data_type => "bigint", is_foreign_key => 1, is_nullable => 0 },
+ "name",
+ { data_type => "varchar", is_nullable => 0, size => 64 },
+ "data",
+ { data_type => "longtext", is_nullable => 1 },
+ "details",
+ { data_type => "text", is_nullable => 1 },
+ "raw",
+ { data_type => "text", is_nullable => 1 },
+ "link",
+ { data_type => "text", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("job_field_id");
+__PACKAGE__->belongs_to(
+ "job_try",
+ "App::Yath::Schema::Result::JobTry",
+ { job_try_id => "job_try_id" },
+ { is_deferrable => 1, on_delete => "CASCADE", on_update => "RESTRICT" },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::JobTryField - Autogenerated result class for JobTryField in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright Chad Granum Eexodist7@gmail.comE.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L
+
+=cut
diff --git a/lib/App/Yath/Schema/MySQL/LogFile.pm b/lib/App/Yath/Schema/MySQL/LogFile.pm
new file mode 100644
index 000000000..011934581
--- /dev/null
+++ b/lib/App/Yath/Schema/MySQL/LogFile.pm
@@ -0,0 +1,86 @@
+use utf8;
+package App::Yath::Schema::MySQL::LogFile;
+our $VERSION = '2.000000';
+
+package
+ App::Yath::Schema::Result::LogFile;
+
+# Created by DBIx::Class::Schema::Loader
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+use strict;
+use warnings;
+
+use parent 'App::Yath::Schema::ResultBase';
+__PACKAGE__->load_components(
+ "InflateColumn::DateTime",
+ "InflateColumn::Serializer",
+ "InflateColumn::Serializer::JSON",
+ "UUIDColumns",
+);
+__PACKAGE__->table("log_files");
+__PACKAGE__->add_columns(
+ "log_file_id",
+ { data_type => "bigint", is_auto_increment => 1, is_nullable => 0 },
+ "name",
+ { data_type => "text", is_nullable => 0 },
+ "local_file",
+ { data_type => "text", is_nullable => 1 },
+ "data",
+ { data_type => "longblob", is_nullable => 1 },
+);
+__PACKAGE__->set_primary_key("log_file_id");
+__PACKAGE__->has_many(
+ "runs",
+ "App::Yath::Schema::Result::Run",
+ { "foreign.log_file_id" => "self.log_file_id" },
+ { cascade_copy => 0, cascade_delete => 1 },
+);
+
+
+# Created by DBIx::Class::Schema::Loader v0.07052 @ 2024-06-03 19:08:11
+# DO NOT MODIFY ANY PART OF THIS FILE
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+App::Yath::Schema::MySQL::LogFile - Autogenerated result class for LogFile in MySQL.
+
+=head1 SOURCE
+
+The source code repository for Test2-Harness can be found at
+L.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum Eexodist@cpan.orgE
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum E