NAME Doodle ABSTRACT Database DDL (= Data Definition Language) 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 ("Data Definition Language" or "Data Description Language") statement builder and provides an object-oriented abstraction for performing schema changes in various datastores. This class consumes the Doodle::Helpers roles. METHODS This package implements the following methods. build build(Grammar $grammar, 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); }); grammar grammar(Str $name) : Grammar Returns a new Grammar object. grammar example my $grammar = $self->grammar('sqlite'); schema schema(Str $name, Any %args) : Schema Returns a new Schema object. schema example my $schema = $self->schema($name); 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');