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