NAME
DBIx::Skinny - simple DBI wrapper/ORMapper
SYNOPSIS
package Your::Model;
use DBIx::Skinny setup => {
dsn => 'dbi:SQLite:',
username => '',
password => '',
};
1;
package Your::Model::Schema;
use DBIx::Skinny::Schema;
install_table user => schema {
pk 'id';
columns qw/
id
name
/;
};
1;
# in your script:
use Your::Model;
# insert
my $row = Your::Model->insert('user',
{
id => 1,
}
);
$row->update({name => 'nekokak'});
$row = Your::Model->search_by_sql(q{SELECT id, name FROM user WHERE id = ?}, [ 1 ]);
$row->delete('user')
DESCRIPTION
DBIx::Skinny is simple DBI wrapper and simple O/R Mapper.
METHOD
new
create your skinny instance.
It is possible to use it even by the class method.
my $db = Your::Model->new($connection_info);
$connection_info is optional argment.
When $connection_info is specified, new method connect new DB connection from $connection_info.
When $connection_info is not specified, it becomes use already setup connection or it doesn't do at all.
example:
my $db = Your::Model->new;
or
# connect new database connection.
my $db = Your::Model->new(+{
dsn => $dsn,
username => $username,
password => $password,
connect_options => $connect_options,
});
insert
insert new record and get inserted row object.
my $row = Your::Model->insert($table, \%row_data);
return object is a DBIx::Skinny::Row's object.
example:
my $row = Your::Model->insert('user',{
id => 1,
name => 'nekokak',
});
or
my $db = Your::Model->new;
my $row = $db->insert('user',{
id => 1,
name => 'nekokak',
});
bulk_insert
insert many record.
Your::Model->bulk_insert($table, \@rows);
example:
Your::Model->bulk_insert('user',[
{
id => 1,
name => 'nekokak',
},
{
id => 2,
name => 'yappo',
},
{
id => 3,
name => 'walf443',
},
]);
create
insert method alias.
update
update record. return update row count.
my $cnt = Your::Model->update($table, \%update_column);
example:
my $update_row_count = Your::Model->update('user',{
name => 'nomaneko',
},{ id => 1 });
update_by_sql
update record by specific sql. return update row count.
example: my $update_row_count = Your::Model->update_by_sql( q{UPDATE user SET name = ?}, 'nomaneko' );
delete
delete record. return delete row count.
my $cnt = Your::Model->delete($table, \%delete_where_condition);
example: my $delete_row_count = Your::Model->delete('user',{ id => 1, });
delete_by_sql
delete record by specific sql. return delete row count.
example:
my $delete_row_count = Your::Model->delete_by_sql(
q{DELETE FROM user WHERE id = ?},
[1]
});
find_or_create
create record if not exsists record.
my $row = Your::Model->find_or_create($table, \%row);
return object is a DBIx::Skinny::Row's object.
example:
my $row = Your::Model->find_or_create('usr',{
id => 1,
name => 'nekokak',
});
find_or_insert
find_or_create method alias.
search
simple search method.
get iterator:
my $itr = Your::Model->search('user',{id => 1},{order_by => 'id'});
get rows:
my @rows = Your::Model->search('user',{id => 1},{order_by => 'id'});
single
get one record
my $row = Your::Model->single('user',{id =>1});
resultset
result set case:
my $rs = Your::Model->resultset(
{
select => [qw/id name/],
from => [qw/user/],
}
);
$rs->add_where('name' => {op => 'like', value => "%neko%"});
$rs->limit(10);
$rs->offset(10);
$rs->order({ column => 'id', desc => 'DESC' });
my $itr = $rs->retrieve;
count
get simple count
my $cnt = Your::Model->count('user', 'id');
search_named
execute named query
my $itr = Your::Model->search_named(q{SELECT * FROM user WHERE id = :id}, {id => 1});
search_by_sql
execute your SQL
my $itr = Your::Model->search_by_sql(q{
SELECT
id, name
FROM
user
WHERE
id = ?
},[ 1 ]);
txn_scope
get transaction scope object.
do {
my $txn = Your::Model->txn_scope;
# some process
$txn->commit;
}
data2itr
my $itr = Your::Model->data2itr('user',[
{
id => 1,
name => 'nekokak',
},
{
id => 2,
name => 'yappo',
},
{
id => 3,
name => 'walf43',
},
]);
my $row = $itr->first;
$row->insert; # inser data.
find_or_new
my $row = Your::Model->find_or_new('user',{name => 'nekokak'});
do
execute your query.
dbh
get database handle.
connect
connect database handle.
reconnect
re connect database handle.
BUGS AND LIMITATIONS
No bugs have been reported.
AUTHOR
Atsushi Kobayashi <nekokak __at__ gmail.com>
CONTRIBUTORS
walf443 : Keiji Yoshimi
TBONE : Terrence Brannon
nekoya : Ryo Miyake
oinume: Kazuhiro Oinuma
fujiwara: Shunichiro Fujiwara
pjam: Tomoyuki Misonou
REPOSITORY
git clone git://github.com/nekokak/p5-dbix-skinny.git
LICENCE AND COPYRIGHT
Copyright (c) 2009, Atsushi Kobayashi <nekokak __at__ gmail.com>
. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.