I'm working on a module that translates datetime sets into SQL statements.
I'd appreciate to have your feedback on it.

-----
NAME - DateTime::Format::SQL

SINOPSIS

    my $formatter = DateTime::Format::SQL->factory;
    print $formatter->create_table(
            set => $set,
            table_name => 'MY_RECURRENCE',
        )->dump_sql;

METHODS

* factory

Creates a SQL formatter object.

    my $formatter =
        DateTime::Format::SQL->factory (
            format_datetime => sub {
                DateTime::Format::MySQL->format_datetime($_[0])
            },
            global_tables => {
                yearly =>  'DT_YEARS',
                monthly => 'DT_MONTHS',
            },
        );

The optional parameters are:

- format_datetime

A reference to a function that stringifies datetime objects.

- global_tables

A list of tables that already exist in the database. The new tables will be based on existing tables, whenever possible.

- start, end

Define a limiting span for tables.

The methods in the formatter object are:

* create_table

    $formatter->create_table (
        set => $set,
        table_name => 'MY_RECURRENCE',
        lazy => 1,
    );

If the optional "lazy" parameter is true, the program will try to create a space-efficient "VIEW" instead of a static "TABLE".
Views are automatically expanded when the base tables are updated.
Tables use less run-time CPU, but they take more storage space.


The method can also take optional "format_datetime", "start" and "end" parameters.

* get_sql

Iterates through the internal syntax tree, returning a SQL string at a time.

* dump_sql

Returns the SQL output as a single, possibly large, string.

-----

- Flavio S. Glock

Reply via email to