5 package App::LazyShoppingList::API;
7 use Exporter qw(import);
11 our @EXPORT = qw( &get_database &get_lists_version &increment_lists_version
12 &invalid_input exception );
14 use Dancer2::Plugin::DBIC;
16 use experimental 'signatures';
18 my %fixed_db_settings = (
23 #my @on_db_connect_do = (
27 #hook database_connected => sub {
30 # $dbh->do($_) for @on_db_connect_do;
35 my %cfg = %{ config->{db} };
36 DBICx::Sugar::config( { default => \%cfg } );
37 $cfg{schema_class} = 'App::LazyShoppingList::Schema';
38 while(my($k,$v) = each %fixed_db_settings ) {
39 $cfg{options}{$k} = $v;
41 my $dbh = DBICx::Sugar::schema();
43 warn to_json(DBICx::Sugar::get_config());
50 sub get_lists_version($dbh) {
51 my $g = $dbh->resultset('Globals')->single;
52 return $g->lists_version;
55 sub increment_lists_version($dbh) {
56 $dbh->storage->dbh_do(
58 my ( $storage, $dbh ) = @_;
60 'UPDATE globals SET lists_version = lists_version + 1');
64 my $g = $dbh->resultset('Globals')->single;
65 return $g->lists_version;
68 sub invalid_input($details = undef) {
70 "Invalid input" . ( defined($details) ? " ($details)" : '' );
73 sub exception($http_code, $text) {
75 return { exception => $text };