The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Doodle::Grammar

ABSTRACT

Doodle Grammar Base Class

SYNOPSIS

use Doodle::Grammar;

my $self = Doodle::Grammar->new;

DESCRIPTION

This package determines how command objects should be interpreted to produce the correct DDL statements.

LIBRARIES

This package uses type constraints from:

Doodle::Library

ATTRIBUTES

This package has the following attributes:

name

name(Str)

This attribute is read-only, accepts (Str) values, and is optional.

METHODS

This package implements the following methods:

create_column

create_column(Command $command) : Str

Generate SQL statement for column-create Command.

create_column example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $column = $ddl->table('users')->column('id');
my $command = $column->create;

my $create_column = $self->create_column($command);

create_constraint

create_constraint(Column $column) : Str

Returns the SQL statement for the create constraint command.

create_constraint example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $relation = $ddl->table('emails')->relation('user_id', 'users', 'id');
my $command = $relation->create;

$self->create_constraint($command);

create_index

create_index(Command $command) : Str

Generate SQL statement for index-create Command.

create_index example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $index = $ddl->table('users')->index(columns => ['is_admin']);
my $command = $index->create;

my $create_index = $self->create_index($command);

create_schema

create_schema(Command $command) : Str

Generate SQL statement for schema-create Command.

create_schema example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $schema = $ddl->schema('app');
my $command = $schema->create;

my $create_schema = $self->create_schema($command);

create_table

create_table(Command $command) : Str

Generate SQL statement for table-create Command.

create_table example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $table = $ddl->table('users');
my $command = $table->create;

my $create_table = $self->create_table($command);

delete_column

delete_column(Command $command) : Str

Generate SQL statement for column-delete Command.

delete_column example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $column = $ddl->table('users')->column('id');
my $command = $column->delete;

my $delete_column = $self->delete_column($command);

delete_constraint

delete_constraint(Column $column) : Str

Returns the SQL statement for the delete constraint command.

delete_constraint example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $relation = $ddl->table('emails')->relation('user_id', 'users', 'id');
my $command = $relation->delete;

$self->delete_constraint($command);

delete_index

delete_index(Command $command) : Str

Generate SQL statement for index-delete Command.

delete_index example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $index = $ddl->table('users')->index(columns => ['is_admin']);
my $command = $index->delete;

my $delete_index = $self->delete_index($command);

delete_schema

delete_schema(Command $command) : Str

Generate SQL statement for schema-delete Command.

delete_schema example #1
# given: synopsis

my $ddl = Doodle->new;
my $schema = $ddl->schema('app');
my $command = $schema->delete;

my $delete_schema = $self->delete_schema($command);

delete_table

delete_table(Command $command) : Str

Generate SQL statement for table-delete Command.

delete_table example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $table = $ddl->table('users');
my $command = $table->delete;

my $delete_table = $self->delete_table($command);

exception

exception(Str $message) : Any

Throws an exception using Carp confess.

exception example #1
# given: synopsis

$self->exception('Oops');

execute

execute(Command $command) : Statement

Processed the Command and returns a Statement object.

execute example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $column = $ddl->table('users')->column('id');
my $command = $column->create;

my $statement = $self->execute($command);

rename_column

rename_column(Command $command) : Str

Generate SQL statement for column-rename Command.

rename_column example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $column = $ddl->table('users')->column('id');
my $command = $column->rename('uuid');

my $rename_column = $self->rename_column($command);

rename_table

rename_table(Command $command) : Str

Generate SQL statement for table-rename Command.

rename_table example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $table = $ddl->table('users');
my $command = $table->rename('people');

my $rename_table = $self->rename_table($command);

render

render(Command $command) : Str

Returns the SQL statement for the given Command.

render example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $schema = $ddl->schema('app');
my $command = $schema->create;
my $template = 'create schema {schema_name}';

my $sql = $self->render($template, $command);

update_column

update_column(Any @args) : Str

Generate SQL statement for column-update Command.

update_column example #1
# given: synopsis

use Doodle;

my $ddl = Doodle->new;
my $column = $ddl->table('users')->column('id')->integer_small;
my $command = $column->update;

my $update_column = $self->update_column($command);

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues