#!/usr/bin/env perl

use warnings;
use strict;

use DBI;
use constant DB_SOCKET => '/var/run/mysqld/mysqld.sock'; # Socket for mysql
use Getopt::Long qw( GetOptions :config auto_help auto_version gnu_getopt );

my ($db_host, $db_name, $db_user, $db_pw); # Database details
my @files;                                 # Files of interest
my $old = 0;
@files = @ARGV;
foreach my $file (@files) {
    my (@neb_path) = split /\//, $file;
    my $neb_key = $neb_path[-1];
    # Remove ins_id
    $neb_key =~ s/^\d+\.//;
    # Convert colons to slashes.
    $neb_key =~ s%:%/%g;
    $neb_key =~ s%.fz$%%;
    print "$neb_key\n";
}

# There's no reason to prod the database to get something that is originally created by messing with the key name.
if ($old) {
    GetOptions(
	'dbhost=s' => \$db_host, # Database host name
	'dbname=s' => \$db_name, # Database name
	'dbuser=s' => \$db_user, # Database user
	'dbpass=s' => \$db_pw, # Database p/w
	'file=s' => \@files,  # Files of interest
	) or die "Unable to parse arguments.\n";
    die "Unknown option: @ARGV\n" if @ARGV;
    die "Required options: --dbhost --dbname --dbuser --dbpass --file\n"
	unless defined $db_host
	and defined $db_name
	and defined $db_user
	and defined $db_pw
	and scalar @files > 0;
    
    
# Database connection
    my $db = DBI->connect( "DBI:mysql:database=$db_name;host=$db_host;mysql_socket=" . DB_SOCKET(),
			   $db_user,
			   $db_pw,
			   { RaiseError => 1, AutoCommit => 1 }
	) or die "Unable to connect to database: $DBI::errstr";
    
    foreach my $file (@files) {
	my $sql = "SELECT CONCAT('neb://any/', ext_id) FROM storage_object JOIN instance USING(so_id) WHERE uri = 'file://$file'";
	my $results = $db->selectcol_arrayref( $sql ) or die "Unable to execute SQL: $DBI::errstr";
	print "$$results[0]\n";
    }
}
