3. DBI BACKGROUND
+ Perl Database Interface Module
+ High level layer to interact with databases
4. DBI BACKGROUND
+ Awesome module which can connect to any database you
ask
+ Uniform interface to handle different types of databases
5. + Is an ORM (Object Relational Mapper)
+ SQL => Object
DBIX::CLASS
+ Database tables becomes Object
+ Table data and relationships between tables become object
methods
7. + Founded by Matt S. Trout (mst)
+ Website:
DBIX::CLASS
http://www.dbix-class.org/
8. + Benefits?
DBIX::CLASS
+ No more writing SQL
+ Make your coding easier
+ Cross DB: Majority of code should run on all databases
+ SQL statements are executed when it is needed (perfoma)
9. + User Role Mangement Example
DBIX EXAMPLE: GENERATE SCHEMA
11. + make_schema_at using simple perl script
DBIX EXAMPLE: GENERATE SCHEMA
#!/usr/bin/env perl
use FindBin;
use Getopt::Std;
use Data::Dumper;
use lib "$FindBin::Bin/../lib";
use DBIx::Class::Schema::Loader 'make_schema_at';
our ($opt_F, $opt_d);
getopts('Fd');
make_schema_at('DBIxTest::Schema',
{
debug => !!($opt_d),
really_erase_my_files => !!($opt_F),
dump_directory=>"$FindBin::Bin/lib",
overwrite_modifications=>1,
preserve_case=>1,
},
['dbi:Pg:dbname=dbix_test','sheeju','sheeju',
{'quote_char' => '"', 'quote_field_names' => '0', 'name
],
);
12. + DBIxTest/Schema.pm
DBIX EXAMPLE: GENERATE SCHEMA
use utf8;
package DBIxTest::Schema;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
use strict;
use warnings;
use base 'DBIx::Class::Schema';
__PACKAGE__->load_namespaces;
1;