Group
Extension

Daje-Workflow-Database/lib/Daje/Workflow/Database/Connector.pm

package Daje::Workflow::Database::Connector;
use Mojo::Base -base, -signatures;

use Daje::Workflow::Database::Model::Workflow;
use Daje::Workflow::Database::Model::Context;

# NAME
# ====
#
# Daje::Workflow::Database::Connector
#
#
# REQUIRES
# ========
#
# Daje::Workflow::Database::Model::Context>
#
# Daje::Workflow::Database::Model::Workflow>
#
# Mojo::Base>
#
#
# METHODS
# =======
#
#  load($self)
#
#  load_context($self)
#
#  load_workflow($self)
#
#  save_context($self)
#
#  save_workflow($self)
#
#  start($self)
#
#  stop($self,
#
# LICENSE
# =======
#
# Copyright (C) janeskil1525.
#
# This library is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself.
#
# AUTHOR
# ======
#
# janeskil1525 E<lt>janeskil1525@gmail.comE<gt>
#

has 'pg';
has 'db';
has 'workflow_pkey';
has 'workflow';
has 'context';

sub start($self) {

    $self->pg->migrations->name('workflow')->from_data(
        'Daje::Workflow::Database::Connector', 'workflow'
    )->migrate(2);

    my $data = $self->load();

    return $data;
}

sub stop($self, $workflow, $context) {
    $self->save_workflow($workflow);
    $context->{workflow_fkey} = $workflow->{workflow_pkey};
    $self->save_context($context);
}

sub load($self) {
    my $data->{workflow} = $self->load_workflow();
    $self->workflow_pkey($data->{workflow}->{workflow_pkey});
    $data->{context} = $self->load_context();
    return $data;
}

sub load_workflow($self) {
    my $data = Daje::Workflow::Database::Model::Workflow->new(
        db            => $self->db,
        workflow_pkey => $self->workflow_pkey,
        workflow      => $self->workflow,
    )->load();

    return $data;
}

sub save_workflow($self, $data) {
    my $workflow_pkey = Daje::Workflow::Database::Model::Workflow->new(
        db => $self->db
    )->save(
        $data
    );
    return $workflow_pkey;
}

sub load_context($self) {
    my $data = Daje::Workflow::Database::Model::Context->new(
        db => $self->db,
        workflow_pkey => $self->workflow_pkey
    )->load_fk();

    return $data;
}

sub save_context($self, $data) {
    Daje::Workflow::Database::Model::Context->new(
        db => $self->db
    )->save(
        $self->context
    );
    return ;
}
1;

__DATA__

@@ workflow

-- 1 up

CREATE TABLE IF NOT EXISTS workflow
(
    workflow_pkey serial not null primary key,
    editnum bigint NOT NULL DEFAULT 1,
    insby varchar NOT NULL DEFAULT 'System',
    insdatetime timestamp without time zone NOT NULL DEFAULT NOW(),
    modby varchar NOT NULL DEFAULT 'System',
    moddatetime timestamp without time zone NOT NULL DEFAULT NOW(),
    name varchar not null,
    state varchar not null
);

CREATE TABLE IF NOT EXISTS context
(
    context_pkey serial not null primary key,
    editnum bigint NOT NULL DEFAULT 1,
    insby varchar NOT NULL DEFAULT 'System',
    insdatetime timestamp without time zone NOT NULL DEFAULT NOW(),
    modby varchar NOT NULL DEFAULT 'System',
    moddatetime timestamp without time zone NOT NULL DEFAULT NOW(),
    workflow_fkey bigint not null,
    context JSON,
    CONSTRAINT context_workflow_fkey FOREIGN KEY (workflow_fkey)
        REFERENCES workflow (workflow_pkey)
);

CREATE INDEX IF NOT EXISTS idx_context_workflow_fkey
    ON context(workflow_fkey);

CREATE TABLE IF NOT EXISTS history
(
    history_pkey serial not null primary key,
    editnum bigint NOT NULL DEFAULT 1,
    insby varchar NOT NULL DEFAULT 'System',
    insdatetime timestamp without time zone NOT NULL DEFAULT NOW(),
    modby varchar NOT NULL DEFAULT 'System',
    moddatetime timestamp without time zone NOT NULL DEFAULT NOW(),
    workflow_fkey bigint not null,
    history varchar,
    CONSTRAINT history_workflow_fkey FOREIGN KEY (workflow_fkey)
        REFERENCES workflow (workflow_pkey)
);

CREATE INDEX IF NOT EXISTS idx_history_workflow_fkey
    ON history(workflow_fkey);

-- 1 down

DROP TABLE workflow;
DROP TABLE context;
DROP TABLE history;

-- 2 up

DROP INDEX idx_context_workflow_fkey;

CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_context_workflow_fkey
    ON context(workflow_fkey);

-- 2 down

DROP INDEX idx_unique_context_workflow_fkey;
CREATE INDEX IF NOT EXISTS idx_context_workflow_fkey
    ON context(workflow_fkey);

__END__






#################### pod generated by Pod::Autopod - keep this line to make pod updates possible ####################

=head1 NAME


Daje::Workflow::Database::Connector




=head1 REQUIRES


Daje::Workflow::Database::Model::Context>

Daje::Workflow::Database::Model::Workflow>

Mojo::Base>




=head1 METHODS


 load($self)

 load_context($self)

 load_workflow($self)

 save_context($self)

 save_workflow($self)

 start($self)

 stop($self,



=head1 AUTHOR


janeskil1525 E<lt>janeskil1525@gmail.comE<gt>



=head1 LICENSE


Copyright (C) janeskil1525.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.



=cut



Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.