Geoffrey

 view release on metacpan or  search on metacpan

lib/Geoffrey/Converter/SQLite/Index.pm  view on Meta::CPAN

package Geoffrey::Converter::SQLite::Index;

use utf8;
use 5.016;
use strict;
use warnings;

$Geoffrey::Converter::SQLite::Index::VERSION = '0.000206';

use parent 'Geoffrey::Role::ConverterType';

sub add {
    my ( $self, $params ) = @_;
    if ( !$params ) {
        require Geoffrey::Exception::General;
        Geoffrey::Exception::General::throw_no_params();
    }
    if ( !$params->{table} ) {
        require Geoffrey::Exception::RequiredValue;
        Geoffrey::Exception::RequiredValue::throw_table_name();
    }
    if ( !$params->{column} ) {
        require Geoffrey::Exception::RequiredValue;
        Geoffrey::Exception::RequiredValue::throw_refcolumn_missing();
    }
    require Ref::Util;
    require Geoffrey::Utils;
    return Geoffrey::Utils::replace_spare(
        q~CREATE INDEX {0} ON {1} ({2})~,
        [   Geoffrey::Utils::add_name(
                {   prefix  => 'ix',
                    name    => $params->{name},
                    context => $params->{table}
                }
            ),
            $params->{table},
            (   join ', ',
                Ref::Util::is_arrayref( $params->{column} )
                ? @{ $params->{column} }
                : ( $params->{column} )
            )
        ]
    );
}

sub drop {
    my ( $self, $name ) = @_;
    if ( !$name ) {
        require Geoffrey::Exception::RequiredValue;
        Geoffrey::Exception::RequiredValue::throw_index_name();
    }
    return qq~DROP INDEX $name~;
}

sub list {
    my ( $self, $schema ) = @_;
    require Geoffrey::Utils;
    return
          q~SELECT * FROM  ~
        . Geoffrey::Utils::add_schema($schema)
        . q~sqlite_master WHERE type='index'~;
}

1;    # End of Geoffrey::Converter::SQLite::Index

__END__

=pod

=head1 NAME

Geoffrey::Converter::SQLite::Index - SQLite converter type for indexes!

=head1 VERSION

Version 0.000206

=head1 DESCRIPTION

=head1 SYNOPSIS

=head1 SUBROUTINES/METHODS

=head2 add

=head2 drop

=head2 alter

=head2 add_column

=head2 list

=head2 s_list_columns

=head1 DIAGNOSTICS

=head1 CONFIGURATION AND ENVIRONMENT



( run in 1.153 second using v1.01-cache-2.11-cpan-39bf76dae61 )