#!/usr/bin/perl use strict; use DBI; use Log::Log4perl; Log::Log4perl::init( 'log4perl.conf' ); use SPOPS::Initialize; my $DBI_DSN = 'DBI:Pg:dbname=test'; my $DBI_USER = 'username'; my $DBI_PASS = 'password'; my ( $DBH ); END { remove_demo_table(); } { create_demo_table(); fill_demo_table(); my $config = { 'demo' => { class => 'My::Demo', isa => [ 'SPOPS::DBI' ], base_table => 'spops_find_defaults', id_field => 'email', field_discover => 'yes', rules_from => [ 'SPOPS::Tool::DBI::DiscoverField', 'SPOPS::Tool::DBI::FindDefaults' ], find_default_id => 'test@test.com', find_default_field => [ 'language', 'country' ], }, }; SPOPS::Initialize->process({ config => $config }); my $demo = My::Demo->new(); print "Default for language: ($demo->{language})\n", "Default for country: ($demo->{country})\n"; } sub create_demo_table { My::Demo::global_datasource_handle(); my $sql = <do( $sql ); } sub fill_demo_table { my $sql = <<'NEW'; INSERT INTO spops_find_defaults ( email, language, country ) VALUES ( 'test@test.com', 'en', 'USA' ) NEW $DBH->do( $sql ); } sub remove_demo_table { $DBH->do( 'DROP TABLE spops_find_defaults' ); } sub My::Demo::global_datasource_handle { return $DBH if ( $DBH ); $DBH = DBI->connect( $DBI_DSN, $DBI_USER, $DBI_PASS, { RaiseError => 1, PrintError => 0 } ); die "Cannot connect! $DBI::errstr" unless ( $DBH ); return $DBH; }