Change CDBI storage to JSON (#877)
This commit is contained in:
parent
f80b22ea46
commit
64099c2ca3
|
@ -2,7 +2,7 @@ package Lemonldap::NG::Common::Conf::CDBI;
|
|||
|
||||
use strict;
|
||||
use utf8;
|
||||
require Storable;
|
||||
use JSON::MaybeXS;
|
||||
use Lemonldap::NG::Common::Conf::_DBI;
|
||||
|
||||
our $VERSION = '1.4.0';
|
||||
|
@ -14,7 +14,7 @@ sub store {
|
|||
my $req;
|
||||
my $lastCfg = $self->lastCfg;
|
||||
|
||||
$fields = Storable::nfreeze($fields);
|
||||
$fields = encode_json($fields);
|
||||
|
||||
if ( $lastCfg == $cfgNum ) {
|
||||
$req = $self->_dbh->prepare(
|
||||
|
@ -46,7 +46,13 @@ sub load {
|
|||
return 0;
|
||||
}
|
||||
my $r;
|
||||
eval { $r = Storable::thaw( $row->[0] ); };
|
||||
if ( $row->[0] =~ /^\s*\{/s ) {
|
||||
eval { $r = decode_json( $row->[0] ); };
|
||||
}
|
||||
else { # Old format
|
||||
require Storable;
|
||||
eval { $r = Storable::thaw( $row->[0] ); };
|
||||
}
|
||||
if ($@) {
|
||||
$Lemonldap::NG::Common::Conf::msg .=
|
||||
"Bad stored data in conf database: $@ \n";
|
||||
|
|
|
@ -9,7 +9,6 @@ use strict;
|
|||
use Test::More;
|
||||
|
||||
BEGIN {
|
||||
use_ok('DBI');
|
||||
use_ok('Lemonldap::NG::Common::Conf');
|
||||
}
|
||||
|
||||
|
@ -21,21 +20,22 @@ BEGIN {
|
|||
my $h;
|
||||
@ARGV = ("help=groups");
|
||||
unlink 't/lmConf.sql';
|
||||
my $count = 2;
|
||||
my $count = 1;
|
||||
|
||||
eval { require DBD::SQLite };
|
||||
unless ($@) {
|
||||
require DBI;
|
||||
my $dbh = DBI->connect( "dbi:SQLite:dbname=t/lmConf.sql", '', '', {AutoCommit=>1} );
|
||||
use_ok('DBI');
|
||||
my $dbh = DBI->connect( "dbi:SQLite:dbname=t/lmConf.sql",
|
||||
'', '', { AutoCommit => 1 } );
|
||||
$dbh->{sqlite_unicode} = 1;
|
||||
ok(
|
||||
$dbh->do(
|
||||
' CREATE TABLE lmConfig ( cfgNum int not null primary key, data longblob)'
|
||||
' CREATE TABLE lmConfig ( cfgNum int not null primary key, data text)'
|
||||
),
|
||||
'Database created'
|
||||
'Test database created'
|
||||
);
|
||||
undef $dbh;
|
||||
$count++;
|
||||
$count += 2;
|
||||
|
||||
ok(
|
||||
$h = new Lemonldap::NG::Common::Conf(
|
||||
|
@ -66,11 +66,11 @@ unless ($@) {
|
|||
);
|
||||
|
||||
for ( my $i = 0 ; $i < @test ; $i++ ) {
|
||||
ok( $h->store( $test[$i] ) == $i+1, "Test $i is stored" )
|
||||
ok( $h->store( $test[$i] ) == $i + 1, "Test $i is stored" )
|
||||
or print STDERR "$Lemonldap::NG::Common::Conf::msg $!";
|
||||
$count++;
|
||||
my $cfg;
|
||||
ok( $cfg = $h->load($i+1), "Test $i can be read" )
|
||||
ok( $cfg = $h->load( $i + 1 ), "Test $i can be read" )
|
||||
or print STDERR $Lemonldap::NG::Common::Conf::msg;
|
||||
ok( $cfg->{test} eq $test[$i]->{test}, "Test $i is restored" );
|
||||
$count += 2;
|
||||
|
|
Loading…
Reference in New Issue
Block a user