File Coverage

blib/lib/DBIx/DataModel.pm
Criterion Covered Total %
statement 32 32 100.0
branch 7 8 87.5
condition 4 6 66.6
subroutine 9 9 100.0
pod 1 2 50.0
total 53 57 92.9


line stmt bran cond sub pod time code
1             #----------------------------------------------------------------------
2             package DBIx::DataModel;
3             #----------------------------------------------------------------------
4             # see POD doc at end of file
5              
6 22     22   4758762 use 5.010;
  22         111  
7 22     22   142 use warnings;
  22         57  
  22         1381  
8 22     22   138 use strict;
  22         42  
  22         662  
9 22     22   7902 use version;
  22         36572  
  22         149  
10 22     22   11965 use MRO::Compat;
  22         42213  
  22         969  
11 22     22   14232 use DBIx::DataModel::Meta::Utils qw/does/;
  22         137  
  22         9331  
12              
13             our $VERSION = '3.14';
14              
15             # compatibility setting : see import()
16             our $COMPATIBILITY = $VERSION; # from 2.20, no longer automatic compatibility
17              
18             sub import {
19 131     131   694 my ($class, %args) = @_;
20 131 100       562 if (exists $args{-compatibility}) {
21             $COMPATIBILITY = $args{-compatibility} # explicit number
22 9   66     48 || $VERSION; # undef : means no compatibility
23             }
24              
25             require DBIx::DataModel::Compatibility::V1
26 131 100       9879 if version->parse($COMPATIBILITY) < version->parse("1.99");
27             require DBIx::DataModel::Compatibility::V0
28 131 50       6548 if version->parse($COMPATIBILITY) < version->parse("1.00");
29             }
30              
31              
32             sub define_schema {
33 24     24 0 120 my ($class, %params) = @_;
34              
35 24         8095 require DBIx::DataModel::Meta::Schema;
36 24         241 my $meta_schema = DBIx::DataModel::Meta::Schema->new(%params);
37 22         91 return $meta_schema;
38             }
39              
40             sub Schema { # syntactic sugar for ->define_schema()
41 15     15 1 1839458 my $class = shift;
42 15         95 my $schema_class_name = shift;
43 15 100 66     240 my %params = scalar(@_) == 1 && does($_[0], 'HASH') ? %{$_[0]} : @_;
  10         218  
44 15         123 my $meta_schema = $class->define_schema(class => $schema_class_name, %params);
45 14         85 return $meta_schema->class;
46             }
47              
48              
49             1; # End of DBIx::DataModel
50              
51             __END__