no
warnings
'redefine'
;
our
$VERSION
;
BEGIN {
$VERSION
=
"0.130"
;
my
$class
= __PACKAGE__;
$RDF::Trine::Store::STORE_CLASSES
{
$class
} =
$VERSION
;
}
sub
_config_meta {
return
{
required_keys
=> [
qw(dsn username password name)
],
fields
=> {
name
=> {
description
=>
'Model Name'
,
type
=>
'string'
},
dsn
=> {
description
=>
'DSN'
,
type
=>
'string'
,
template
=>
'DBI:SQLite:dbname=[%filename%]'
},
filename
=> {
description
=>
'SQLite Database Filename'
,
type
=>
'filename'
},
username
=> {
description
=>
'Username'
,
type
=>
'string'
,
value
=>
''
},
password
=> {
description
=>
'Password'
,
type
=>
'password'
,
value
=>
''
},
driver
=> {
description
=>
'Driver'
,
type
=>
'string'
,
value
=>
'SQLite'
},
},
}
}
sub
new_with_config {
my
$proto
=
shift
;
my
$config
=
shift
;
$config
->{storetype} =
'DBI::SQLite'
;
my
$exists
= (-r
$config
->{filename});
my
$self
=
$proto
->SUPER::new_with_config(
$config
);
unless
(
$exists
) {
$self
->init();
}
return
$self
;
}
sub
init {
my
$self
=
shift
;
my
$dbh
=
$self
->dbh;
my
$name
=
$self
->model_name;
$self
->SUPER::init();
my
$id
= RDF::Trine::Store::DBI::_mysql_hash(
$name
);
$dbh
->begin_work;
$dbh
->
do
(
"CREATE INDEX idx_${name}_spog ON Statements${id} (Subject,Predicate,Object,Context);"
) ||
do
{
$dbh
->rollback;
return
undef
};
$dbh
->
do
(
"CREATE INDEX idx_${name}_pogs ON Statements${id} (Predicate,Object,Context,Subject);"
) ||
do
{
$dbh
->rollback;
return
undef
};
$dbh
->
do
(
"CREATE INDEX idx_${name}_opcs ON Statements${id} (Object,Predicate,Context,Subject);"
) ||
do
{
$dbh
->rollback;
return
undef
};
$dbh
->
do
(
"CREATE INDEX idx_${name}_cpos ON Statements${id} (Context,Predicate,Object,Subject);"
) ||
do
{
$dbh
->rollback;
return
undef
};
$dbh
->commit;
}
1;