Mercurial > pub > Impl
comparison Lib/IMPL/SQL/Schema/Traits/MysqlFormatter.pm @ 269:dacfe7c0311a
SQL schema updated (unstable)
| author | sergey |
|---|---|
| date | Thu, 24 Jan 2013 20:00:27 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 267:bbc0da7ef90e | 269:dacfe7c0311a |
|---|---|
| 1 package IMPL::SQL::Schema::Traits::MysqlFormatter; | |
| 2 use strict; | |
| 3 | |
| 4 sub quote{ | |
| 5 my $self = shift; | |
| 6 | |
| 7 if (wantarray) { | |
| 8 return map { my $str=$_; $str=~ s/'/''/g; "'$str'"; } @_; | |
| 9 } else { | |
| 10 return join '',map { my $str=$_; $str=~ s/'/''/g; "'$str'"; } @_; | |
| 11 } | |
| 12 } | |
| 13 | |
| 14 sub quote_names { | |
| 15 my $self = shift; | |
| 16 | |
| 17 if (wantarray) { | |
| 18 return map { my $str=$_; $str=~ s/`/``/g; "`$str`"; } @_; | |
| 19 } else { | |
| 20 return join '',map { my $str=$_; $str=~ s/`/``/g; "`$str`"; } @_; | |
| 21 } | |
| 22 } | |
| 23 | |
| 24 sub FormatTypeName { | |
| 25 my ($self,$type) = @_; | |
| 26 | |
| 27 } | |
| 28 | |
| 29 sub FormatValue { | |
| 30 my ($self,$value,$type) = @_; | |
| 31 } | |
| 32 | |
| 33 sub FormatColumn { | |
| 34 my ($self, $column) = @_; | |
| 35 | |
| 36 my @parts = ( | |
| 37 $self->quote_names($column->{name}), | |
| 38 $self->FormatTypeName($column->{type}), | |
| 39 $column->isNullable ? 'NULL' : 'NOT NULL' | |
| 40 ); | |
| 41 | |
| 42 push @parts, $self->FormatValue( $column->{defaultValue}, $column->{type} ) | |
| 43 if $column->{defaultValue}; | |
| 44 | |
| 45 push @parts, 'AUTO_INCREMENT' | |
| 46 if $column->{tag} and $column->{tag}->{auto_increment}; | |
| 47 | |
| 48 return join ' ', @parts; | |
| 49 } | |
| 50 | |
| 51 sub FormatCreateTable { | |
| 52 my ($self,$op) = @_; | |
| 53 | |
| 54 my $table = $op->table; | |
| 55 | |
| 56 my @lines; | |
| 57 | |
| 58 push @lines, "CREATE TABLE ("; | |
| 59 | |
| 60 push @lines, map { " " . $self->FormatColumn($_) } @{$table->{columns}} | |
| 61 if $table->{columns}; | |
| 62 | |
| 63 push @lines, ");"; | |
| 64 | |
| 65 return join "\n",@lines; | |
| 66 } | |
| 67 | |
| 68 sub FormatDropTable { | |
| 69 my ($self,$op) = @_; | |
| 70 | |
| 71 return join ' ', | |
| 72 'DROP TABLE', | |
| 73 $self->quote_names($op->{tableName}), | |
| 74 ';'; | |
| 75 } | |
| 76 | |
| 77 sub FormatRenameTable { | |
| 78 my ($self,$op) = @_; | |
| 79 | |
| 80 return join ' ', | |
| 81 'ALTER TABLE', | |
| 82 $self->quote_names($op->{tableName}), | |
| 83 'RENAME TO', | |
| 84 $self->quote_names($op->{tableNewName}), | |
| 85 ';'; | |
| 86 } | |
| 87 | |
| 88 sub FormatAlterTableAddColumn { | |
| 89 my ($this,$op,$schema) = @_; | |
| 90 | |
| 91 my @parts; | |
| 92 | |
| 93 $schema->GetTable($op->{tableName}) | |
| 94 } | |
| 95 | |
| 96 1; |
