Skip to content
Snippets Groups Projects
Verified Commit 4490def3 authored by Andrej Ramašeuski's avatar Andrej Ramašeuski
Browse files

Database support

parent 33a0aef8
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ image: docker:20.10.9 ...@@ -2,7 +2,7 @@ image: docker:20.10.9
variables: variables:
DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_CERTDIR: "/certs"
IMAGE_VER: 0.4.0 IMAGE_VER: 0.5.0
services: services:
- docker:20.10.9-dind - docker:20.10.9-dind
......
...@@ -6,15 +6,18 @@ RUN apt-get update && apt-get install -y \ ...@@ -6,15 +6,18 @@ RUN apt-get update && apt-get install -y \
build-essential \ build-essential \
libcrypt-openssl-rsa-perl \ libcrypt-openssl-rsa-perl \
libdigest-sha-perl \ libdigest-sha-perl \
libdbd-pg-perl \
libdbi-perl \
libdbix-class-perl \
libmodule-build-tiny-perl \ libmodule-build-tiny-perl \
libio-socket-ssl-perl \ libio-socket-ssl-perl \
libjson-perl \
libyaml-perl \ libyaml-perl \
libyaml-dev libyaml-dev
# libnet-ssleay-perl \
RUN cpanm \ RUN cpanm \
Mojolicious \ Mojolicious \
Mojo::Pg \
Mojo::Redis \ Mojo::Redis \
Mojo::JWT \ Mojo::JWT \
Mojolicious::Plugin::OpenAPI Mojolicious::Plugin::OpenAPI
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
groups_url => 'https://iapi.pirati.cz/v1/groups', groups_url => 'https://iapi.pirati.cz/v1/groups',
pretix_api => 'https://pretix.pir-test.eu/api/v1', pretix_api => 'https://pretix.pir-test.eu/api/v1',
pretix_token => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', pretix_token => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
pretix_testmode => 1,
pretix_organizer => 'pirati', pretix_organizer => 'pirati',
pretix_event => 'cf2022', pretix_event => 'cf2022',
pretix_qid_sso => 29, # identifikator otazky SSO UID pretix_qid_sso => 29, # identifikator otazky SSO UID
......
package CF2022; package CF2022;
use Mojo::Base 'Mojolicious'; use Mojo::Base 'Mojolicious';
use Mojo::Pg;
use Mojo::Redis; use Mojo::Redis;
use CF2022::Schema;
# This method will run once at server start # This method will run once at server start
sub startup { sub startup {
...@@ -21,6 +23,35 @@ sub startup { ...@@ -21,6 +23,35 @@ sub startup {
# my $redis = Mojo::Redis->new( $cfg->{redis} ); # my $redis = Mojo::Redis->new( $cfg->{redis} );
# $self->helper( redis => sub { return $redis; } ); # $self->helper( redis => sub { return $redis; } );
# migrace schematu
my $pg = Mojo::Pg->new
->dsn($cfg->{db_dsn})
->username($cfg->{db_username})
->password($cfg->{db_password})
;
if ($cfg->{test}) {
$pg->search_path(['test']);
$pg->db->query('drop schema if exists test cascade');
$pg->db->query('create schema test');
}
$pg->migrations->from_dir($self->home . '/sql');
$pg->migrations->migrate();
$self->helper( pg => sub { return $pg; } );
# DB Schema
my $schema = CF2022::Schema->connect({
dsn => $cfg->{db_dsn},
user => $cfg->{db_username},
password => $cfg->{db_password},
});
if ( $cfg->{test} ) {
$schema->storage->dbh->do("set search_path to test") ;
}
$self->helper( schema => sub { return $schema; } );
$self->helper( schema => sub { return $schema; } );
$self->plugin('CF2022::Helpers::Core'); $self->plugin('CF2022::Helpers::Core');
$self->plugin('CF2022::Helpers::Auth'); $self->plugin('CF2022::Helpers::Auth');
......
package CF2022::Schema;
use strict;
use warnings;
use base 'DBIx::Class::Schema';
our $VERSION = 1;
__PACKAGE__->load_namespaces;
1;
package CF2022::Schema::Result::Order;
use strict;
use warnings;
use base 'DBIx::Class::Core';
use JSON;
our $VERSION = 1;
__PACKAGE__->table('orders');
__PACKAGE__->add_columns(
qw(
id
created
ip
sso_uuid
email
api
request
response
),
);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->inflate_column('request', {
inflate => sub {
return from_json(shift);
},
deflate => sub {
return to_json(shift);
},
});
__PACKAGE__->inflate_column('response', {
inflate => sub {
return from_json(shift);
},
deflate => sub {
return to_json(shift);
},
});
1;
create sequence "uid_seq" start 100000;
create table "orders" (
"id" integer not null default nextval('uid_seq'),
"created" timestamp(0) not null default now(),
"ip" inet not null,
"sso_uuid" varchar(36),
"email" text not null,
"api" text not null,
"request" text,
"response" text,
primary key("id")
);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment