return $self->{private_bz_schema} if exists $self->{private_bz_schema};
my $schema_class = $self->_bz_schema_class;
eval "require $schema_class";
- $self->{private_bz_schema} = $schema_class->new();
+ $self->{private_bz_schema} = $schema_class->new(db => $self);
return $self->{private_bz_schema};
}
has 'db_specific' => (init_arg => undef, is => 'rw');
+has 'db' => (is => 'ro', weak_ref => 1, required => 1);
+
#--------------------------------------------------------------------------
sub _initialize {
=cut
sub deserialize_abstract {
- my ($class, $serialized, $version) = @_;
+ my ($self, $serialized, $version) = @_;
my $thawed_hash;
if ($version < 2) {
# Version 2 didn't have the "created" key for REFERENCES items.
if ($version < 3) {
- my $standard = $class->new()->{abstract_schema};
+ my $standard = $self->new(db => $self->db)->{abstract_schema};
foreach my $table_name (keys %$thawed_hash) {
my %standard_fields = @{$standard->{$table_name}->{FIELDS} || []};
my $table = $thawed_hash->{$table_name};
}
}
- return $class->new(_abstract_schema => $thawed_hash);
+ return $self->new(db => $self->db, _abstract_schema => $thawed_hash);
}
#####################################################################
=cut
sub get_empty_schema {
- my ($class) = @_;
- return $class->deserialize_abstract(Dumper({}), SCHEMA_VERSION);
+ my ($self) = @_;
+ return $self->deserialize_abstract(Dumper({}), SCHEMA_VERSION);
}
1;
our @tables;
BEGIN {
- $schema = Bugzilla::DB::Schema::Mysql->new;
+ our $fake_db = bless {}, 'Bugzilla::DB';
+ $schema = Bugzilla::DB::Schema::Mysql->new(db => $fake_db);
@tables = $schema->get_table_list();
}