Re: Storing recurrences in a SQL DBMS?

2005-05-04 Thread Flavio S. Glock
Flavio S. Glock wrote:
I'm working on a module that translates datetime sets into SQL 
statements.
I'd appreciate to have your feedback on it.
Here is a preliminary version:
http://www.ipct.pucrs.br/flavio/perl/DateTime-Format-SQL-0.00_07.tar.gz
This is the example in the synopsis:
  use DateTime::Format::SQL;
  use DateTime::Event::Recurrence;
  my $set = DateTime::Event::Recurrence->monthly;
  my $formatter = DateTime::Format::SQL->factory;
  print $formatter->format_set( set => $set,
table_name => 'MY_RECURRENCE',
lazy => 1 );
- Flavio S. Glock


Re: Storing recurrences in a SQL DBMS?

2005-05-04 Thread Flavio S. Glock
Flavio S. Glock wrote:
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
s/SINOPSIS/SYNOPSIS/


Re: Storing recurrences in a SQL DBMS?

2005-05-04 Thread Flavio S. Glock
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