111 lines
3.1 KiB
Perl
Executable File
111 lines
3.1 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
#===============================================================================
|
|
#
|
|
# FILE: remodel_db_series_eps
|
|
#
|
|
# USAGE: ./remodel_db_series _eps
|
|
#
|
|
# DESCRIPTION: Script to perform the steps necessary to remodel the series
|
|
# information in the hpr_hpr database. We want to have
|
|
# a many-to-many relationship between episodes and series.
|
|
#
|
|
# OPTIONS: ---
|
|
# REQUIREMENTS: ---
|
|
# BUGS: ---
|
|
# NOTES: This code is extremely trivial. It could be done just as well
|
|
# with plain SQL. However, having a script will potentially
|
|
# allow other things to be done during the table load, such as
|
|
# reading other series associations from a file.
|
|
# AUTHOR: Dave Morriss (djm), Dave.Morriss@gmail.com
|
|
# VERSION: 0.0.1
|
|
# CREATED: 2015-06-26 12:30:27
|
|
# REVISION: 2015-06-26 15:28:12
|
|
#
|
|
#===============================================================================
|
|
|
|
use 5.010;
|
|
use strict;
|
|
use warnings;
|
|
use utf8;
|
|
|
|
use YAML::Syck;
|
|
use DBI;
|
|
|
|
#
|
|
# Version number (manually incremented)
|
|
#
|
|
our $VERSION = '0.0.1';
|
|
|
|
#
|
|
# Script and directory names
|
|
#
|
|
( my $PROG = $0 ) =~ s|.*/||mx;
|
|
( my $DIR = $0 ) =~ s|/?[^/]*$||mx;
|
|
$DIR = '.' unless $DIR;
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Declarations
|
|
#-------------------------------------------------------------------------------
|
|
#
|
|
# Constants and other declarations
|
|
#
|
|
my $basedir = "$ENV{HOME}/HPR/Database";
|
|
my $configfile = "$basedir/.hpr_db.yml";
|
|
|
|
my ( $dbh, $sth1, $sth2, $sth3, $sth4, $h1, $h2, $rv );
|
|
|
|
#
|
|
# Enable Unicode mode
|
|
#
|
|
binmode STDOUT, ":encoding(UTF-8)";
|
|
binmode STDERR, ":encoding(UTF-8)";
|
|
|
|
#
|
|
# Load configuration data
|
|
#
|
|
my %config = %{ LoadFile($configfile) };
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Connect to the database
|
|
#-------------------------------------------------------------------------------
|
|
my $dbname = $config{database}->{name};
|
|
my $dbuser = $config{database}->{user};
|
|
my $dbpwd = $config{database}->{password};
|
|
$dbh
|
|
= DBI->connect( "dbi:mysql:dbname=$dbname", $dbuser, $dbpwd,
|
|
{ AutoCommit => 1 } )
|
|
or die $DBI::errstr;
|
|
|
|
#
|
|
# Enable client-side UTF8
|
|
#
|
|
$dbh->{mysql_enable_utf8} = 1;
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Set up the SQL and query the 'eps' table since everything has a series, even
|
|
# if it's 0
|
|
#-------------------------------------------------------------------------------
|
|
$sth1 = $dbh->prepare(q{SELECT * FROM eps ORDER BY id DESC});
|
|
$sth2 = $dbh->prepare(q{INSERT INTO series_eps VALUES(?,?)});
|
|
|
|
$sth1->execute;
|
|
if ( $dbh->err ) {
|
|
die $dbh->errstr;
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Walk the entire 'eps' table simply adding rows into the 'series_eps' table
|
|
#-------------------------------------------------------------------------------
|
|
while ( $h1 = $sth1->fetchrow_hashref ) {
|
|
$sth2->execute($h1->{series},$h1->{id});
|
|
if ( $dbh->err ) {
|
|
die $dbh->errstr;
|
|
}
|
|
}
|
|
|
|
exit;
|
|
|
|
# vim: syntax=perl:ts=8:sw=4:et:ai:tw=78:fo=tcrqn21:fdm=marker
|
|
|
|
|