NAME
Doodle
ABSTRACT
Database DDL Statement Builder
SYNOPSIS
use Doodle;
my $d = Doodle->new;
my $t = $d->table('users');
$t->primary('id');
$t->uuid('arid');
$t->column('name');
$t->string('email');
$t->json('metadata');
my $x = $t->create;
my $g = $d->grammar('sqlite');
my $s = $g->execute($x);
say $s->sql;
# create table "users" (
# "id" integer primary key,
# "arid" varchar,
# "name" varchar,
# "email" varchar,
# "metadata" text
# )
DESCRIPTION
Doodle is a database DDL statement builder and provides an
object-oriented abstraction for performing schema changes in various
datastores.
METHODS
This package implements the following methods.
build
build(Grammar $g, CodeRef $callback) : ()
Execute a given callback for each generated SQL statement.
build example
$self->build($grammar, sub {
my $statement = shift;
# e.g. $db->do($statement->sql);
});
column_create
column_create(Any %args) : Command
Registers a column create and returns the Command object.
column_create example
my $command = $self->column_create(%args);
column_delete
column_delete(Any %args) : Command
Registers a column delete and returns the Command object.
column_delete example
my $command = $self->column_delete(%args);
column_rename
column_rename(Any %args) : Command
Registers a column rename and returns the Command object.
column_rename example
my $command = $self->column_rename(%args);
column_update
column_update(Any %args) : Command
Registers a column update and returns the Command object.
column_update example
my $command = $self->column_update(%args);
grammar
grammar(Str $name) : Grammar
Returns a new Grammar object.
grammar example
my $grammar = $self->grammar('sqlite');
index_create
index_create(Any %args) : Command
Registers a index create and returns the Command object.
index_create example
my $command = $self->index_create(%args);
index_delete
index_delete(Any %args) : Command
Register and return an index_delete command.
index_delete example
my $command = $self->index_delete(%args);
relation_create
relation_create(Any %args) : Command
Registers a relation create and returns the Command object.
relation_create example
my $command = $self->relation_create(%args);
relation_delete
relation_delete(Any %args) : Command
Registers a relation delete and returns the Command object.
relation_delete example
my $command = $self->relation_delete(%args);
schema
schema(Str $name, Any %args) : Schema
Returns a new Schema object.
schema example
my $schema = $self->schema($name);
schema_create
schema_create(Any %args) : Command
Registers a schema create and returns the Command object.
schema_create example
my $command = $self->schema_create(%args);
schema_delete
schema_delete(Any %args) : Command
Registers a schema delete and returns the Command object.
schema_delete example
my $command = $self->schema_delete(%args);
statements
statements(Grammar $g) : [Statement]
Returns a set of Statement objects for the given grammar.
statements example
my $statements = $self->statements($grammar);
table
table(Str $name, Any %args) : Table
Return a new Table object.
table example
my $table = $self->table('users');
table_create
table_create(Any %args) : Command
Registers a table create and returns the Command object.
table_create example
my $command = $self->table_create(%args);
table_delete
table_delete(Any %args) : Command
Registers a table delete and returns the Command object.
table_delete example
my $command = $self->table_delete(%args);
table_rename
table_rename(Any %args) : Command
Registers a table rename and returns the Command object.
table_rename example
my $command = $self->table_rename(%args);