Atsushi Kobayashi > DBIx-Skinny-0.05 > DBIx::Skinny

Download:
DBIx-Skinny-0.05.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.05   Source   Latest Release: DBIx-Skinny-0.0742

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.

syntax highlighting: