The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

CXC::DB::DDL::Util

VERSION

version 0.13

DESCRIPTION

CXC::DB::DDL::Util provides generators to ease creation of, amongst, others, CXC::DB::DDL::FIELD objects. It uses Exporter::Tiny as its base exporter, allowing renaming of exported symbols and other things.

SUBROUTINES

SQL_TYPE_NAMES

  @typenames = SQL_TYPE_NAMES;

returns all of the DBI supported types (without the SQL_ prefix)

TYPENAME

TYPENAME is one of the SQL types recognized by DBI. See "sql_type_constants" in CXC::DB::DDL::Util for more information.

Called as, e.g.

   INTEGER( %attr )

these are generators which return subroutines with the following signature:

   sub ( $field_name )

which return a CXC::DB::DDL::Field object with the specified SQL datatype (in this example INTEGER), field name ($field_name) and attributes (%attr).

These are available for individual export or in entirety via the type_funcs tag.

They are typically used in conjunction with the "xFIELDS" subroutine, e.g.

  xFIELDS(
      segment        => INTEGER,
      obsid          => INTEGER( is_primary_key => 1 ),
      target_type    => VARCHAR( is_nullable => 1 ),
  )

"xFIELDS" essentially turns this into:

  fields => [
      INTEGER('segment'),
      INTEGER( 'obsid', is_primary_key => 1 ),
      VARCHAR( 'target_type' is_nullable => 1 ),
  ]

which is more painful to write and look at.

xTYPE

  xTYPE ( $type, %attr )

A generic form of e.g., "INTEGER". Type is a numeric DATA_TYPE from $DBI::EXPORT_TAGS{sql_types};

xFIELDS

   @field_spec = xFIELDS( array of  Tuple[ NonEmptyStr, CodeRef ] );

returns a list of

   fields => \@spec,

where @spec generated by running

     CodeRef->(NonEmptyStr)

for each tuple.

xCHECK

    $string = xCHECK( $field, @values )

generates a check constraint as a string which looks like

  $field in ( $value[0], $value[1], ...  )

sqlt_producer_map

  $sqlt_producer = sqlt_producer_map( $dbd );

Map $dbd (typically from $dbh-{Driver}{NAME}>) to what SQL::Translator wants. Actually, this just checks for known (to me) deviations; everything else is returned as.

SYNTAX

  use CXC::DB::DDL::Util -all;

  # import xFIELDS, xCHECK, xTYPE
  use CXC::DB::DDL::Util -schema_funcs;

  # import type function generators (e.g. INTEGER, DOUBLE )
  use CXC::DB::DDL::Util -type_funcs;

  # import type function generators (e.g. INTEGER, DOUBLE )
  use CXC::DB::DDL::Util { prefix => 'SQL_' }, -type_funcs;

  @CXC_DB_DDL_FIELD_objects = xFIELDS(
      segment        => INTEGER,
      obsid          => INTEGER( is_primary_key => 1 ),
      target_type    => VARCHAR( is_nullable => 1 ),
  );

SUPPORT

Bugs

Please report any bugs or feature requests to bug-cxc-db-ddl@rt.cpan.org or through the web interface at: https://rt.cpan.org/Public/Dist/Display.html?Name=CXC-DB-DDL

Source

Source is available at

  https://gitlab.com/djerius/cxc-db-ddl

and may be cloned from

  https://gitlab.com/djerius/cxc-db-ddl.git

SEE ALSO

Please see those modules/websites for more information related to this module.

AUTHOR

Diab Jerius <djerius@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2022 by Smithsonian Astrophysical Observatory.

This is free software, licensed under:

  The GNU General Public License, Version 3, June 2007