From 5de6dfb4e1712c1afea94a3f1ff813e96f0d40e2 Mon Sep 17 00:00:00 2001
From: Daniel Friesel <derf@finalrewind.org>
Date: Sun, 11 Dec 2022 20:10:58 +0100
Subject: [PATCH] database: refactor schema/iris version check

---
 lib/Travelynx/Command/database.pm | 24 +++++-------------------
 1 file changed, 5 insertions(+), 19 deletions(-)

diff --git a/lib/Travelynx/Command/database.pm b/lib/Travelynx/Command/database.pm
index 256820b8..55b79e95 100644
--- a/lib/Travelynx/Command/database.pm
+++ b/lib/Travelynx/Command/database.pm
@@ -14,27 +14,13 @@ has description => 'Initialize or upgrade database layout';
 
 has usage => sub { shift->extract_usage };
 
-sub get_iris_version {
-	my ($db) = @_;
-	my $version;
-
-	eval { $version = $db->select( 'schema_version', ['iris'] )->hash->{iris}; };
-	if ($@) {
-
-		# If it failed, the version table does not exist -> run setup first.
-		return undef;
-	}
-	return $version;
-}
-
 sub get_schema_version {
-	my ($db) = @_;
+	my ( $db, $key ) = @_;
 	my $version;
 
-	eval {
-		$version
-		  = $db->select( 'schema_version', ['version'] )->hash->{version};
-	};
+	$key //= 'version';
+
+	eval { $version = $db->select( 'schema_version', [$key] )->hash->{$key}; };
 	if ($@) {
 
 		# If it failed, the version table does not exist -> run setup first.
@@ -1430,7 +1416,7 @@ sub migrate_db {
 		exit(1);
 	}
 
-	my $iris_version = get_iris_version($db);
+	my $iris_version = get_schema_version( $db, 'iris' );
 	say "Found IRIS station database v${iris_version}";
 	if ( $iris_version eq $Travel::Status::DE::IRIS::Stations::VERSION ) {
 		say 'Station database is up-to-date';
-- 
GitLab