package MyApp::Model::DBI;

use strict;
use warnings;
use base 'Catalyst::Model::DBI';

# skipped some configuration statements

__PACKAGE__->config(
    'dsn'       => 'dbi:mysql:' . $config->{'sql'}->{'database'} . ':' . $config->{'sql'}->{'host'},
    'user'      => $config->{'sql'}->{'user'},
    'password'  => $config->{'sql'}->{'password'},
    'options'   => {
        'AutoCommit'        => 1,
        'mysql_enable_utf8' => 1,
    },
    'on_connect_do' => [
        'SET NAMES utf8',
    ],
    # 'flags' => { 'some_flag' => 1 }, # used after connection
);

=head2 connect

Connect to database and perform some queries

=cut

sub connect {
    my $self = shift;
    my $dbh = $self->SUPER::connect;
    return undef
        unless defined $dbh;
    # After connection
    # set flags
    while ( my ( $key, $value ) = each %{ $self->{ 'flags' } } ) {
        $self->dbh->{ $key } = $value;
    };
    # do queries
    map { $dbh->do( $_ ) } @{ $self->{ 'on_connect_do' } };
    return $dbh;
} # sub connect


=head1 NAME

MyApp::Model::DBI - DBI Model Class

=head1 SYNOPSIS

See L<MyApp> and L<Catalyst::Model::DBI>

=head1 DESCRIPTION

DBI Model Class.
Extended from Catalyst::Model::DBI: added support for UTF-8 with MySQL

=head1 AUTHOR

Alex Pavlovic, Alexander Sapozhnikov

=head1 LICENSE

This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.

=cut

1;