1 |
package Strix::Schema; |
package Strix::Schema; |
2 |
|
|
|
use Fey::DBIManager; |
|
|
use Fey::DBIManager::Source; |
|
|
use Fey::Loader; |
|
3 |
use Fey::ORM::Schema; |
use Fey::ORM::Schema; |
4 |
|
use Frey::Schema; |
5 |
|
|
6 |
use Storable; |
my $dsn = __PACKAGE__->config( __PACKAGE__ )->{dsn}; # FIXME yaaaack |
7 |
use Data::Dump qw/dump/; |
|
8 |
use URI::Escape; |
my ( $schema, $source ) = Frey::Schema->schema_source( $dsn ); |
|
|
|
|
my $dsn = 'dbi:Pg:dbname=new'; |
|
|
#$dsn = 'dbi:SQLite:dbname=./var/strix.sqlite'; |
|
|
|
|
|
my $schema_file = 'var/schema.' . uri_escape( $dsn ); |
|
|
|
|
|
warn "Database $dsn schema cache $schema_file\n"; |
|
|
|
|
|
my $source = Fey::DBIManager::Source->new( dsn => $dsn ); |
|
|
|
|
|
my $schema; |
|
|
if ( -e $schema_file ) { |
|
|
$schema = retrieve $schema_file or die "can't read schema from $schema_file: $!"; |
|
|
} else { |
|
|
$schema= Fey::Loader->new( dbh => $source->dbh() )->make_schema(); |
|
|
store $schema, $schema_file or warn "can't store schema into $schema_file: $!"; |
|
|
} |
|
9 |
|
|
10 |
has_schema $schema; |
has_schema $schema; |
11 |
|
|
12 |
|
#warn Strix::Schema->SQLFactoryClass(); |
13 |
|
|
14 |
__PACKAGE__->DBIManager()->add_source($source); |
__PACKAGE__->DBIManager()->add_source($source); |
15 |
|
|
16 |
|
$source->dbh->do( qq{ set client_encoding = 'utf-8' } ) if $dsn =~ /Pg/; |
17 |
|
|
18 |
|
1; |