Add code formatter, format all code
This commit is contained in:
parent
602a59f1c3
commit
47a55f6322
120 changed files with 8061 additions and 6967 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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", );
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -6,31 +6,27 @@ use warnings;
|
|||
use base 'DBIx::Class::ResultSet';
|
||||
|
||||
sub as_hash {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
my %category_list = (
|
||||
(
|
||||
map {
|
||||
$_->id => $_->name,
|
||||
} $self->all
|
||||
),
|
||||
0 => 'Uncategorised',
|
||||
);
|
||||
return \%category_list;
|
||||
my %category_list = (
|
||||
(
|
||||
map { $_->id => $_->name, } $self->all
|
||||
),
|
||||
0 => 'Uncategorised',
|
||||
);
|
||||
return \%category_list;
|
||||
}
|
||||
|
||||
sub as_hash_name_icon {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
my %category_list = (
|
||||
(
|
||||
map {
|
||||
$_->name => $_->line_icon,
|
||||
} $self->all
|
||||
),
|
||||
0 => 'Uncategorised',
|
||||
);
|
||||
return \%category_list;
|
||||
my %category_list = (
|
||||
(
|
||||
map { $_->name => $_->line_icon, } $self->all
|
||||
),
|
||||
0 => 'Uncategorised',
|
||||
);
|
||||
return \%category_list;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -5,15 +5,17 @@ use warnings;
|
|||
|
||||
use base 'DBIx::Class::ResultSet';
|
||||
|
||||
sub sales { shift->search_related('sales', @_) }
|
||||
sub sales { shift->search_related( 'sales', @_ ) }
|
||||
|
||||
sub create_org {
|
||||
my ( $self, $org ) = @_;
|
||||
my ( $self, $org ) = @_;
|
||||
|
||||
return $self->create({
|
||||
organisation => $org,
|
||||
type => 'organisation',
|
||||
});
|
||||
return $self->create(
|
||||
{
|
||||
organisation => $org,
|
||||
type => 'organisation',
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -6,81 +6,83 @@ use warnings;
|
|||
use base 'DBIx::Class::ResultSet';
|
||||
|
||||
sub get_values {
|
||||
my $self = shift;
|
||||
my $id = shift;
|
||||
my $include_ignored = shift;
|
||||
my $include_imported = shift;
|
||||
my $self = shift;
|
||||
my $id = shift;
|
||||
my $include_ignored = shift;
|
||||
my $include_imported = shift;
|
||||
|
||||
return $self->find($id)->search_related(
|
||||
'values',
|
||||
{
|
||||
( $include_ignored ? () : ( ignore_value => 0 ) ),
|
||||
( $include_imported ? () : ( transaction_id => undef ) ),
|
||||
},
|
||||
{
|
||||
order_by => { '-asc' => 'id' },
|
||||
},
|
||||
);
|
||||
return $self->find($id)->search_related(
|
||||
'values',
|
||||
{
|
||||
( $include_ignored ? () : ( ignore_value => 0 ) ),
|
||||
( $include_imported ? () : ( transaction_id => undef ) ),
|
||||
},
|
||||
{
|
||||
order_by => { '-asc' => 'id' },
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
sub _unordered_get_values {
|
||||
my $self = shift;
|
||||
my $id = shift;
|
||||
my $include_ignored = shift;
|
||||
my $include_imported = shift;
|
||||
my $self = shift;
|
||||
my $id = shift;
|
||||
my $include_ignored = shift;
|
||||
my $include_imported = shift;
|
||||
|
||||
return $self->find($id)->search_related(
|
||||
'values',
|
||||
{
|
||||
( $include_ignored ? () : ( ignore_value => 0 ) ),
|
||||
( $include_imported ? () : ( transaction_id => undef ) ),
|
||||
},
|
||||
);
|
||||
return $self->find($id)->search_related(
|
||||
'values',
|
||||
{
|
||||
( $include_ignored ? () : ( ignore_value => 0 ) ),
|
||||
( $include_imported ? () : ( transaction_id => undef ) ),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
sub get_users {
|
||||
my $self = shift;
|
||||
my $self = shift;
|
||||
|
||||
return $self->_unordered_get_values(@_)->search({},
|
||||
{
|
||||
group_by => 'user_name',
|
||||
columns => [ qw/ user_name / ],
|
||||
},
|
||||
);
|
||||
return $self->_unordered_get_values(@_)->search(
|
||||
{},
|
||||
{
|
||||
group_by => 'user_name',
|
||||
columns => [qw/ user_name /],
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
sub get_orgs {
|
||||
my $self = shift;
|
||||
|
||||
return $self->_unordered_get_values(@_)->search({},
|
||||
{
|
||||
group_by => 'org_name',
|
||||
columns => [ qw/ org_name / ],
|
||||
},
|
||||
);
|
||||
my $self = shift;
|
||||
|
||||
return $self->_unordered_get_values(@_)->search(
|
||||
{},
|
||||
{
|
||||
group_by => 'org_name',
|
||||
columns => [qw/ org_name /],
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
sub get_lookups {
|
||||
my $self = shift;
|
||||
my $id = shift;
|
||||
my $self = shift;
|
||||
my $id = shift;
|
||||
|
||||
my $lookup_rs = $self->find($id)->search_related(
|
||||
'lookups',
|
||||
undef,
|
||||
{
|
||||
prefetch => { entity => [ qw/ organisation customer / ] },
|
||||
order_by => { '-asc' => 'me.id' },
|
||||
},
|
||||
);
|
||||
my $lookup_map = {
|
||||
map {
|
||||
$_->name => {
|
||||
entity_id => $_->entity->id,
|
||||
name => $_->entity->name,
|
||||
},
|
||||
} $lookup_rs->all
|
||||
};
|
||||
return $lookup_map;
|
||||
my $lookup_rs = $self->find($id)->search_related(
|
||||
'lookups',
|
||||
undef,
|
||||
{
|
||||
prefetch => { entity => [qw/ organisation customer /] },
|
||||
order_by => { '-asc' => 'me.id' },
|
||||
},
|
||||
);
|
||||
my $lookup_map = {
|
||||
map {
|
||||
$_->name => {
|
||||
entity_id => $_->entity->id,
|
||||
name => $_->entity->name,
|
||||
},
|
||||
} $lookup_rs->all
|
||||
};
|
||||
return $lookup_map;
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -8,87 +8,103 @@ use base 'DBIx::Class::ResultSet';
|
|||
use DateTime;
|
||||
|
||||
sub get_latest {
|
||||
my $self = shift;
|
||||
my $type = shift;
|
||||
my $self = shift;
|
||||
my $type = shift;
|
||||
|
||||
my $type_result = $self->find_by_type( $type );
|
||||
my $type_result = $self->find_by_type($type);
|
||||
|
||||
return unless defined $type_result;
|
||||
return unless defined $type_result;
|
||||
|
||||
my $latest = $type_result->search_related('sets', {}, {
|
||||
order_by => { -desc => 'date' },
|
||||
})->first;
|
||||
my $latest = $type_result->search_related(
|
||||
'sets',
|
||||
{},
|
||||
{
|
||||
order_by => { -desc => 'date' },
|
||||
}
|
||||
)->first;
|
||||
|
||||
return $latest;
|
||||
return $latest;
|
||||
}
|
||||
|
||||
sub create_new {
|
||||
my $self = shift;
|
||||
my $type = shift;
|
||||
my $date = shift;
|
||||
my $self = shift;
|
||||
my $type = shift;
|
||||
my $date = shift;
|
||||
|
||||
my $type_result = $self->find_by_type($type);
|
||||
my $type_result = $self->find_by_type($type);
|
||||
|
||||
return unless $type_result;
|
||||
return unless $type_result;
|
||||
|
||||
return $type_result->create_new($date);
|
||||
return $type_result->create_new($date);
|
||||
}
|
||||
|
||||
sub find_by_type {
|
||||
my $self = shift;
|
||||
my $type = shift;
|
||||
my $self = shift;
|
||||
my $type = shift;
|
||||
|
||||
return $self->find({ type => $type });
|
||||
return $self->find( { type => $type } );
|
||||
}
|
||||
|
||||
sub recalculate_all {
|
||||
my $self = shift;
|
||||
my $self = shift;
|
||||
|
||||
for my $leaderboard_result ( $self->all ) {
|
||||
my $lb_type = $leaderboard_result->type;
|
||||
if ( $lb_type =~ /^daily/ ) {
|
||||
for my $leaderboard_result ( $self->all ) {
|
||||
my $lb_type = $leaderboard_result->type;
|
||||
if ( $lb_type =~ /^daily/ ) {
|
||||
|
||||
# Recalculating a daily set. This is calculated from the start of the
|
||||
# day, so we need yesterdays date:
|
||||
my $date = DateTime->today->subtract( days => 1 );
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date, 'days' );
|
||||
# Recalculating a daily set. This is calculated from the start of the
|
||||
# day, so we need yesterdays date:
|
||||
my $date = DateTime->today->subtract( days => 1 );
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date,
|
||||
'days' );
|
||||
|
||||
} elsif ( $lb_type =~ /^weekly/ ) {
|
||||
}
|
||||
elsif ( $lb_type =~ /^weekly/ ) {
|
||||
|
||||
# Recalculating a weekly set. This is calculated from a Monday, of the
|
||||
# week before.
|
||||
my $date = DateTime->today->truncate( to => 'week' )->subtract( weeks => 1 );
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date, 'weeks' );
|
||||
# Recalculating a weekly set. This is calculated from a Monday, of the
|
||||
# week before.
|
||||
my $date =
|
||||
DateTime->today->truncate( to => 'week' )->subtract( weeks => 1 );
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date,
|
||||
'weeks' );
|
||||
|
||||
} elsif ( $lb_type =~ /^monthly/ ) {
|
||||
}
|
||||
elsif ( $lb_type =~ /^monthly/ ) {
|
||||
|
||||
# Recalculate a monthly set. This is calculated from the first of the
|
||||
# month, for the month before.
|
||||
my $date = DateTime->today->truncate( to => 'month' )->subtract( months => 1);
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date, 'months' );
|
||||
# Recalculate a monthly set. This is calculated from the first of the
|
||||
# month, for the month before.
|
||||
my $date = DateTime->today->truncate( to => 'month' )
|
||||
->subtract( months => 1 );
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date,
|
||||
'months' );
|
||||
|
||||
} elsif ( $lb_type =~ /^all_time/ ) {
|
||||
}
|
||||
elsif ( $lb_type =~ /^all_time/ ) {
|
||||
|
||||
# Recalculate for an all time set. This is calculated similarly to
|
||||
# daily, but is calculated from an end time.
|
||||
my $date = DateTime->today;
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date, 'days' );
|
||||
# Recalculate for an all time set. This is calculated similarly to
|
||||
# daily, but is calculated from an end time.
|
||||
my $date = DateTime->today;
|
||||
$self->_recalculate_leaderboard( $leaderboard_result, $date,
|
||||
'days' );
|
||||
|
||||
} else {
|
||||
warn "Unrecognised Set";
|
||||
}
|
||||
else {
|
||||
warn "Unrecognised Set";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub _recalculate_leaderboard {
|
||||
my ( $self, $lb_result, $date, $diff ) = @_;
|
||||
my ( $self, $lb_result, $date, $diff ) = @_;
|
||||
|
||||
$self->result_source->schema->txn_do( sub {
|
||||
$lb_result->sets->related_resultset('values')->delete_all;
|
||||
$lb_result->sets->delete_all;
|
||||
$lb_result->create_new($date->clone->subtract( $diff => 1 ));
|
||||
$lb_result->create_new($date);
|
||||
});
|
||||
$self->result_source->schema->txn_do(
|
||||
sub {
|
||||
$lb_result->sets->related_resultset('values')->delete_all;
|
||||
$lb_result->sets->delete_all;
|
||||
$lb_result->create_new( $date->clone->subtract( $diff => 1 ) );
|
||||
$lb_result->create_new($date);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -5,6 +5,6 @@ use warnings;
|
|||
|
||||
use base 'DBIx::Class::ResultSet';
|
||||
|
||||
sub entity { shift->search_related('entity', @_) }
|
||||
sub entity { shift->search_related( 'entity', @_ ) }
|
||||
|
||||
1;
|
||||
|
|
|
@ -8,47 +8,51 @@ use base 'DBIx::Class::ResultSet';
|
|||
use DateTime;
|
||||
|
||||
sub search_between {
|
||||
my ( $self, $from, $to ) = @_;
|
||||
my ( $self, $from, $to ) = @_;
|
||||
|
||||
my $dtf = $self->result_source->schema->storage->datetime_parser;
|
||||
return $self->search({
|
||||
purchase_time => {
|
||||
-between => [
|
||||
$dtf->format_datetime($from),
|
||||
$dtf->format_datetime($to),
|
||||
],
|
||||
},
|
||||
});
|
||||
my $dtf = $self->result_source->schema->storage->datetime_parser;
|
||||
return $self->search(
|
||||
{
|
||||
purchase_time => {
|
||||
-between =>
|
||||
[ $dtf->format_datetime($from), $dtf->format_datetime($to), ],
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
sub search_before {
|
||||
my ( $self, $date ) = @_;
|
||||
my ( $self, $date ) = @_;
|
||||
|
||||
my $dtf = $self->result_source->schema->storage->datetime_parser;
|
||||
return $self->search({
|
||||
purchase_time => { '<' => $dtf->format_datetime( $date ) },
|
||||
});
|
||||
my $dtf = $self->result_source->schema->storage->datetime_parser;
|
||||
return $self->search(
|
||||
{
|
||||
purchase_time => { '<' => $dtf->format_datetime($date) },
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
sub today_rs {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
my $today = DateTime->today();
|
||||
return $self->search_between( $today, $today->clone->add( days => 1 ) );
|
||||
my $today = DateTime->today();
|
||||
return $self->search_between( $today, $today->clone->add( days => 1 ) );
|
||||
}
|
||||
|
||||
sub week_rs {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
my $today = DateTime->today();
|
||||
return $self->search_between( $today->clone->subtract( days => 7 ), $today );
|
||||
my $today = DateTime->today();
|
||||
return $self->search_between( $today->clone->subtract( days => 7 ),
|
||||
$today );
|
||||
}
|
||||
|
||||
sub month_rs {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
my $today = DateTime->today();
|
||||
return $self->search_between( $today->clone->subtract( days => 30 ), $today );
|
||||
my $today = DateTime->today();
|
||||
return $self->search_between( $today->clone->subtract( days => 30 ),
|
||||
$today );
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -37,11 +37,11 @@ This option is then provided to the Schema's 'connect' function.
|
|||
=cut
|
||||
|
||||
option connection => (
|
||||
is => 'ro',
|
||||
format => 's',
|
||||
required => 0,
|
||||
short => 'c',
|
||||
doc => "The DBI connection string to use",
|
||||
is => 'ro',
|
||||
format => 's',
|
||||
required => 0,
|
||||
short => 'c',
|
||||
doc => "The DBI connection string to use",
|
||||
);
|
||||
|
||||
=head2 --username ( -u )
|
||||
|
@ -51,11 +51,11 @@ The username to use for connection to the database
|
|||
=cut
|
||||
|
||||
option username => (
|
||||
is => 'ro',
|
||||
format => 's',
|
||||
default => '',
|
||||
short => 'u',
|
||||
doc => "The username for the DB connection",
|
||||
is => 'ro',
|
||||
format => 's',
|
||||
default => '',
|
||||
short => 'u',
|
||||
doc => "The username for the DB connection",
|
||||
);
|
||||
|
||||
=head2 --password ( -p )
|
||||
|
@ -65,11 +65,11 @@ The password to use for connection to the database
|
|||
=cut
|
||||
|
||||
option password => (
|
||||
is => 'ro',
|
||||
format => 's',
|
||||
default => '',
|
||||
short => 'p',
|
||||
doc => "The password for the supplied user",
|
||||
is => 'ro',
|
||||
format => 's',
|
||||
default => '',
|
||||
short => 'p',
|
||||
doc => "The password for the supplied user",
|
||||
);
|
||||
|
||||
=head2 --force ( -f )
|
||||
|
@ -80,10 +80,10 @@ the same version of ddl items.
|
|||
=cut
|
||||
|
||||
option force => (
|
||||
is => 'ro',
|
||||
default => sub { 0 },
|
||||
short => 'f',
|
||||
doc => "Force the action if required",
|
||||
is => 'ro',
|
||||
default => sub { 0 },
|
||||
short => 'f',
|
||||
doc => "Force the action if required",
|
||||
);
|
||||
|
||||
=head2 --version ( -v )
|
||||
|
@ -94,11 +94,11 @@ ddl.
|
|||
=cut
|
||||
|
||||
option version => (
|
||||
is => 'ro',
|
||||
format => 'i',
|
||||
default => sub { shift->dh->schema->schema_version },
|
||||
short => 'v',
|
||||
doc => "Version to use as target",
|
||||
is => 'ro',
|
||||
format => 'i',
|
||||
default => sub { shift->dh->schema->schema_version },
|
||||
short => 'v',
|
||||
doc => "Version to use as target",
|
||||
);
|
||||
|
||||
=head1 ATTRIBUTES
|
||||
|
@ -113,8 +113,8 @@ to be defined in the 'new_with_options' call.
|
|||
=cut
|
||||
|
||||
has schema_class => (
|
||||
is => 'ro',
|
||||
required => 1,
|
||||
is => 'ro',
|
||||
required => 1,
|
||||
);
|
||||
|
||||
=head2 schema
|
||||
|
@ -125,15 +125,12 @@ This is the connected schema. This uses the 'schema_class' attribute and
|
|||
=cut
|
||||
|
||||
has schema => (
|
||||
is => 'lazy',
|
||||
builder => sub {
|
||||
my $self = shift;
|
||||
return use_module( $self->schema_class )->connect(
|
||||
$self->connection,
|
||||
$self->username,
|
||||
$self->password,
|
||||
);
|
||||
},
|
||||
is => 'lazy',
|
||||
builder => sub {
|
||||
my $self = shift;
|
||||
return use_module( $self->schema_class )
|
||||
->connect( $self->connection, $self->username, $self->password, );
|
||||
},
|
||||
);
|
||||
|
||||
=head2 script_directory
|
||||
|
@ -144,8 +141,8 @@ versions. Defaults to 'share/ddl'.
|
|||
=cut
|
||||
|
||||
has script_directory => (
|
||||
is => 'ro',
|
||||
default => 'share/ddl',
|
||||
is => 'ro',
|
||||
default => 'share/ddl',
|
||||
);
|
||||
|
||||
=head2 databases
|
||||
|
@ -160,8 +157,8 @@ defaults to returning the following:
|
|||
=cut
|
||||
|
||||
has databases => (
|
||||
is => 'ro',
|
||||
default => sub { [ qw/ PostgreSQL SQLite / ] },
|
||||
is => 'ro',
|
||||
default => sub { [qw/ PostgreSQL SQLite /] },
|
||||
);
|
||||
|
||||
=head2 dh
|
||||
|
@ -172,16 +169,18 @@ This returns the actual DeploymentHandler, set up using the 'schema',
|
|||
=cut
|
||||
|
||||
has dh => (
|
||||
is => 'lazy',
|
||||
builder => sub {
|
||||
my ( $self ) = @_;
|
||||
return DBIx::Class::DeploymentHandler->new({
|
||||
schema => $self->schema,
|
||||
force_overwrite => $self->force,
|
||||
script_directory => $self->script_directory,
|
||||
databases => $self->databases,
|
||||
});
|
||||
}
|
||||
is => 'lazy',
|
||||
builder => sub {
|
||||
my ($self) = @_;
|
||||
return DBIx::Class::DeploymentHandler->new(
|
||||
{
|
||||
schema => $self->schema,
|
||||
force_overwrite => $self->force,
|
||||
script_directory => $self->script_directory,
|
||||
databases => $self->databases,
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
=head1 COMMANDS
|
||||
|
@ -195,17 +194,19 @@ This will create the ddl files required to perform an upgrade.
|
|||
=cut
|
||||
|
||||
sub cmd_write_ddl {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
$self->dh->prepare_install;
|
||||
my $v = $self->version;
|
||||
$self->dh->prepare_install;
|
||||
my $v = $self->version;
|
||||
|
||||
if ( $v > 1 ) {
|
||||
$self->dh->prepare_upgrade({
|
||||
from_version => $v - 1,
|
||||
to_version => $v,
|
||||
});
|
||||
}
|
||||
if ( $v > 1 ) {
|
||||
$self->dh->prepare_upgrade(
|
||||
{
|
||||
from_version => $v - 1,
|
||||
to_version => $v,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
=head2 install_dh
|
||||
|
@ -216,12 +217,14 @@ database. Only for use on a pre-existing database.
|
|||
=cut
|
||||
|
||||
sub cmd_install_dh {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
$self->dh->install_version_storage;
|
||||
$self->dh->add_database_version({
|
||||
version => $self->version,
|
||||
});
|
||||
$self->dh->install_version_storage;
|
||||
$self->dh->add_database_version(
|
||||
{
|
||||
version => $self->version,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
=head2 install
|
||||
|
@ -231,11 +234,13 @@ This command will install all the tables to the provided database
|
|||
=cut
|
||||
|
||||
sub cmd_install {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
$self->dh->install({
|
||||
version => $self->version,
|
||||
});
|
||||
$self->dh->install(
|
||||
{
|
||||
version => $self->version,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
=head2 upgrade
|
||||
|
@ -245,9 +250,9 @@ This command will upgrade all tables to the latest versions
|
|||
=cut
|
||||
|
||||
sub cmd_upgrade {
|
||||
my ( $self ) = @_;
|
||||
my ($self) = @_;
|
||||
|
||||
$self->dh->upgrade;
|
||||
$self->dh->upgrade;
|
||||
}
|
||||
|
||||
=head1 AUTHOR
|
||||
|
|
Reference in a new issue