package Common::DB::Export;

use strict;
use warnings;

use base 'Class::Accessor';

use lib '/app/tools/common/lib';
use Common::Session;
use Common::DB::Export::Directory;

__PACKAGE__->mk_accessors(qw/database schema redshift_schema directory exporter/);

sub new {
    my $class    = shift;
    my $database = shift;
    if ( not defined $database ) {
        logMessage( 'error', __PACKAGE__ . ' requires a database' );
        exit 1;
    }
    my $self = { 'database' => $database };
    bless $self, $class;
    $self->_init;
	$self;
}

sub _init {
    my $self = shift;

	$self->_init_db;

    my $red_schema = 'royshare.' . lc( $self->database->client_type );
    $self->redshift_schema($red_schema);

	my $dir = Common::DB::Export::Directory->new();
	$dir->schema($self->schema);
	$self->directory($dir);
	$self;

}

sub _init_db {
	my $self = shift;

    ## get the database definition from the admin database;
    my $dbx = Common::Session::getdbx('admindb');
    my $db  = $dbx->resultset('Report::DDb')->search( { 'db_name' => $self->database } )->first;
    if ( not defined $db ) {
        logMessage( 'error', $self->database . ' not found in admindb' );
        exit 1;
    }
    $dbx->getdbh->disconnect;
	undef $dbx;
    $self->database($db);
	$self->schema($self->database->db_name);

	$db;

}

1;
