This repository has been archived on 2023-08-16. You can view files and clone it, but cannot push or open issues or pull requests.
Foodloop-Server/lib/Pear/LocalLoop/Import/LCCCsv/Postcodes.pm
2021-03-20 23:26:52 +00:00

54 lines
1 KiB
Perl

package Pear::LocalLoop::Import::LCCCsv::Postcodes;
use Moo;
use Geo::UK::Postcode::Regex;
extends qw/Pear::LocalLoop::Import::LCCCsv/;
has '+csv_required_columns' => (
builder => sub {
return [
qw/
postcode
ward
/
];
},
);
sub import_csv {
my ($self) = @_;
$self->check_headers;
while ( my $row = $self->get_csv_line ) {
$self->_row_to_result($row);
}
return 1;
}
sub _row_to_result {
my ( $self, $row ) = @_;
my $postcode_obj = Geo::UK::Postcode::Regex->parse( $row->{postcode} );
my $ward = $self->schema->resultset('GbWard')
->find_or_create( ward => $row->{ward} );
my $postcode_r = $self->schema->resultset('GbPostcode')->find(
{
outcode => $postcode_obj->{outcode},
incode => $postcode_obj->{incode},
}
);
return unless $postcode_r;
return if $postcode_r->ward;
$postcode_r->update( { ward_id => $ward->id } );
return 1;
}
1;