diff options
| author | fukachan <fukachan> | 2001-03-18 04:40:26 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-03-18 04:40:26 +0000 |
| commit | 5cde1627879fdbb147977caab63e3f339004860b (patch) | |
| tree | 2b53da62d72e0f780cf3419dd6bb15c322823bed /fml/lib/IO | |
| parent | 21047bfa4d80d8d2793c58cd6446252cea88d4d6 (diff) | |
| download | fml8-5cde1627879fdbb147977caab63e3f339004860b.tar.gz fml8-5cde1627879fdbb147977caab63e3f339004860b.tar.bz2 fml8-5cde1627879fdbb147977caab63e3f339004860b.zip | |
modify MySQL adapter interface
move model specific part to SQL::Schema class
remove IO::Adapter::MySQL class
Diffstat (limited to 'fml/lib/IO')
| -rw-r--r-- | fml/lib/IO/Adapter/MySQL.pm | 106 | ||||
| -rw-r--r-- | fml/lib/IO/Adapter/MySQL/toymodel.pm | 163 |
2 files changed, 83 insertions, 186 deletions
diff --git a/fml/lib/IO/Adapter/MySQL.pm b/fml/lib/IO/Adapter/MySQL.pm index 347412c0..fc34a57b 100644 --- a/fml/lib/IO/Adapter/MySQL.pm +++ b/fml/lib/IO/Adapter/MySQL.pm @@ -40,7 +40,28 @@ sub new my ($type) = ref($self) || $self; my $me = {}; - $me->{ _ml_name } = $args->{ ml_name }; + $me->{ _ml_name } = $args->{ ml_name } || ''; + $me->{ _databse } = $args->{ database } || 'fml'; + $me->{ _table } = $args->{ table } || 'ml'; + $me->{ _sql_server } = $args->{ sql_server } || 'localhost'; + $me->{ _sql_user } = $args->{ sql_user } || 'fml'; + $me->{ _sql_user_password} = $args->{ sql_user_password } || ''; + + # load model dependent module specified by $args->{ schema }; + if (defined $args->{ schema }) { + my $schema = $args->{ schema }; + my $pkg = "SQL::Schema::${schema}"; + my $obj = ''; + eval qq{ require $pkg; $pkg->import(); \$obj = $pkg->new(); }; + unless ($@) { + $me->{ _schema } = $obj; + } + else { + print $@; + error_reason($me, $@); + return undef; + } + } return bless $me, $type; } @@ -65,16 +86,17 @@ sub open use DBD::mysql; my $driver = 'mysql'; - my $database = $args->{ database } || $self->{ _databse } || 'fml'; - my $table = $args->{ table } || $self->{ _table } || 'ml'; - my $host = $args->{ sql_server } || $self->{ _sql_server } || 'localhost'; - my $dsn = "DBI:$driver:$database:$host"; - my $user = $args->{ sql_user } || 'fml' || ''; - my $password = $args->{ sql_user_password} || ''; - + my $database = $args->{database} || $self->{_databse} || 'fml'; + my $table = $args->{table} || $self->{_table} || 'ml'; + my $host = $args->{sql_server} || $self->{_sql_server} || 'localhost'; + my $user = $args->{sql_user} || $self->{ _sql_user } || 'fml'; + my $password = + $args->{sql_user_password} || $self->{_sql_user_password} || ''; + + my $dsn = "DBI:$driver:$database:$host"; my $dbh = DBI->connect($dsn, $user, $password); unless (defined $dbh) { - $args->{'error'} = $DBI::errstr; + $self->error_reason( $DBI::errstr ); return undef; } @@ -99,6 +121,12 @@ sub close =head2 C<getline()> +return the next address. + +=head2 C<get_next_value()> + +same as C<getline()> now. + =cut @@ -107,34 +135,43 @@ sub _res_configure my ($self, $args) = @_; unless ($self->{ _res }) { - my $ml = $self->{ _ml_name }; - my $file = $self->{ _file } || 'members'; + my $ml = $self->{ _ml_name }; + my $file = $self->{ _file } || 'members'; my $query = "select address from ml "; $query .= "where ml='$ml' and file='$file' "; $self->execute({ query => $query }); } + else { + $self->error_reason( $DBI::errstr ); + return undef; + } } sub getline { my ($self, $args) = @_; + $self->_res_configure($args) unless $self->{ _res }; - my @row = $self->{ _res }->fetchrow_array; - join(" ", @row); + if ($self->{ _res }) { + my @row = $self->{ _res }->fetchrow_array; + join(" ", @row); + } + else { + $self->error_reason( $DBI::errstr ); + undef; + } } sub get_next_value { my ($self, $args) = @_; - $self->_res_configure($args) unless $self->{ _res }; - my @row = $self->{ _res }->fetchrow_array; - $row[0]; + $self->getline($args); } -=head2 C<execute($args) +=head2 C<execute($args)> execute sql query. @@ -144,6 +181,7 @@ execute sql query. =cut + sub execute { my ($self, $args) = @_; @@ -152,21 +190,43 @@ sub execute if (defined $dbh) { my $res = $dbh->prepare($query); - $res->execute; - unless (defined $res) { - $self->error_reason( $DBI::errstr ); - return undef; - } - else { + if (defined $res) { + $res->execute; $self->{ _res } = $res; return $res; } + else { + $self->error_reason( $DBI::errstr ); + return undef; + } } else { + $self->error_reason( $DBI::errstr ); return undef; } } + +=head2 C<error_reason($mesg)> + +=head2 C<error()> + +=cut + +sub error_reason +{ + my ($self, $mesg) = @_; + $self->{ _error } = $mesg; +} + + +sub error +{ + my ($self) = @_; + return $self->{ _error }; +} + + 1; diff --git a/fml/lib/IO/Adapter/MySQL/toymodel.pm b/fml/lib/IO/Adapter/MySQL/toymodel.pm deleted file mode 100644 index 0c3c704f..00000000 --- a/fml/lib/IO/Adapter/MySQL/toymodel.pm +++ /dev/null @@ -1,163 +0,0 @@ -#-*- perl -*- -# -# Copyright (C) 2000 Ken'ichi Fukamachi -# All rights reserved. -# -# $Id$ -# - - -package IO::Adapter::MySQL::toymodel; - - -use strict; -use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); -use Carp; - -=head1 NAME - -IO::Adapter::MySQL::toymodel - toymodel with SQL - -=head1 SYNOPSIS - -=head1 DESCRIPTION - -=head1 METHODS - -=cut - -sub new -{ - my ($self, $args) = @_; - my ($type) = ref($self) || $self; - my $me = {}; - - $me->{ _ml_name } = $args->{ ml_name }; - - return bless $me, $type; -} - - -=head2 C<open($args)> - -=head2 C<close($args)> - -=cut - - -# Descriptions: -# Arguments: $self $args -# Side Effects: -# Return Value: none -sub open -{ - my ($self, $args) = @_; - - use DBI; - use DBD::mysql; - - my $driver = 'mysql'; - my $database = $args->{ database_name } || 'fml'; - my $host = $args->{ sql_server } || 'localhost'; - my $dsn = "DBI:$driver:$database:$host"; - my $user = $args->{ sql_user } || 'fml' || ''; - my $password = $args->{ sql_user_password} || ''; - - my $dbh = DBI->connect($dsn, $user, $password); - unless (defined $dbh) { - $args->{'error'} = $DBI::errstr; - return undef; - } - - $self->{ _dbh } = $dbh; -} - - -# Descriptions: -# Arguments: $self $args -# Side Effects: -# Return Value: none -sub close -{ - my ($self, $args) = @_; - my $res = $self->{ _res }; - my $dbh = $self->{ _dbh }; - - $res->finish if defined $res; - $dbh->disconnect if defined $dbh; -} - - -=head2 C<getline()> - -=cut - - -sub _res_configure -{ - my ($self, $args) = @_; - - unless ($self->{ _res }) { - my $ml = $self->{ _ml_name }; - my $file = $self->{ _file } || 'members'; - my $query = "select address from ml "; - $query .= "where ml='$ml' and file='$file' "; - $self->execute({ query => $query }); - } -} - - -sub getline -{ - my ($self, $args) = @_; - $self->_res_configure($args) unless $self->{ _res }; - my @row = $self->{ _res }->fetchrow_array; - join(" ", @row); -} - - -sub get_next_value -{ - my ($self, $args) = @_; - $self->_res_configure($args) unless $self->{ _res }; - my @row = $self->{ _res }->fetchrow_array; - $row[0]; -} - - -=head2 C<execute($args) - -execute sql query. - - $args->{ - query => sql_query_statment, - }; - -=cut - -sub execute -{ - my ($self, $args) = @_; - my $dbh = $self->{ _dbh }; - my $query = $args->{ query }; - - if (defined $dbh) { - my $res = $dbh->prepare($query); - $res->execute; - - unless (defined $res) { - $self->error_reason( $DBI::errstr ); - return undef; - } - else { - $self->{ _res } = $res; - return $res; - } - } - else { - return undef; - } -} - - -1; |
