Add code formatter, format all code

This commit is contained in:
Rumperuu 2021-03-20 12:09:50 +00:00
parent 602a59f1c3
commit 47a55f6322
120 changed files with 8061 additions and 6967 deletions

View file

@ -8,16 +8,16 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("account_tokens");
__PACKAGE__->add_columns(
"id",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"name",
{ data_type => "text", is_nullable => 0 },
"used",
{ data_type => "integer", default_value => 0, is_nullable => 0 },
"id",
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
"name",
{ data_type => "text", is_nullable => 0 },
"used",
{ data_type => "integer", default_value => 0, is_nullable => 0 },
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["name"]);
__PACKAGE__->add_unique_constraint( ["name"] );
1;

View file

@ -8,39 +8,37 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("category");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
# See here for all possible options http://simplelineicons.com/
"line_icon" => {
data_type => "varchar",
size => 255,
is_nullable => 1,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
# See here for all possible options http://simplelineicons.com/
"line_icon" => {
data_type => "varchar",
size => 255,
is_nullable => 1,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["name"]);
__PACKAGE__->add_unique_constraint( ["name"] );
__PACKAGE__->has_many(
"transaction_category",
"Pear::LocalLoop::Schema::Result::TransactionCategory",
{ "foreign.category_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 1 },
"transaction_category",
"Pear::LocalLoop::Schema::Result::TransactionCategory",
{ "foreign.category_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 1 },
);
__PACKAGE__->many_to_many(
"transactions",
"transaction_category",
"transaction",
);
__PACKAGE__->many_to_many( "transactions", "transaction_category",
"transaction", );
1;

View file

@ -8,55 +8,52 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("customers");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
is_foreign_key => 1,
},
"display_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"full_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"year_of_birth" => {
data_type => "integer",
is_nullable => 0,
},
"postcode" => {
data_type => "varchar",
size => 16,
is_nullable => 0,
},
latitude => {
data_type => 'decimal',
size => [5,2],
is_nullable => 1,
default_value => undef,
},
longitude => {
data_type => 'decimal',
size => [5,2],
is_nullable => 1,
default_value => undef,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
is_foreign_key => 1,
},
"display_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"full_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"year_of_birth" => {
data_type => "integer",
is_nullable => 0,
},
"postcode" => {
data_type => "varchar",
size => 16,
is_nullable => 0,
},
latitude => {
data_type => 'decimal',
size => [ 5, 2 ],
is_nullable => 1,
default_value => undef,
},
longitude => {
data_type => 'decimal',
size => [ 5, 2 ],
is_nullable => 1,
default_value => undef,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
1;

View file

@ -8,37 +8,37 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("device_subscriptions");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"device_token_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"topic_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"device_token_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"topic_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"device_token",
"Pear::LocalLoop::Schema::Result::DeviceToken",
"device_token_id",
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"device_token",
"Pear::LocalLoop::Schema::Result::DeviceToken",
"device_token_id",
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"topic",
"Pear::LocalLoop::Schema::Result::Topic",
"topic_id",
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"topic",
"Pear::LocalLoop::Schema::Result::Topic",
"topic_id",
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -5,52 +5,54 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components( qw/
InflateColumn::DateTime
TimeStamp
FilterColumn
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
FilterColumn
/
);
__PACKAGE__->table("device_tokens");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"user_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"token" => {
data_type => "varchar",
size => 200,
is_nullable => 0,
},
"register_date" => {
data_type => "datetime",
set_on_create => 1,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"user_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"token" => {
data_type => "varchar",
size => 200,
is_nullable => 0,
},
"register_date" => {
data_type => "datetime",
set_on_create => 1,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"user",
"Pear::LocalLoop::Schema::Result::User",
{ id => "user_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"user",
"Pear::LocalLoop::Schema::Result::User",
{ id => "user_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->has_many(
"device_subscriptions",
"Pear::LocalLoop::Schema::Result::DeviceSubscription",
{ "foreign.device_token_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"device_subscriptions",
"Pear::LocalLoop::Schema::Result::DeviceSubscription",
{ "foreign.device_token_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->many_to_many('topics' => 'device_subscriptions', 'topic');
__PACKAGE__->many_to_many( 'topics' => 'device_subscriptions', 'topic' );
1;

View file

@ -8,109 +8,103 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("entities");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"type" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"type" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->might_have(
"customer",
"Pear::LocalLoop::Schema::Result::Customer" => "entity_id",
);
__PACKAGE__->might_have( "customer",
"Pear::LocalLoop::Schema::Result::Customer" => "entity_id", );
__PACKAGE__->might_have(
"organisation",
"Pear::LocalLoop::Schema::Result::Organisation" => "entity_id",
);
__PACKAGE__->might_have( "organisation",
"Pear::LocalLoop::Schema::Result::Organisation" => "entity_id", );
__PACKAGE__->might_have(
"user",
"Pear::LocalLoop::Schema::Result::User" => "entity_id",
);
__PACKAGE__->might_have( "user",
"Pear::LocalLoop::Schema::Result::User" => "entity_id", );
__PACKAGE__->might_have(
"associations",
"Pear::LocalLoop::Schema::Result::EntityAssociation" => "entity_id",
);
__PACKAGE__->might_have( "associations",
"Pear::LocalLoop::Schema::Result::EntityAssociation" => "entity_id", );
__PACKAGE__->might_have(
"postcode",
"Pear::LocalLoop::Schema::Result::EntityPostcode" => "entity_id",
__PACKAGE__->might_have( "postcode",
"Pear::LocalLoop::Schema::Result::EntityPostcode" => "entity_id", );
__PACKAGE__->has_many(
"purchases",
"Pear::LocalLoop::Schema::Result::Transaction",
{ "foreign.buyer_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"purchases",
"Pear::LocalLoop::Schema::Result::Transaction",
{ "foreign.buyer_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"sales",
"Pear::LocalLoop::Schema::Result::Transaction",
{ "foreign.seller_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"sales",
"Pear::LocalLoop::Schema::Result::Transaction",
{ "foreign.seller_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"global_user_medals",
"Pear::LocalLoop::Schema::Result::GlobalUserMedals",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"global_user_medals",
"Pear::LocalLoop::Schema::Result::GlobalUserMedals",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"global_user_medal_progress",
"Pear::LocalLoop::Schema::Result::GlobalUserMedalProgress",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"global_user_medal_progress",
"Pear::LocalLoop::Schema::Result::GlobalUserMedalProgress",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"org_user_medals",
"Pear::LocalLoop::Schema::Result::OrgUserMedals",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"org_user_medals",
"Pear::LocalLoop::Schema::Result::OrgUserMedals",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"org_user_medal_progress",
"Pear::LocalLoop::Schema::Result::OrgUserMedalProgress",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"org_user_medal_progress",
"Pear::LocalLoop::Schema::Result::OrgUserMedalProgress",
{ "foreign.entity_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
sub name {
my $self = shift;
my $self = shift;
if ( $self->type eq 'customer' ) {
return $self->customer->display_name;
} elsif ( $self->type eq 'organisation' ) {
return $self->organisation->name;
} else {
return "Unknown Name";
}
if ( $self->type eq 'customer' ) {
return $self->customer->display_name;
}
elsif ( $self->type eq 'organisation' ) {
return $self->organisation->name;
}
else {
return "Unknown Name";
}
}
sub type_object {
my $self = shift;
my $self = shift;
if ( $self->type eq 'customer' ) {
return $self->customer;
} elsif ( $self->type eq 'organisation' ) {
return $self->organisation;
} else {
return;
}
if ( $self->type eq 'customer' ) {
return $self->customer;
}
elsif ( $self->type eq 'organisation' ) {
return $self->organisation;
}
else {
return;
}
}
1;

View file

@ -8,32 +8,29 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("entity_association");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
"lis" => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
"esta" => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
"lis" => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
"esta" => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );

View file

@ -8,37 +8,34 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table('entities_postcodes');
__PACKAGE__->add_columns(
outcode => {
data_type => 'char',
size => 4,
is_nullable => 0,
},
incode => {
data_type => 'char',
size => 3,
is_nullable => 0,
},
entity_id => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
outcode => {
data_type => 'char',
size => 4,
is_nullable => 0,
},
incode => {
data_type => 'char',
size => 3,
is_nullable => 0,
},
entity_id => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
);
__PACKAGE__->set_primary_key(qw/ outcode incode entity_id /);
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->belongs_to(
"gb_postcode",
"Pear::LocalLoop::Schema::Result::GbPostcode",
{
"foreign.outcode" => "self.outcode",
"foreign.incode" => "self.incode",
},
"gb_postcode",
"Pear::LocalLoop::Schema::Result::GbPostcode",
{
"foreign.outcode" => "self.outcode",
"foreign.incode" => "self.incode",
},
);
1;

View file

@ -8,32 +8,32 @@ 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,
},
"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__->add_unique_constraint( [qw/name/] );
__PACKAGE__->has_many(
'transactions',
"Pear::LocalLoop::Schema::Result::TransactionExternal",
{ 'foreign.external_reference_id' => 'self.id' },
'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' },
'organisations',
"Pear::LocalLoop::Schema::Result::OrganisationExternal",
{ 'foreign.external_reference_id' => 'self.id' },
);
1;
1;

View file

@ -7,81 +7,87 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("feedback");
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
FilterColumn
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
FilterColumn
/
);
__PACKAGE__->add_columns(
"id",
{
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0
},
"user_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"submitted_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"feedbacktext" => {
data_type => "text",
is_nullable => 0,
},
"app_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"package_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"version_code" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"version_number" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"actioned" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
"id",
{
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0
},
"user_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"submitted_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"feedbacktext" => {
data_type => "text",
is_nullable => 0,
},
"app_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"package_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"version_code" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"version_number" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"actioned" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"user",
"Pear::LocalLoop::Schema::Result::User",
{ id => "user_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"user",
"Pear::LocalLoop::Schema::Result::User",
{ id => "user_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->filter_column( actioned => {
filter_to_storage => 'to_bool',
});
__PACKAGE__->filter_column(
actioned => {
filter_to_storage => 'to_bool',
}
);
sub to_bool {
my ( $self, $val ) = @_;
my $driver_name = $self->result_source->schema->storage->dbh->{Driver}->{Name};
if ( $driver_name eq 'SQLite' ) {
return $val ? 1 : 0;
} else {
return $val ? 'true' : 'false';
}
my ( $self, $val ) = @_;
my $driver_name =
$self->result_source->schema->storage->dbh->{Driver}->{Name};
if ( $driver_name eq 'SQLite' ) {
return $val ? 1 : 0;
}
else {
return $val ? 'true' : 'false';
}
}
1;

View file

@ -8,42 +8,39 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table('gb_postcodes');
__PACKAGE__->add_columns(
outcode => {
data_type => 'char',
size => 4,
is_nullable => 0,
},
incode => {
data_type => 'char',
size => 3,
is_nullable => 0,
default_value => '',
},
latitude => {
data_type => 'decimal',
size => [7,5],
is_nullable => 1,
default_value => undef,
},
longitude => {
data_type => 'decimal',
size => [7,5],
is_nullable => 1,
default_value => undef,
},
ward_id => {
data_type => 'integer',
is_nullable => 1,
default_value => undef,
},
outcode => {
data_type => 'char',
size => 4,
is_nullable => 0,
},
incode => {
data_type => 'char',
size => 3,
is_nullable => 0,
default_value => '',
},
latitude => {
data_type => 'decimal',
size => [ 7, 5 ],
is_nullable => 1,
default_value => undef,
},
longitude => {
data_type => 'decimal',
size => [ 7, 5 ],
is_nullable => 1,
default_value => undef,
},
ward_id => {
data_type => 'integer',
is_nullable => 1,
default_value => undef,
},
);
__PACKAGE__->set_primary_key(qw/ outcode incode /);
__PACKAGE__->belongs_to(
"ward",
"Pear::LocalLoop::Schema::Result::GbWard",
"ward_id",
);
__PACKAGE__->belongs_to( "ward", "Pear::LocalLoop::Schema::Result::GbWard",
"ward_id", );
1;

View file

@ -8,25 +8,25 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table('gb_wards');
__PACKAGE__->add_columns(
id => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
ward => {
data_type => 'varchar',
size => 100,
is_nullable => 0,
},
id => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
ward => {
data_type => 'varchar',
size => 100,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key(qw/ id /);
__PACKAGE__->has_many(
"postcodes",
"Pear::LocalLoop::Schema::Result::GbPostcode",
{ "foreign.ward_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"postcodes",
"Pear::LocalLoop::Schema::Result::GbPostcode",
{ "foreign.ward_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
1;

View file

@ -8,27 +8,27 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("global_medal_group");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["group_name"]);
__PACKAGE__->add_unique_constraint( ["group_name"] );
__PACKAGE__->has_many(
"medals",
"Pear::LocalLoop::Schema::Result::GlobalMedals",
{ "foreign.group_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"medals",
"Pear::LocalLoop::Schema::Result::GlobalMedals",
{ "foreign.group_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
1;

View file

@ -8,32 +8,32 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("global_medals");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"group",
"Pear::LocalLoop::Schema::Result::GlobalMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"group",
"Pear::LocalLoop::Schema::Result::GlobalMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -8,38 +8,35 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("global_user_medal_progress");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"total" => {
data_type => "integer",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"total" => {
data_type => "integer",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->belongs_to(
"group",
"Pear::LocalLoop::Schema::Result::GlobalMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"group",
"Pear::LocalLoop::Schema::Result::GlobalMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -5,55 +5,54 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
/
);
__PACKAGE__->table("global_user_medals");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
"awarded_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
"awarded_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->belongs_to(
"group",
"Pear::LocalLoop::Schema::Result::GlobalMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"group",
"Pear::LocalLoop::Schema::Result::GlobalMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -8,50 +8,50 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("import_lookups");
__PACKAGE__->add_columns(
id => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
set_id => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
name => {
data_type => "varchar",
size => 255,
},
entity_id => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
id => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
set_id => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
name => {
data_type => "varchar",
size => 255,
},
entity_id => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"import_set",
"Pear::LocalLoop::Schema::Result::ImportSet",
{ "foreign.id" => "self.set_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"import_set",
"Pear::LocalLoop::Schema::Result::ImportSet",
{ "foreign.id" => "self.set_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
{ "foreign.id" => "self.entity_id" },
{
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
{ "foreign.id" => "self.entity_id" },
{
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
1;

View file

@ -5,40 +5,42 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components( qw/
InflateColumn::DateTime
TimeStamp
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
/
);
__PACKAGE__->table("import_sets");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"date" => {
data_type => "datetime",
set_on_create => 1,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"date" => {
data_type => "datetime",
set_on_create => 1,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->has_many(
"values",
"Pear::LocalLoop::Schema::Result::ImportValue",
{ "foreign.set_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"values",
"Pear::LocalLoop::Schema::Result::ImportValue",
{ "foreign.set_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"lookups",
"Pear::LocalLoop::Schema::Result::ImportLookup",
{ "foreign.set_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"lookups",
"Pear::LocalLoop::Schema::Result::ImportLookup",
{ "foreign.set_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
1;

View file

@ -5,74 +5,76 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components( qw/
InflateColumn::DateTime
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
/
);
__PACKAGE__->table("import_values");
__PACKAGE__->add_columns(
id => {
data_type => 'integer',
is_auto_increment => 1,
is_nullable => 0,
},
set_id => {
data_type => 'integer',
is_foreign_key => 1,
is_nullable => 0,
},
user_name => {
data_type => 'varchar',
size => 255,
},
purchase_date => {
data_type => "datetime",
is_nullable => 0,
},
purchase_value => {
data_type => 'varchar',
size => 255,
},
org_name => {
data_type => 'varchar',
size => 255,
},
transaction_id => {
data_type => 'integer',
is_foreign_key => 1,
is_nullable => 1,
},
ignore_value => {
data_type => 'boolean',
default_value => \'false',
is_nullable => 0,
},
id => {
data_type => 'integer',
is_auto_increment => 1,
is_nullable => 0,
},
set_id => {
data_type => 'integer',
is_foreign_key => 1,
is_nullable => 0,
},
user_name => {
data_type => 'varchar',
size => 255,
},
purchase_date => {
data_type => "datetime",
is_nullable => 0,
},
purchase_value => {
data_type => 'varchar',
size => 255,
},
org_name => {
data_type => 'varchar',
size => 255,
},
transaction_id => {
data_type => 'integer',
is_foreign_key => 1,
is_nullable => 1,
},
ignore_value => {
data_type => 'boolean',
default_value => \'false',
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"import_set",
"Pear::LocalLoop::Schema::Result::ImportSet",
{ "foreign.id" => "self.set_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"import_set",
"Pear::LocalLoop::Schema::Result::ImportSet",
{ "foreign.id" => "self.set_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
__PACKAGE__->belongs_to(
"transaction",
"Pear::LocalLoop::Schema::Result::Transaction",
{ "foreign.id" => "self.transaction_id" },
{
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"transaction",
"Pear::LocalLoop::Schema::Result::Transaction",
{ "foreign.id" => "self.transaction_id" },
{
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
1;

View file

@ -10,242 +10,271 @@ use DateTime;
__PACKAGE__->table("leaderboards");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"type" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"type" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["type"]);
__PACKAGE__->add_unique_constraint( ["type"] );
__PACKAGE__->has_many(
"sets",
"Pear::LocalLoop::Schema::Result::LeaderboardSet",
{ "foreign.leaderboard_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"sets",
"Pear::LocalLoop::Schema::Result::LeaderboardSet",
{ "foreign.leaderboard_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
sub create_new {
my $self = shift;
my $start = shift;
my $self = shift;
my $start = shift;
my $type = $self->type;
my $type = $self->type;
if ( $type eq 'daily_total' ) {
return $self->_create_total_set( $start, $start->clone->add( days => 1 ) );
} elsif ( $type eq 'weekly_total' ) {
return $self->_create_total_set( $start, $start->clone->add( days => 7 ) );
} elsif ( $type eq 'monthly_total' ) {
return $self->_create_total_set( $start, $start->clone->add( months => 1 ) );
} elsif ( $type eq 'all_time_total' ) {
return $self->_create_total_all_time( $start );
} elsif ( $type eq 'daily_count' ) {
return $self->_create_count_set( $start, $start->clone->add( days => 1 ) );
} elsif ( $type eq 'weekly_count' ) {
return $self->_create_count_set( $start, $start->clone->add( days => 7 ) );
} elsif ( $type eq 'monthly_count' ) {
return $self->_create_count_set( $start, $start->clone->add( months => 1 ) );
} elsif ( $type eq 'all_time_count' ) {
return $self->_create_count_all_time( $start );
}
warn "Unrecognised type";
return $self;
if ( $type eq 'daily_total' ) {
return $self->_create_total_set( $start,
$start->clone->add( days => 1 ) );
}
elsif ( $type eq 'weekly_total' ) {
return $self->_create_total_set( $start,
$start->clone->add( days => 7 ) );
}
elsif ( $type eq 'monthly_total' ) {
return $self->_create_total_set( $start,
$start->clone->add( months => 1 ) );
}
elsif ( $type eq 'all_time_total' ) {
return $self->_create_total_all_time($start);
}
elsif ( $type eq 'daily_count' ) {
return $self->_create_count_set( $start,
$start->clone->add( days => 1 ) );
}
elsif ( $type eq 'weekly_count' ) {
return $self->_create_count_set( $start,
$start->clone->add( days => 7 ) );
}
elsif ( $type eq 'monthly_count' ) {
return $self->_create_count_set( $start,
$start->clone->add( months => 1 ) );
}
elsif ( $type eq 'all_time_count' ) {
return $self->_create_count_all_time($start);
}
warn "Unrecognised type";
return $self;
}
sub _get_customer_rs {
my $self = shift;
return $self->result_source->schema->resultset('Entity')->search({
type => 'customer',
});
my $self = shift;
return $self->result_source->schema->resultset('Entity')->search(
{
type => 'customer',
}
);
}
sub _set_position_and_trend {
my ( $self, @leaderboard ) = @_;
my ( $self, @leaderboard ) = @_;
# Sort numerically descending
@leaderboard = sort { $b->{value} <=> $a->{value} } @leaderboard;
# Sort numerically descending
@leaderboard = sort { $b->{value} <=> $a->{value} } @leaderboard;
my $position = 0;
my $position = 0;
my $previous_board = $self->get_latest;
if ( defined $previous_board ) {
$previous_board = $previous_board->values;
}
for my $lb_val ( @leaderboard ) {
$position++;
$lb_val->{position} = $position;
my $previous_value;
my $previous_board = $self->get_latest;
if ( defined $previous_board ) {
$previous_value = $previous_board->find({ entity_id => $lb_val->{entity_id} });
$previous_board = $previous_board->values;
}
my $trend;
for my $lb_val (@leaderboard) {
$position++;
$lb_val->{position} = $position;
if ( ! defined $previous_value ) {
$trend = 0;
} elsif ( $previous_value->position > $position ) {
$trend = -1;
} elsif ( $previous_value->position < $position ) {
$trend = 1;
} else {
$trend = 0;
my $previous_value;
if ( defined $previous_board ) {
$previous_value =
$previous_board->find( { entity_id => $lb_val->{entity_id} } );
}
my $trend;
if ( !defined $previous_value ) {
$trend = 0;
}
elsif ( $previous_value->position > $position ) {
$trend = -1;
}
elsif ( $previous_value->position < $position ) {
$trend = 1;
}
else {
$trend = 0;
}
$lb_val->{trend} = $trend;
}
$lb_val->{trend} = $trend;
}
return @leaderboard;
return @leaderboard;
}
sub _create_total_set {
my ( $self, $start, $end ) = @_;
my ( $self, $start, $end ) = @_;
my $user_rs = $self->_get_customer_rs;
my $user_rs = $self->_get_customer_rs;
my @leaderboard;
my @leaderboard;
while ( my $user_result = $user_rs->next ) {
my $transaction_rs = $user_result->purchases->search_between( $start, $end );
while ( my $user_result = $user_rs->next ) {
my $transaction_rs =
$user_result->purchases->search_between( $start, $end );
my $transaction_sum = $transaction_rs->get_column('value')->sum;
my $transaction_sum = $transaction_rs->get_column('value')->sum;
push @leaderboard, {
entity_id => $user_result->id,
value => $transaction_sum || 0,
};
}
push @leaderboard,
{
entity_id => $user_result->id,
value => $transaction_sum || 0,
};
}
@leaderboard = $self->_set_position_and_trend(@leaderboard);
@leaderboard = $self->_set_position_and_trend(@leaderboard);
$self->create_related(
'sets',
{
date => $start,
values => \@leaderboard,
},
);
$self->create_related(
'sets',
{
date => $start,
values => \@leaderboard,
},
);
return $self;
return $self;
}
sub _create_count_set {
my ( $self, $start, $end ) = @_;
my ( $self, $start, $end ) = @_;
my $user_rs = $self->_get_customer_rs;
my $user_rs = $self->_get_customer_rs;
my @leaderboard;
my @leaderboard;
while ( my $user_result = $user_rs->next ) {
my $transaction_rs = $user_result->purchases->search_between( $start, $end );
while ( my $user_result = $user_rs->next ) {
my $transaction_rs =
$user_result->purchases->search_between( $start, $end );
my $transaction_count = $transaction_rs->count;
my $transaction_count = $transaction_rs->count;
push @leaderboard, {
entity_id => $user_result->id,
value => $transaction_count || 0,
};
}
push @leaderboard,
{
entity_id => $user_result->id,
value => $transaction_count || 0,
};
}
@leaderboard = $self->_set_position_and_trend(@leaderboard);
@leaderboard = $self->_set_position_and_trend(@leaderboard);
$self->create_related(
'sets',
{
date => $start,
values => \@leaderboard,
},
);
$self->create_related(
'sets',
{
date => $start,
values => \@leaderboard,
},
);
return $self;
return $self;
}
sub _create_total_all_time {
my ( $self, $end ) = @_;
my ( $self, $end ) = @_;
my $user_rs = $self->_get_customer_rs;
my @leaderboard;
my $user_rs = $self->_get_customer_rs;
while ( my $user_result = $user_rs->next ) {
my $transaction_rs = $user_result->purchases->search_before( $end );
my @leaderboard;
my $transaction_sum = $transaction_rs->get_column('value')->sum;
while ( my $user_result = $user_rs->next ) {
my $transaction_rs = $user_result->purchases->search_before($end);
push @leaderboard, {
entity_id => $user_result->id,
value => $transaction_sum || 0,
};
}
my $transaction_sum = $transaction_rs->get_column('value')->sum;
@leaderboard = $self->_set_position_and_trend(@leaderboard);
push @leaderboard,
{
entity_id => $user_result->id,
value => $transaction_sum || 0,
};
}
$self->create_related(
'sets',
{
date => $end,
values => \@leaderboard,
},
);
@leaderboard = $self->_set_position_and_trend(@leaderboard);
return $self;
$self->create_related(
'sets',
{
date => $end,
values => \@leaderboard,
},
);
return $self;
}
sub _create_count_all_time {
my ( $self, $end ) = @_;
my ( $self, $end ) = @_;
my $user_rs = $self->_get_customer_rs;
my $user_rs = $self->_get_customer_rs;
my @leaderboard;
my @leaderboard;
while ( my $user_result = $user_rs->next ) {
my $transaction_rs = $user_result->purchases->search_before( $end );
while ( my $user_result = $user_rs->next ) {
my $transaction_rs = $user_result->purchases->search_before($end);
my $transaction_count = $transaction_rs->count;
my $transaction_count = $transaction_rs->count;
push @leaderboard, {
entity_id => $user_result->id,
value => $transaction_count || 0,
};
}
push @leaderboard,
{
entity_id => $user_result->id,
value => $transaction_count || 0,
};
}
@leaderboard = $self->_set_position_and_trend(@leaderboard);
@leaderboard = $self->_set_position_and_trend(@leaderboard);
$self->create_related(
'sets',
{
date => $end,
values => \@leaderboard,
},
);
$self->create_related(
'sets',
{
date => $end,
values => \@leaderboard,
},
);
return $self;
return $self;
}
sub get_latest {
my $self = shift;
my $self = shift;
my $latest = $self->search_related('sets', {}, {
order_by => { -desc => 'date' },
})->first;
my $latest = $self->search_related(
'sets',
{},
{
order_by => { -desc => 'date' },
}
)->first;
return $latest;
return $latest;
}
1;

View file

@ -5,48 +5,50 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components( qw/
InflateColumn::DateTime
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
/
);
__PACKAGE__->table("leaderboard_sets");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"leaderboard_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"date" => {
data_type => "datetime",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"leaderboard_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"date" => {
data_type => "datetime",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"leaderboard",
"Pear::LocalLoop::Schema::Result::Leaderboard",
{ "foreign.id" => "self.leaderboard_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"leaderboard",
"Pear::LocalLoop::Schema::Result::Leaderboard",
{ "foreign.id" => "self.leaderboard_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
__PACKAGE__->has_many(
"values",
"Pear::LocalLoop::Schema::Result::LeaderboardValue",
{ "foreign.set_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"values",
"Pear::LocalLoop::Schema::Result::LeaderboardValue",
{ "foreign.set_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
1;

View file

@ -8,62 +8,62 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("leaderboard_values");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"set_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"position" => {
data_type => "integer",
is_nullable => 0,
},
"value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"trend" => {
data_type => "integer",
default_value => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"set_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"position" => {
data_type => "integer",
is_nullable => 0,
},
"value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"trend" => {
data_type => "integer",
default_value => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint([qw/ entity_id set_id /]);
__PACKAGE__->add_unique_constraint( [qw/ entity_id set_id /] );
__PACKAGE__->belongs_to(
"set",
"Pear::LocalLoop::Schema::Result::LeaderboardSet",
{ "foreign.id" => "self.set_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"set",
"Pear::LocalLoop::Schema::Result::LeaderboardSet",
{ "foreign.id" => "self.set_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
{ "foreign.id" => "self.entity_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
{ "foreign.id" => "self.entity_id" },
{
is_deferrable => 0,
join_type => "LEFT",
on_delete => "NO ACTION",
on_update => "NO ACTION",
},
);
1;

View file

@ -8,27 +8,27 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("org_medal_group");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_name" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["group_name"]);
__PACKAGE__->add_unique_constraint( ["group_name"] );
__PACKAGE__->has_many(
"medals",
"Pear::LocalLoop::Schema::Result::OrgMedals",
{ "foreign.group_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"medals",
"Pear::LocalLoop::Schema::Result::OrgMedals",
{ "foreign.group_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
1;

View file

@ -8,32 +8,32 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("org_medals");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"group",
"Pear::LocalLoop::Schema::Result::OrgMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"group",
"Pear::LocalLoop::Schema::Result::OrgMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -8,38 +8,35 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("org_user_medal_progress");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"total" => {
data_type => "integer",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"total" => {
data_type => "integer",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->belongs_to(
"group",
"Pear::LocalLoop::Schema::Result::OrgMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"group",
"Pear::LocalLoop::Schema::Result::OrgMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -5,55 +5,54 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
/
);
__PACKAGE__->table("org_user_medals");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
"awarded_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_nullable => 0,
},
"group_id" => {
data_type => "integer",
is_nullable => 0,
},
"points" => {
data_type => "integer",
is_nullable => 0,
},
"awarded_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"threshold" => {
data_type => "integer",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->belongs_to(
"group",
"Pear::LocalLoop::Schema::Result::OrgMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"group",
"Pear::LocalLoop::Schema::Result::OrgMedalGroup",
{ id => "group_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -5,172 +5,166 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components("InflateColumn::DateTime", "FilterColumn");
__PACKAGE__->load_components( "InflateColumn::DateTime", "FilterColumn" );
__PACKAGE__->table("organisations");
__PACKAGE__->add_columns(
id => {
data_type => 'integer',
is_auto_increment => 1,
is_nullable => 0,
},
entity_id => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
name => {
data_type => 'varchar',
size => 255,
is_nullable => 0,
},
street_name => {
data_type => 'text',
is_nullable => 1,
},
town => {
data_type => 'varchar',
size => 255,
is_nullable => 0,
},
postcode => {
data_type => 'varchar',
size => 16,
is_nullable => 1,
},
country => {
data_type => 'varchar',
size => 255,
is_nullable => 1,
},
# Stores codes based on https://www.ons.gov.uk/methodology/classificationsandstandards/ukstandardindustrialclassificationofeconomicactivities/uksic2007
sector => {
data_type => 'varchar',
size => 1,
is_nullable => 1,
},
pending => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
is_local => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
is_fair => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
submitted_by_id => {
data_type => 'integer',
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,
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',
}
id => {
data_type => 'integer',
is_auto_increment => 1,
is_nullable => 0,
},
entity_id => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
name => {
data_type => 'varchar',
size => 255,
is_nullable => 0,
},
street_name => {
data_type => 'text',
is_nullable => 1,
},
town => {
data_type => 'varchar',
size => 255,
is_nullable => 0,
},
postcode => {
data_type => 'varchar',
size => 16,
is_nullable => 1,
},
country => {
data_type => 'varchar',
size => 255,
is_nullable => 1,
},
# Stores codes based on https://www.ons.gov.uk/methodology/classificationsandstandards/ukstandardindustrialclassificationofeconomicactivities/uksic2007
sector => {
data_type => 'varchar',
size => 1,
is_nullable => 1,
},
pending => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
is_local => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
is_fair => {
data_type => 'boolean',
default_value => undef,
is_nullable => 1,
},
submitted_by_id => {
data_type => 'integer',
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,
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');
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
);
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->belongs_to(
"organisation_type",
"Pear::LocalLoop::Schema::Result::OrganisationType",
"type_id",
);
__PACKAGE__->belongs_to( "organisation_type",
"Pear::LocalLoop::Schema::Result::OrganisationType", "type_id", );
__PACKAGE__->belongs_to(
"social_type",
"Pear::LocalLoop::Schema::Result::OrganisationSocialType",
"social_type_id",
__PACKAGE__->belongs_to( "social_type",
"Pear::LocalLoop::Schema::Result::OrganisationSocialType",
"social_type_id", );
__PACKAGE__->has_many(
"external_reference",
"Pear::LocalLoop::Schema::Result::OrganisationExternal",
{ 'foreign.org_id' => 'self.id' },
);
__PACKAGE__->has_many(
"external_reference",
"Pear::LocalLoop::Schema::Result::OrganisationExternal",
{ 'foreign.org_id' => 'self.id' },
);
__PACKAGE__->has_many(
"payroll",
"Pear::LocalLoop::Schema::Result::OrganisationPayroll",
{ "foreign.org_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"payroll",
"Pear::LocalLoop::Schema::Result::OrganisationPayroll",
{ "foreign.org_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->filter_column(
pending => {
filter_to_storage => 'to_bool',
},
is_local => {
filter_to_storage => 'to_bool',
},
is_anchor => {
filter_to_storage => 'to_bool',
}
pending => {
filter_to_storage => 'to_bool',
},
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 $pending_field = $sqlt_table->get_field('pending');
if ($sqlt_table->schema->translator->producer_type =~ /SQLite$/) {
$pending_field->{default_value} = 0;
}
else {
$pending_field->{default_value} = \"false";
}
my ( $source_instance, $sqlt_table ) = @_;
my $pending_field = $sqlt_table->get_field('pending');
if ( $sqlt_table->schema->translator->producer_type =~ /SQLite$/ ) {
$pending_field->{default_value} = 0;
}
else {
$pending_field->{default_value} = \"false";
}
}
sub to_bool {
my ($self, $val) = @_;
return if !defined $val;
my $driver_name = $self->result_source->schema->storage->dbh->{Driver}->{Name};
if ($driver_name eq 'SQLite') {
return $val ? 1 : 0;
}
else {
return $val ? 'true' : 'false';
}
my ( $self, $val ) = @_;
return if !defined $val;
my $driver_name =
$self->result_source->schema->storage->dbh->{Driver}->{Name};
if ( $driver_name eq 'SQLite' ) {
return $val ? 1 : 0;
}
else {
return $val ? 'true' : 'false';
}
}
sub user {
my $self = shift;
my $self = shift;
return $self->entity->user;
return $self->entity->user;
}
1;

View file

@ -8,42 +8,42 @@ 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,
}
"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__->add_unique_constraint( [qw/external_reference_id external_id/] );
__PACKAGE__->belongs_to(
"organisation",
"Pear::LocalLoop::Schema::Result::Organisation",
{ 'foreign.id' => 'self.org_id' },
"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' },
"external_reference",
"Pear::LocalLoop::Schema::Result::ExternalReference",
{ 'foreign.id' => 'self.external_reference_id' },
);
1;
1;

View file

@ -5,79 +5,78 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
/
);
__PACKAGE__->table("organisation_payroll");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"org_id" => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
"submitted_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"entry_period" => {
data_type => "datetime",
is_nullable => 0,
},
"employee_amount" => {
data_type => "integer",
is_nullable => 0,
},
"local_employee_amount" => {
data_type => "integer",
is_nullable => 0,
},
"gross_payroll" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_income_tax" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_employee_ni" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_employer_ni" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_total_pension" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_other_benefit" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"org_id" => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
"submitted_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"entry_period" => {
data_type => "datetime",
is_nullable => 0,
},
"employee_amount" => {
data_type => "integer",
is_nullable => 0,
},
"local_employee_amount" => {
data_type => "integer",
is_nullable => 0,
},
"gross_payroll" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_income_tax" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_employee_ni" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_employer_ni" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_total_pension" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"payroll_other_benefit" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"organisation",
"Pear::LocalLoop::Schema::Result::Organisation",
"org_id",
);
__PACKAGE__->belongs_to( "organisation",
"Pear::LocalLoop::Schema::Result::Organisation", "org_id", );
1;

View file

@ -8,32 +8,32 @@ 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,
}
"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__->add_unique_constraint( [qw/key/] );
__PACKAGE__->has_many(
"organisations",
"Pear::LocalLoop::Schema::Result::Organisation",
{ 'foreign.social_type_id' => 'self.id' },
"organisations",
"Pear::LocalLoop::Schema::Result::Organisation",
{ 'foreign.social_type_id' => 'self.id' },
);
1;
1;
1;

View file

@ -8,31 +8,31 @@ 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,
}
"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__->add_unique_constraint( [qw/key/] );
__PACKAGE__->has_many(
"organisations",
"Pear::LocalLoop::Schema::Result::Organisation",
{ 'foreign.type_id' => 'self.id' },
"organisations",
"Pear::LocalLoop::Schema::Result::Organisation",
{ 'foreign.type_id' => 'self.id' },
);
1;
1;

View file

@ -8,32 +8,32 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("session_tokens");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"token" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"user_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"token" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"user_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["token"]);
__PACKAGE__->add_unique_constraint( ["token"] );
__PACKAGE__->belongs_to(
"user",
"Pear::LocalLoop::Schema::Result::User",
{ id => "user_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"user",
"Pear::LocalLoop::Schema::Result::User",
{ id => "user_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -5,36 +5,41 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components( qw/
InflateColumn::DateTime
TimeStamp
FilterColumn
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
FilterColumn
/
);
__PACKAGE__->table("topics");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"name" => {
data_type => "varchar",
size => 200,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"name" => {
data_type => "varchar",
size => 200,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->has_many(
"device_subscriptions",
"Pear::LocalLoop::Schema::Result::DeviceSubscription",
{ "foreign.topic_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"device_subscriptions",
"Pear::LocalLoop::Schema::Result::DeviceSubscription",
{ "foreign.topic_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->many_to_many('device_tokens' => 'device_subscriptions', 'device_token');
__PACKAGE__->many_to_many(
'device_tokens' => 'device_subscriptions',
'device_token'
);
1;

View file

@ -5,80 +5,81 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
/
);
__PACKAGE__->table("transactions");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"buyer_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"seller_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"proof_image" => {
data_type => "text",
is_nullable => 1,
},
"submitted_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"purchase_time" => {
data_type => "datetime",
timezone => "UTC",
is_nullable => 0,
set_on_create => 1,
},
"essential" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
distance => {
data_type => 'numeric',
size => [15],
is_nullable => 1,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"buyer_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"seller_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"proof_image" => {
data_type => "text",
is_nullable => 1,
},
"submitted_at" => {
data_type => "datetime",
is_nullable => 0,
set_on_create => 1,
},
"purchase_time" => {
data_type => "datetime",
timezone => "UTC",
is_nullable => 0,
set_on_create => 1,
},
"essential" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
distance => {
data_type => 'numeric',
size => [15],
is_nullable => 1,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->might_have(
"category",
"Pear::LocalLoop::Schema::Result::TransactionCategory" => "transaction_id",
__PACKAGE__->might_have( "category",
"Pear::LocalLoop::Schema::Result::TransactionCategory" => "transaction_id",
);
__PACKAGE__->has_one(
@ -94,13 +95,14 @@ __PACKAGE__->has_many(
);
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";
}
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;

View file

@ -8,32 +8,28 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("transaction_category");
__PACKAGE__->add_columns(
"category_id" => {
data_type => "integer",
is_nullable => 0,
is_foreign_key => 1,
},
"transaction_id" => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
"category_id" => {
data_type => "integer",
is_nullable => 0,
is_foreign_key => 1,
},
"transaction_id" => {
data_type => 'integer',
is_nullable => 0,
is_foreign_key => 1,
},
);
__PACKAGE__->add_unique_constraint(["transaction_id"]);
__PACKAGE__->add_unique_constraint( ["transaction_id"] );
__PACKAGE__->belongs_to(
"category",
"Pear::LocalLoop::Schema::Result::Category",
"category_id",
{ cascade_delete => 0 },
"category", "Pear::LocalLoop::Schema::Result::Category",
"category_id", { cascade_delete => 0 },
);
__PACKAGE__->belongs_to(
"transaction",
"Pear::LocalLoop::Schema::Result::Transaction",
"transaction_id",
{ cascade_delete => 0 },
"transaction", "Pear::LocalLoop::Schema::Result::Transaction",
"transaction_id", { cascade_delete => 0 },
);
1;

View file

@ -8,42 +8,42 @@ 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,
}
"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__->add_unique_constraint( [qw/external_reference_id external_id/] );
__PACKAGE__->belongs_to(
"transaction",
"Pear::LocalLoop::Schema::Result::Transaction",
{ 'foreign.id' => 'self.transaction_id' },
"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' },
"external_reference",
"Pear::LocalLoop::Schema::Result::ExternalReference",
{ 'foreign.id' => 'self.external_reference_id' },
);
1;

View file

@ -8,17 +8,17 @@ use base 'DBIx::Class::Core';
__PACKAGE__->table("transactions_meta");
__PACKAGE__->add_columns(
"id" => {
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"transaction_id" => {
"transaction_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"net_value" => {
"net_value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
@ -28,45 +28,45 @@ __PACKAGE__->add_columns(
size => [ 100, 0 ],
is_nullable => 0,
},
"gross_value" => {
"gross_value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"local_service" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
"regional_service" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
"national_service" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
"private_household_rebate" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
"business_tax_and_rebate" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
"stat_loc_gov" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
"central_loc_gov" => {
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
data_type => 'boolean',
default_value => \"false",
is_nullable => 0,
},
);

View file

@ -5,88 +5,88 @@ use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->load_components(qw/
InflateColumn::DateTime
TimeStamp
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
TimeStamp
/
);
__PACKAGE__->table("transaction_recurring");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"buyer_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"seller_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"start_time" => {
data_type => "datetime",
timezone => "UTC",
is_nullable => 0,
},
"last_updated" => {
data_type => "datetime",
timezone => "UTC",
is_nullable => 1,
datetime_undef_if_invalid => 1,
},
"essential" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
"distance" => {
data_type => 'numeric',
size => [15],
is_nullable => 1,
},
"category_id" => {
data_type => "integer",
is_nullable => 1,
is_foreign_key => 1,
},
"recurring_period" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"buyer_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"seller_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"value" => {
data_type => "numeric",
size => [ 100, 0 ],
is_nullable => 0,
},
"start_time" => {
data_type => "datetime",
timezone => "UTC",
is_nullable => 0,
},
"last_updated" => {
data_type => "datetime",
timezone => "UTC",
is_nullable => 1,
datetime_undef_if_invalid => 1,
},
"essential" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
"distance" => {
data_type => 'numeric',
size => [15],
is_nullable => 1,
},
"category_id" => {
data_type => "integer",
is_nullable => 1,
is_foreign_key => 1,
},
"recurring_period" => {
data_type => "varchar",
size => 255,
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->belongs_to(
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"category",
"Pear::LocalLoop::Schema::Result::Category",
"category_id",
{ cascade_delete => 0 },
"category", "Pear::LocalLoop::Schema::Result::Category",
"category_id", { cascade_delete => 0 },
);
1;

View file

@ -7,151 +7,159 @@ use base 'DBIx::Class::Core';
use Data::UUID;
__PACKAGE__->load_components( qw/
InflateColumn::DateTime
PassphraseColumn
TimeStamp
FilterColumn
/);
__PACKAGE__->load_components(
qw/
InflateColumn::DateTime
PassphraseColumn
TimeStamp
FilterColumn
/
);
__PACKAGE__->table("users");
__PACKAGE__->add_columns(
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"email" => {
data_type => "text",
is_nullable => 0,
},
"join_date" => {
data_type => "datetime",
set_on_create => 1,
},
"password" => {
data_type => "varchar",
is_nullable => 0,
size => 100,
passphrase => 'crypt',
passphrase_class => 'BlowfishCrypt',
passphrase_args => {
salt_random => 1,
cost => 8,
"id" => {
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
},
"entity_id" => {
data_type => "integer",
is_foreign_key => 1,
is_nullable => 0,
},
"email" => {
data_type => "text",
is_nullable => 0,
},
"join_date" => {
data_type => "datetime",
set_on_create => 1,
},
"password" => {
data_type => "varchar",
is_nullable => 0,
size => 100,
passphrase => 'crypt',
passphrase_class => 'BlowfishCrypt',
passphrase_args => {
salt_random => 1,
cost => 8,
},
passphrase_check_method => 'check_password',
},
"is_admin" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
passphrase_check_method => 'check_password',
},
"is_admin" => {
data_type => "boolean",
default_value => \"false",
is_nullable => 0,
},
);
__PACKAGE__->set_primary_key("id");
__PACKAGE__->add_unique_constraint(["email"]);
__PACKAGE__->add_unique_constraint( ["email"] );
__PACKAGE__->belongs_to(
"entity",
"Pear::LocalLoop::Schema::Result::Entity",
"entity_id",
__PACKAGE__->belongs_to( "entity", "Pear::LocalLoop::Schema::Result::Entity",
"entity_id", );
__PACKAGE__->has_many(
"session_tokens",
"Pear::LocalLoop::Schema::Result::SessionToken",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"session_tokens",
"Pear::LocalLoop::Schema::Result::SessionToken",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"device_tokens",
"Pear::LocalLoop::Schema::Result::DeviceToken",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"device_tokens",
"Pear::LocalLoop::Schema::Result::DeviceToken",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"feedback",
"Pear::LocalLoop::Schema::Result::Feedback",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
"feedback",
"Pear::LocalLoop::Schema::Result::Feedback",
{ "foreign.user_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
sub sqlt_deploy_hook {
my ( $source_instance, $sqlt_table ) = @_;
my $pending_field = $sqlt_table->get_field('is_admin');
if ( $sqlt_table->schema->translator->producer_type =~ /SQLite$/ ) {
$pending_field->{default_value} = 0;
} else {
$pending_field->{default_value} = \"false";
}
my ( $source_instance, $sqlt_table ) = @_;
my $pending_field = $sqlt_table->get_field('is_admin');
if ( $sqlt_table->schema->translator->producer_type =~ /SQLite$/ ) {
$pending_field->{default_value} = 0;
}
else {
$pending_field->{default_value} = \"false";
}
}
__PACKAGE__->filter_column( is_admin => {
filter_to_storage => 'to_bool',
});
__PACKAGE__->filter_column(
is_admin => {
filter_to_storage => 'to_bool',
}
);
sub to_bool {
my ( $self, $val ) = @_;
my $driver_name = $self->result_source->schema->storage->dbh->{Driver}->{Name};
if ( $driver_name eq 'SQLite' ) {
return $val ? 1 : 0;
} else {
return $val ? 'true' : 'false';
}
my ( $self, $val ) = @_;
my $driver_name =
$self->result_source->schema->storage->dbh->{Driver}->{Name};
if ( $driver_name eq 'SQLite' ) {
return $val ? 1 : 0;
}
else {
return $val ? 'true' : 'false';
}
}
sub generate_session {
my $self = shift;
my $self = shift;
my $token = Data::UUID->new->create_str();
$self->create_related(
'session_tokens',
{
token => $token,
},
);
my $token = Data::UUID->new->create_str();
$self->create_related(
'session_tokens',
{
token => $token,
},
);
return $token;
return $token;
}
sub name {
my $self = shift;
my $self = shift;
if ( defined $self->entity->customer ) {
return $self->entity->customer->display_name;
} elsif ( defined $self->entity->organisation ) {
return $self->entity->organisation->name;
} else {
return;
}
if ( defined $self->entity->customer ) {
return $self->entity->customer->display_name;
}
elsif ( defined $self->entity->organisation ) {
return $self->entity->organisation->name;
}
else {
return;
}
}
sub full_name {
my $self = shift;
my $self = shift;
if ( defined $self->entity->customer ) {
return $self->entity->customer->full_name;
} elsif ( defined $self->entity->organisation ) {
return $self->entity->organisation->name;
} else {
return;
}
if ( defined $self->entity->customer ) {
return $self->entity->customer->full_name;
}
elsif ( defined $self->entity->organisation ) {
return $self->entity->organisation->name;
}
else {
return;
}
}
# TODO Deprecate this sub?
sub type {
my $self = shift;
my $self = shift;
return $self->entity->type;
return $self->entity->type;
}
1;

View file

@ -9,7 +9,8 @@ __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
__PACKAGE__->table('view_quantised_transactions');
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition( qq/
__PACKAGE__->result_source_instance->view_definition(
qq/
SELECT "transactions"."value",
"transactions"."distance",
"transactions"."purchase_time",
@ -22,6 +23,7 @@ SELECT "transactions"."value",
DATE_TRUNC('week', "transactions"."purchase_time") AS "quantised_weeks"
FROM "transactions"
LEFT JOIN "transaction_category" ON "transactions"."id" = "transaction_category"."transaction_id"
/);
/
);
1;

View file

@ -9,7 +9,8 @@ __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
__PACKAGE__->table('view_quantised_transactions');
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition( qq/
__PACKAGE__->result_source_instance->view_definition(
qq/
SELECT "transactions"."value",
"transactions"."distance",
"transactions"."purchase_time",
@ -22,6 +23,7 @@ SELECT "transactions"."value",
DATETIME(STRFTIME('%Y-%m-%d 00:00:00',"transactions"."purchase_time", 'weekday 0','-6 days')) AS "quantised_weeks"
FROM "transactions"
LEFT JOIN "transaction_category" ON "transactions"."id" = "transaction_category"."transaction_id"
/);
/
);
1;

View file

@ -9,7 +9,8 @@ __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
__PACKAGE__->table('view_quantised_transactions');
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition( qq/
__PACKAGE__->result_source_instance->view_definition(
qq/
SELECT "value",
"distance",
"purchase_time",
@ -20,20 +21,21 @@ SELECT "value",
DATE_TRUNC('week', "purchase_time") AS "quantised_weeks",
DATE_TRUNC('month', "purchase_time") AS "quantised_months"
FROM "transactions"
/);
__PACKAGE__->belongs_to(
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
/
);
__PACKAGE__->belongs_to(
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;

View file

@ -9,7 +9,8 @@ __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
__PACKAGE__->table('view_quantised_transactions');
__PACKAGE__->result_source_instance->is_virtual(1);
__PACKAGE__->result_source_instance->view_definition( qq/
__PACKAGE__->result_source_instance->view_definition(
qq/
SELECT "value",
"distance",
"purchase_time",
@ -21,20 +22,21 @@ SELECT "value",
DATETIME(STRFTIME('%Y-%m-%d 00:00:00',"purchase_time",'weekday 0','-6 days')) AS "quantised_weeks",
DATETIME(STRFTIME('%Y-%m-00 00:00:00',"purchase_time")) AS "quantised_months"
FROM "transactions"
/);
__PACKAGE__->belongs_to(
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
/
);
__PACKAGE__->belongs_to(
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
"buyer",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "buyer_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
__PACKAGE__->belongs_to(
"seller",
"Pear::LocalLoop::Schema::Result::Entity",
{ id => "seller_id" },
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "NO ACTION" },
);
1;