DBIx::Otogiri - Core of Otogiri
use Otogiri; my $db = Otogiri->new(connect_info => ['dbi:SQLite:...', '', '']); $db->insert(book => {title => 'mybook1', author => 'me', ...}); my $book_id = $db->last_insert_id; my $row = $db->single(book => {id => $book_id}); print 'Title: '. $row->{title}. "\n"; my @rows = $db->select(book => {price => {'>=' => 500}}); for my $r (@rows) { printf "Title: %s \nPrice: %s yen\n", $r->{title}, $r->{price}; } $db->update(book => [author => 'oreore'], {author => 'me'}); $db->delete(book => {author => 'me'}); ### using transaction do { my $txn = $db->txn_scope; $db->insert(book => ...); $db->insert(store => ...); $txn->commit; };
DBIx::Otogiri is core feature class of Otogiri.
connect_info => [$dsn, $dbuser, $dbpass],
You have to specify dsn, dbuser, and dbpass, to connect to database.
dsn
dbuser
dbpass
In strict mode, all the expressions must be declared by using blessed references that export as_sql and bind methods like SQL::QueryMaker.
Please see METHODS section of SQL::Maker's documentation.
use JSON; inflate => sub { my ($data, $tablename, $db) = @_; if (defined $data->{json}) { $data->{json} = decode_json($data->{json}); } $data->{table} = $tablename; $data; },
You may specify column inflation logic.
Specified code is called internally when called select(), search_by_sql(), and single().
$db is Otogiri instance, you can use Otogiri's method in inflate logic.
$db
use JSON; deflate => sub { my ($data, $tablename, $db) = @_; if (defined $data->{json}) { $data->{json} = encode_json($data->{json}); } delete $data->{table}; $data; },
You may specify column deflation logic.
Specified code is called internally when called insert(), update(), and delete().
$db is Otogiri instance, you can use Otogiri's method in deflate logic.
my $db = DBIx::Otogiri->new( connect_info => [$dsn, $dbuser, $dbpass] );
Instantiate and connect to db.
Please see ATTRIBUTE section.
my $last_insert_id = $db->insert($table_name => $columns_in_hashref);
Insert a data simply.
### receive rows of result in array my @rows = $db->search($table_name => $conditions_in_hashref [,@options]); ### or we can receive result as iterator object my $iter = $db->search($table_name => $conditions_in_hashref [,@options]); while (my $row = $iter->next) { ... any logic you want ... } printf "rows = %s\n", $iter->fetched_count;
Select from specified table. When you receive result by array, it returns matched rows. Or not, it returns a result as DBIx::Otogiri::Iterator object.
my $row = $db->fetch($table_name => $conditions_in_hashref [,@options]);
Select from specified table. Then, returns first of matched rows.
my @rows = $db->search_by_sql($sql, \@bind_vals [, $table_name]);
Select by specified SQL. Then, returns matched rows as array. $table_name is optional and used for inflate parameter.
$db->update($table_name => [update_col_1 => $new_value_1, ...], $conditions_in_hashref);
Update rows that matched to $conditions_in_hashref.
$db->delete($table_name => $conditions_in_hashref);
Delete rows that matched to $conditions_in_hashref.
$db->do($sql, @bind_vals);
Execute specified SQL.
my $txn = $db->txn_scope;
returns DBIx::TransactionManager::ScopeGuard's instance. See DBIx::TransactionManager to more information.
my $id = $db->last_insert_id([@args]);
returns last_insert_id. (mysql_insertid in MySQL or last_insert_rowid in SQLite)
disconnect database.
reconnect database.
Copyright (C) ytnobody.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
ytnobody <ytnobody@gmail.com>
DBIx::Sunny
SQL::Maker
DBIx::Otogiri::Iterator
To install Otogiri, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Otogiri
CPAN shell
perl -MCPAN -e shell install Otogiri
For more information on module installation, please visit the detailed CPAN module installation guide.