Unverified Commit f4b83a0d authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

index.pl import stops: deal with defunct / removed backends

parent e437d988
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -61,8 +61,31 @@ sub import_stops {
					$backend_query{$type} = $row->[ $col{backend} ];
				}
			}
			my $backend_id
			my $backend_id;
			eval {
				$backend_id
				  = $self->app->stations->get_backend_id(%backend_query);
			};
			if ( $@ and $@ =~ m{Unknown \S+ backend} ) {

				# Backends come and go. If the instance we're importing from
				# is old, it may contain backends that are no longer provided
				# by the EFA, HAFAS, etc. modules. But it may still contain
				# stops (and, possibly, journeys) for such backends. In that
				# case, we need to add the backend here.
				$backend_id = $db->insert(
					'backends',
					{
						dbris => $row->[ $col{dbris} ],
						efa   => $row->[ $col{efa} ],
						hafas => $row->[ $col{hafas} ],
						iris  => 0,
						motis => $row->[ $col{motis} ],
						name  => $row->[ $col{backend} ],
					},
					{ returning => 'id' },
				)->hash->{id};
			}

			if ( $row->[ $col{extId} ] ) {
				push( @extId_queue, [ $row, $backend_id ] );
+24 −12
Original line number Diff line number Diff line
@@ -40,48 +40,60 @@ sub get_backend_id {
	my $backend_id = 0;

	if ( $opt{dbris} ) {
		$backend_id = $db->select(
		my $res = $db->select(
			'backends',
			['id'],
			{
				dbris => 1,
				name  => $opt{dbris}
			}
		)->hash->{id};
		$self->{backend_id}{dbris}{ $opt{dbris} } = $backend_id;
		)->hash;
		if ($res) {
			return $self->{backend_id}{dbris}{ $opt{dbris} } = $res->{id};
		}
		die("Unknown DBRIS backend '$opt{dbris}'");
	}
	elsif ( $opt{efa} ) {
		$backend_id = $db->select(
		my $res = $db->select(
			'backends',
			['id'],
			{
				efa  => 1,
				name => $opt{efa}
			}
		)->hash->{id};
		$self->{backend_id}{efa}{ $opt{efa} } = $backend_id;
		)->hash;
		if ($res) {
			return $self->{backend_id}{efa}{ $opt{efa} } = $res->{id};
		}
		die("Unknown EFA backend '$opt{efa}'");
	}
	elsif ( $opt{hafas} ) {
		$backend_id = $db->select(
		my $res = $db->select(
			'backends',
			['id'],
			{
				hafas => 1,
				name  => $opt{hafas}
			}
		)->hash->{id};
		$self->{backend_id}{hafas}{ $opt{hafas} } = $backend_id;
		)->hash;
		if ($res) {
			return $self->{backend_id}{hafas}{ $opt{hafas} } = $res->{id};
		}
		die("Unknown HAFAS backend '$opt{hafas}'");
	}
	elsif ( $opt{motis} ) {
		$backend_id = $db->select(
		my $res = $db->select(
			'backends',
			['id'],
			{
				motis => 1,
				name  => $opt{motis}
			}
		)->hash->{id};
		$self->{backend_id}{motis}{ $opt{motis} } = $backend_id;
		)->hash;
		if ($res) {
			return $self->{backend_id}{motis}{ $opt{motis} } = $res->{id};
		}
		die("Unknown MOTIS backend '$opt{motis}'");
	}

	return $backend_id;