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; |
|
use Storable; |
|
|
use Data::Dump qw/dump/; |
|
|
use URI::Escape; |
|
5 |
|
|
6 |
my $dsn = 'dbi:Pg:dbname=new'; |
my $dsn = 'dbi:Pg:dbname=new'; |
7 |
$dsn = 'dbi:SQLite:dbname=./var/strix.sqlite'; |
$dsn = 'dbi:SQLite:dbname=./var/strix.sqlite'; |
8 |
|
|
9 |
my $schema_file = 'var/schema.' . uri_escape( $dsn ); |
my ( $schema, $source ) = Frey::Schema->schema_source( $dsn ); |
|
|
|
|
warn "Database $dsn schema cache $schema_file\n"; |
|
|
|
|
|
my $source = Fey::DBIManager::Source->new( dsn => $dsn ); |
|
|
|
|
|
my $schema; |
|
|
#if ( 0 ) { # FIXME |
|
|
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: $!"; |
|
|
} |
|
10 |
|
|
11 |
has_schema $schema; |
has_schema $schema; |
12 |
|
|
14 |
|
|
15 |
__PACKAGE__->DBIManager()->add_source($source); |
__PACKAGE__->DBIManager()->add_source($source); |
16 |
|
|
|
warn "loaded."; |
|
|
|
|
17 |
1; |
1; |