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.

column_create

column_create(Any %args) : Command

Registers a column create and returns the Command object.

column_delete

column_delete(Any %args) : Command

Registers a column delete and returns the Command object.

column_rename

column_rename(Any %args) : Command

Registers a column rename and returns the Command object.

column_update

column_update(Any %args) : Command

Registers a column update and returns the Command object.

grammar

grammar(Str $name) : Grammar

Returns a new Grammar object.

index_create

index_create(Any %args) : Command

Registers a index create and returns the Command object.

index_delete

index_delete(Any %args) : Command

Register and return an index_delete command.

relation_create

relation_create(Any %args) : Command

Registers a relation create and returns the Command object.

relation_delete

relation_delete(Any %args) : Command

Registers a relation delete and returns the Command object.

schema

schema(Str $name, Any %args) : Schema

Returns a new Schema object.

schema_create

schema_create(Any %args) : Command

Registers a schema create and returns the Command object.

schema_delete

schema_delete(Any %args) : Command

Registers a schema delete and returns the Command object.

statements

statements(Grammar $g) : [Statement]

Returns a set of Statement objects for the given grammar.

table

table(Str $name, Any %args) : Table

Return a new Table object.

table_create

table_create(Any %args) : Command

Registers a table create and returns the Command object.

table_delete

table_delete(Any %args) : Command

Registers a table delete and returns the Command object.

table_rename

table_rename(Any %args) : Command

Registers a table rename and returns the Command object.