The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Doodle::Grammar::Postgres

ABSTRACT

Doodle Grammar For PostgreSQL

SYNOPSIS

  use Doodle::Grammar::Postgres;

  my $self = Doodle::Grammar::Postgres->new(%args);

DESCRIPTION

Doodle::Grammar::Postgres determines how Command classes should be interpreted to produce the correct DDL statements.

METHODS

This package implements the following methods.

create_column

  create_column(Command $command) : Str

Returns the SQL statement for the create column command.

create_column example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->primary('id');

  my $command = $c->create;

  $self->create_column($command);

  # alter table "users" add column "id" serial primary key

create_index

  create_index(Command $command) : Str

Returns the SQL statement for the create index command.

create_index example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $i = $t->index(columns => ['id']);

  my $command = $i->create;

  $self->create_index($command);

  # create index "indx_users_id" on "users" ("id")

create_relation

  create_relation(Command $command) : Str

Returns the SQL statement for the create relation command.

create_relation example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $r = $t->relation('profile_id', 'profiles', 'id');

  my $command = $r->create;

  $self->create_relation($command);

  # alter table "users" add constraint "fkey_users_profile_id_profiles_id"
  # foreign key ("profile_id") references "profiles" ("id")

create_schema

  create_schema(Command $command) : Str

Returns the SQL statement for the create schema command.

create_schema example
  use Doodle;

  my $d = Doodle->new;
  my $s = $d->schema('app');

  my $command = $s->create;

  $self->create_schema($command);

  # create database "app"

create_table

  create_table(Command $command) : Str

Returns the SQL statement for the create table command.

create_table example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->column('data');

  my $command = $t->create;

  $self->create_table($command);

  # create table "users" ("data" varchar(255))

delete_column

  delete_column(Command $command) : Str

Returns the SQL statement for the delete column command.

delete_column example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->primary('id');

  my $command = $c->delete;

  $self->delete_column($command);

  # alter table "users" drop column "id"

delete_index

  delete_index(Command $command) : Str

Returns the SQL statement for the delete index command.

delete_index example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $i = $t->index(columns => ['id']);

  my $command = $i->delete;

  $self->delete_index($command);

  # drop index "indx_users_id"

delete_relation

  delete_relation(Command $command) : Str

Returns the SQL statement for the delete relation command.

delete_relation example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $r = $t->relation('profile_id', 'profiles', 'id');

  my $command = $r->delete;

  $self->delete_relation($command);

  # alter table "users" drop constraint "fkey_users_profile_id_profiles_id"

delete_schema

  delete_schema(Command $command) : Str

Returns the SQL statement for the create schema command.

delete_schema example
  use Doodle;

  my $d = Doodle->new;
  my $s = $d->schema('app');

  my $command = $s->create;

  $self->delete_schema($command);

  # drop database "app"

delete_table

  delete_table(Command $command) : Str

Returns the SQL statement for the delete table command.

delete_table example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->column('data');

  my $command = $t->delete;

  $self->delete_table($command);

  # drop table "users"

rename_column

  rename_column(Command $command) : Str

Returns the SQL statement for the rename column command.

rename_column example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->primary('id');

  my $command = $c->rename('uid');

  $self->rename_column($command);

  # alter table "users" rename column "id" to "uid"

rename_table

  rename_table(Command $command) : Str

Returns the SQL statement for the rename table command.

rename_table example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->column('data');

  my $command = $t->rename('people');

  $self->rename_table($command);

  # alter table "users" rename to "people"

type_binary

  type_binary(Column $column) : Str

Returns the type expression for a binary column.

type_binary example
  $self->type_binary($column);

  # bytea

type_boolean

  type_boolean(Column $column) : Str

Returns the type expression for a boolean column.

type_boolean example
  $self->type_boolean($column);

  # boolean

type_char

  type_char(Column $column) : Str

Returns the type expression for a char column.

type_char example
  $self->type_char($column);

  # char(1)

  $self->type_char($column, size => 10);

  # char(10)

type_date

  type_date(Column $column) : Str

Returns the type expression for a date column.

type_date example
  $self->type_date($column);

  # date

type_datetime

  type_datetime(Column $column) : Str

Returns the type expression for a datetime column.

type_datetime example
  $self->type_datetime($column);

  # timestamp(0) without time zone

type_datetime_tz

  type_datetime_tz(Column $column) : Str

Returns the type expression for a datetime_tz column.

type_datetime_tz example
  $self->type_datetime_tz($column);

  # timestamp(0) with time zone

type_decimal

  type_decimal(Column $column) : Str

Returns the type expression for a decimal column.

type_decimal example
  $self->type_decimal($column);

  # decimal(5, 2)

type_double

  type_double(Column $column) : Str

Returns the type expression for a double column.

type_double example
  $self->type_double($column);

  # double precision

type_enum

  type_enum(Column $column) : Str

Returns the type expression for a enum column.

type_enum example
  $self->type_enum($column);

  # varchar(225) check ("data" in ())

type_float

  type_float(Column $column) : Str

Returns the type expression for a float column.

type_float example
  $self->type_float($column);

  # double precision

type_integer

  type_integer(Column $column) : Str

Returns the type expression for a integer column.

type_integer example
  $self->type_integer($column);

  # integer

type_integer_big

  type_integer_big(Column $column) : Str

Returns the type expression for a integer_big column.

type_integer_big example
  $self->type_integer_big($column);

  # bigint

type_integer_big_unsigned

  type_integer_big_unsigned(Column $column) : Str

Returns the type expression for a integer_big_unsigned column.

type_integer_big_unsigned example
  $self->type_integer_big_unsigned($column);

  # bigint

type_integer_medium

  type_integer_medium(Column $column) : Str

Returns the type expression for a integer_medium column.

type_integer_medium example
  $self->type_integer_medium($column);

  # integer

type_integer_medium_unsigned

  type_integer_medium_unsigned(Column $column) : Str

Returns the type expression for a integer_medium_unsigned column.

type_integer_medium_unsigned example
  $self->type_integer_medium_unsigned($column);

  # integer

type_integer_small

  type_integer_small(Column $column) : Str

Returns the type expression for a integer_small column.

type_integer_small example
  $self->type_integer_small($column);

  # smallint

type_integer_small_unsigned

  type_integer_small_unsigned(Column $column) : Str

Returns the type expression for a integer_small_unsigned column.

type_integer_small_unsigned example
  $self->type_integer_small_unsigned($column);

  # smallint

type_integer_tiny

  type_integer_tiny(Column $column) : Str

Returns the type expression for a integer_tiny column.

type_integer_tiny example
  $self->type_integer_tiny($column);

  # smallint

type_integer_tiny_unsigned

  type_integer_tiny_unsigned(Column $column) : Str

Returns the type expression for a integer_tiny_unsigned column.

type_integer_tiny_unsigned example
  $self->type_integer_tiny_unsigned($column);

  # smallint

type_integer_unsigned

  type_integer_unsigned(Column $column) : Str

Returns the type expression for a integer_unsigned column.

type_integer_unsigned example
  $self->type_integer_unsigned($column);

  # integer

type_json

  type_json(Column $column) : Str

Returns the type expression for a json column.

type_json example
  $self->type_json($column);

  # json

type_string

  type_string(Column $column) : Str

Returns the type expression for a string column.

type_string example
  $self->type_string($column);

  # varchar(255)

type_text

  type_text(Column $column) : Str

Returns the type expression for a text column.

type_text example
  $self->type_text($column);

  # text

type_text_long

  type_text_long(Column $column) : Str

Returns the type expression for a text_long column.

type_text_long example
  $self->type_text_long($column);

  # text

type_text_medium

  type_text_medium(Column $column) : Str

Returns the type expression for a text_medium column.

type_text_medium example
  $self->type_text_medium($column);

  # text

type_time

  type_time(Column $column) : Str

Returns the type expression for a time column.

type_time example
  $self->type_time($column);

  # time(0) without time zone

type_time_tz

  type_time_tz(Column $column) : Str

Returns the type expression for a time_tz column.

type_time_tz example
  $self->type_time_tz($column);

  # time(0) with time zone

type_timestamp

  type_timestamp(Column $column) : Str

Returns the type expression for a timestamp column.

type_timestamp example
  $self->type_timestamp($column);

  # timestamp(0) without time zone

type_timestamp_tz

  type_timestamp_tz(Column $column) :

Returns the type expression for a timestamp_tz column.

type_timestamp_tz example
  $self->type_timestamp_tz($column);

  # timestamp(0) with time zone

type_uuid

  type_uuid(Column $column) : Str

Returns the type expression for a uuid column.

type_uuid example
  $self->type_uuid($column);

  # uuid

update_column

  update_column(Command $command) : Command

Returns the SQL statement for the update column command.

update_column example
  use Doodle;

  my $d = Doodle->new;
  my $t = $d->table('users');
  my $c = $t->primary('id');

  my $command = $c->update;

  $self->update_column($command);

  # alter table [users] alter column [id] type integer

  $command = $c->update(set => 'not null');

  $self->update_column($command);

  # alter table [users] alter column [id] set not null

wrap

  wrap(Str $arg) : Str

Returns a wrapped SQL identifier.

wrap example
  my $wrapped = $self->wrap('data');

  # "data"