Melian

 view release on metacpan or  search on metacpan

lib/Melian.pm  view on Meta::CPAN

    };

    return $decoded;
}

# table1#0|60|id#0:int,table2#1|45|id#0:int;hostname#1:string
sub load_schema_from_spec {
    my $spec = shift;
    my %data;

    for my $section_data ( split m{,}, $spec ) {
        my ( $table_data, $table_period, $columns ) = split m{\|}, $section_data;
        my ( $table_name, $table_id ) = split m{#}, $table_data;
        defined $table_name && defined $table_id
            or croak('Schema spec failure: Missing table name or table ID');

        my %table_entry = (
            'name'   => $table_name,
            'id'     => $table_id,
            'period' => $table_period,
        );

        my @columns;
        foreach my $column_data ( split m{;}, $columns ) {
            my ( $column_data, $column_type ) = split /:/, $column_data;
            my ( $column_name, $column_id )   = split m{#}, $column_data;

            push @{ $table_entry{'indexes'} }, {
                'id'     => $column_id,
                'column' => $column_name,
                'type'   => $column_type,
            }
        }

        push @{ $data{'tables'} }, \%table_entry;
    }



( run in 0.769 second using v1.01-cache-2.11-cpan-71847e10f99 )