In progress commit
This commit is contained in:
parent
1d22da2bed
commit
bea1301475
19 changed files with 478 additions and 79 deletions
39
lib/Pear/LocalLoop/Schema/Result/ExternalReference.pm
Normal file
39
lib/Pear/LocalLoop/Schema/Result/ExternalReference.pm
Normal file
|
@ -0,0 +1,39 @@
|
|||
package Pear::LocalLoop::Schema::Result::ExternalReference;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
__PACKAGE__->table("external_references");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"name" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
},
|
||||
);
|
||||
|
||||
__PACKAGE__->set_primary_key("id");
|
||||
|
||||
__PACKAGE__->add_unique_constraint([ qw/name/ ]);
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
'transactions',
|
||||
"Pear::LocalLoop::Schema::Result::TransactionExternal",
|
||||
{ 'foreign.external_reference_id' => 'self.id' },
|
||||
);
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
'organisations',
|
||||
"Pear::LocalLoop::Schema::Result::OrganisationExternal",
|
||||
{ 'foreign.external_reference_id' => 'self.id' },
|
||||
);
|
||||
|
||||
1;
|
|
@ -10,76 +10,91 @@ __PACKAGE__->load_components("InflateColumn::DateTime", "FilterColumn");
|
|||
__PACKAGE__->table("organisations");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
id => {
|
||||
data_type => 'integer',
|
||||
id => {
|
||||
data_type => 'integer',
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
is_nullable => 0,
|
||||
},
|
||||
entity_id => {
|
||||
data_type => 'integer',
|
||||
is_nullable => 0,
|
||||
entity_id => {
|
||||
data_type => 'integer',
|
||||
is_nullable => 0,
|
||||
is_foreign_key => 1,
|
||||
},
|
||||
name => {
|
||||
data_type => 'varchar',
|
||||
size => 255,
|
||||
name => {
|
||||
data_type => 'varchar',
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
},
|
||||
street_name => {
|
||||
data_type => 'text',
|
||||
street_name => {
|
||||
data_type => 'text',
|
||||
is_nullable => 1,
|
||||
},
|
||||
town => {
|
||||
data_type => 'varchar',
|
||||
size => 255,
|
||||
town => {
|
||||
data_type => 'varchar',
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
},
|
||||
postcode => {
|
||||
data_type => 'varchar',
|
||||
size => 16,
|
||||
postcode => {
|
||||
data_type => 'varchar',
|
||||
size => 16,
|
||||
is_nullable => 1,
|
||||
},
|
||||
country => {
|
||||
data_type => 'varchar',
|
||||
size => 255,
|
||||
country => {
|
||||
data_type => 'varchar',
|
||||
size => 255,
|
||||
is_nullable => 1,
|
||||
},
|
||||
sector => {
|
||||
data_type => 'varchar',
|
||||
size => 1,
|
||||
sector => {
|
||||
data_type => 'varchar',
|
||||
size => 1,
|
||||
is_nullable => 1,
|
||||
},
|
||||
pending => {
|
||||
data_type => 'boolean',
|
||||
default => \"false",
|
||||
pending => {
|
||||
data_type => 'boolean',
|
||||
default => \"false",
|
||||
is_nullable => 0,
|
||||
},
|
||||
is_local => {
|
||||
data_type => 'boolean',
|
||||
default => undef,
|
||||
is_local => {
|
||||
data_type => 'boolean',
|
||||
default => undef,
|
||||
is_nullable => 1,
|
||||
},
|
||||
is_fair => {
|
||||
data_type => 'boolean',
|
||||
default => undef,
|
||||
is_fair => {
|
||||
data_type => 'boolean',
|
||||
default => undef,
|
||||
is_nullable => 1,
|
||||
},
|
||||
submitted_by_id => {
|
||||
data_type => 'integer',
|
||||
data_type => 'integer',
|
||||
is_nullable => 1,
|
||||
},
|
||||
latitude => {
|
||||
data_type => 'decimal',
|
||||
size => [8,5],
|
||||
is_nullable => 1,
|
||||
latitude => {
|
||||
data_type => 'decimal',
|
||||
size => [ 8, 5 ],
|
||||
is_nullable => 1,
|
||||
default_value => undef,
|
||||
},
|
||||
longitude => {
|
||||
data_type => 'decimal',
|
||||
size => [8,5],
|
||||
is_nullable => 1,
|
||||
longitude => {
|
||||
data_type => 'decimal',
|
||||
size => [ 8, 5 ],
|
||||
is_nullable => 1,
|
||||
default_value => undef,
|
||||
},
|
||||
type_id => {
|
||||
data_type => 'integer',
|
||||
is_nullable => 1,
|
||||
is_foreign_key => 1,
|
||||
},
|
||||
social_type_id => {
|
||||
data_type => 'integer',
|
||||
is_nullable => 1,
|
||||
is_foreign_key => 1,
|
||||
},
|
||||
is_anchor => {
|
||||
data_type => 'boolean',
|
||||
is_nullable => 0,
|
||||
default_value => \'FALSE',
|
||||
}
|
||||
);
|
||||
|
||||
__PACKAGE__->set_primary_key('id');
|
||||
|
@ -98,32 +113,37 @@ __PACKAGE__->has_many(
|
|||
);
|
||||
|
||||
__PACKAGE__->filter_column(
|
||||
pending => {
|
||||
pending => {
|
||||
filter_to_storage => 'to_bool',
|
||||
},
|
||||
is_local => {
|
||||
is_local => {
|
||||
filter_to_storage => 'to_bool',
|
||||
},
|
||||
is_anchor => {
|
||||
filter_to_storage => 'to_bool',
|
||||
}
|
||||
);
|
||||
|
||||
# Only works when calling ->deploy, but atleast helps for tests
|
||||
sub sqlt_deploy_hook {
|
||||
my ( $source_instance, $sqlt_table ) = @_;
|
||||
my ($source_instance, $sqlt_table) = @_;
|
||||
my $pending_field = $sqlt_table->get_field('pending');
|
||||
if ( $sqlt_table->schema->translator->producer_type =~ /SQLite$/ ) {
|
||||
if ($sqlt_table->schema->translator->producer_type =~ /SQLite$/) {
|
||||
$pending_field->{default_value} = 0;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
$pending_field->{default_value} = \"false";
|
||||
}
|
||||
}
|
||||
|
||||
sub to_bool {
|
||||
my ( $self, $val ) = @_;
|
||||
return if ! defined $val;
|
||||
my ($self, $val) = @_;
|
||||
return if !defined $val;
|
||||
my $driver_name = $self->result_source->schema->storage->dbh->{Driver}->{Name};
|
||||
if ( $driver_name eq 'SQLite' ) {
|
||||
if ($driver_name eq 'SQLite') {
|
||||
return $val ? 1 : 0;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return $val ? 'true' : 'false';
|
||||
}
|
||||
}
|
||||
|
|
49
lib/Pear/LocalLoop/Schema/Result/OrganisationExternal.pm
Normal file
49
lib/Pear/LocalLoop/Schema/Result/OrganisationExternal.pm
Normal file
|
@ -0,0 +1,49 @@
|
|||
package Pear::LocalLoop::Schema::Result::OrganisationExternal;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
__PACKAGE__->table("organisations_external");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"org_id" => {
|
||||
data_type => "integer",
|
||||
is_foreign_key => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"external_reference_id" => {
|
||||
data_type => "integer",
|
||||
is_foreign_key => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"external_id" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
}
|
||||
);
|
||||
|
||||
__PACKAGE__->set_primary_key("id");
|
||||
|
||||
__PACKAGE__->add_unique_constraint([ qw/external_reference_id external_id/ ]);
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"organisation",
|
||||
"Pear::LocalLoop::Schema::Result::Organisation",
|
||||
{ 'foreign.id' => 'self.org_id' },
|
||||
);
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"external_reference",
|
||||
"Pear::LocalLoop::Schema::Result::ExternalReference",
|
||||
{ 'foreign.id' => 'self.external_reference_id' },
|
||||
);
|
||||
|
||||
1;
|
39
lib/Pear/LocalLoop/Schema/Result/OrganisationSocialType.pm
Normal file
39
lib/Pear/LocalLoop/Schema/Result/OrganisationSocialType.pm
Normal file
|
@ -0,0 +1,39 @@
|
|||
package Pear::LocalLoop::Schema::Result::OrganisationSocialType;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
__PACKAGE__->table("organisation_social_types");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"key" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"name" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
}
|
||||
);
|
||||
|
||||
__PACKAGE__->set_primary_key("id");
|
||||
|
||||
__PACKAGE__->add_unique_constraint([ qw/key/ ]);
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"organisations",
|
||||
"Pear::LocalLoop::Schema::Result::Organisation",
|
||||
{ 'foreign.social_type_id' => 'self.id' },
|
||||
);
|
||||
|
||||
1;
|
||||
1;
|
38
lib/Pear/LocalLoop/Schema/Result/OrganisationType.pm
Normal file
38
lib/Pear/LocalLoop/Schema/Result/OrganisationType.pm
Normal file
|
@ -0,0 +1,38 @@
|
|||
package Pear::LocalLoop::Schema::Result::OrganisationType;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
__PACKAGE__->table("organisation_types");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"key" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"name" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
}
|
||||
);
|
||||
|
||||
__PACKAGE__->set_primary_key("id");
|
||||
|
||||
__PACKAGE__->add_unique_constraint([ qw/key/ ]);
|
||||
|
||||
__PACKAGE__->has_many(
|
||||
"organisations",
|
||||
"Pear::LocalLoop::Schema::Result::Organisation",
|
||||
{ 'foreign.type_id' => 'self.id' },
|
||||
);
|
||||
|
||||
1;
|
49
lib/Pear/LocalLoop/Schema/Result/TransactionExternal.pm
Normal file
49
lib/Pear/LocalLoop/Schema/Result/TransactionExternal.pm
Normal file
|
@ -0,0 +1,49 @@
|
|||
package Pear::LocalLoop::Schema::Result::TransactionExternal;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base 'DBIx::Class::Core';
|
||||
|
||||
__PACKAGE__->table("transactions_external");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"transaction_id" => {
|
||||
data_type => "integer",
|
||||
is_foreign_key => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"external_reference_id" => {
|
||||
data_type => "integer",
|
||||
is_foreign_key => 1,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"external_id" => {
|
||||
data_type => "varchar",
|
||||
size => 255,
|
||||
is_nullable => 0,
|
||||
}
|
||||
);
|
||||
|
||||
__PACKAGE__->set_primary_key("id");
|
||||
|
||||
__PACKAGE__->add_unique_constraint([ qw/external_reference_id external_id/ ]);
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"transaction",
|
||||
"Pear::LocalLoop::Schema::Result::Transaction",
|
||||
{ 'foreign.id' => 'self.transaction_id' },
|
||||
);
|
||||
|
||||
__PACKAGE__->belongs_to(
|
||||
"external_reference",
|
||||
"Pear::LocalLoop::Schema::Result::ExternalReference",
|
||||
{ 'foreign.id' => 'self.external_reference_id' },
|
||||
);
|
||||
|
||||
1;
|
|
@ -8,29 +8,29 @@ use base 'DBIx::Class::Core';
|
|||
__PACKAGE__->table("transactions_meta");
|
||||
|
||||
__PACKAGE__->add_columns(
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
"id" => {
|
||||
data_type => "integer",
|
||||
is_auto_increment => 1,
|
||||
is_nullable => 0,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"transaction_id" => {
|
||||
data_type => "integer",
|
||||
"transaction_id" => {
|
||||
data_type => "integer",
|
||||
is_foreign_key => 1,
|
||||
is_nullable => 0,
|
||||
is_nullable => 0,
|
||||
},
|
||||
"net_value" => {
|
||||
data_type => "numeric",
|
||||
size => [ 100, 0 ],
|
||||
"net_value" => {
|
||||
data_type => "numeric",
|
||||
size => [ 100, 0 ],
|
||||
is_nullable => 0,
|
||||
},
|
||||
"sales_tax_value" => {
|
||||
data_type => "numeric",
|
||||
size => [ 100, 0 ],
|
||||
data_type => "numeric",
|
||||
size => [ 100, 0 ],
|
||||
is_nullable => 0,
|
||||
},
|
||||
"gross_value" => {
|
||||
data_type => "numeric",
|
||||
size => [ 100, 0 ],
|
||||
"gross_value" => {
|
||||
data_type => "numeric",
|
||||
size => [ 100, 0 ],
|
||||
is_nullable => 0,
|
||||
},
|
||||
);
|
||||
|
@ -43,19 +43,4 @@ __PACKAGE__->belongs_to(
|
|||
{ 'foreign.id' => 'self.transaction_id' },
|
||||
);
|
||||
|
||||
__PACKAGE__->might_have(
|
||||
"category",
|
||||
"Pear::LocalLoop::Schema::Result::TransactionCategory" => "transaction_id",
|
||||
);
|
||||
|
||||
sub sqlt_deploy_hook {
|
||||
my ( $source_instance, $sqlt_table ) = @_;
|
||||
my $pending_field = $sqlt_table->get_field('essential');
|
||||
if ( $sqlt_table->schema->translator->producer_type =~ /SQLite$/ ) {
|
||||
$pending_field->{default_value} = 0;
|
||||
} else {
|
||||
$pending_field->{default_value} = \"false";
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
Reference in a new issue