-
Notifications
You must be signed in to change notification settings - Fork 0
/
uMigracoesBD.pas
190 lines (156 loc) · 4.4 KB
/
uMigracoesBD.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
unit uMigracoesBD;
interface
uses
System.SysUtils,
System.Types,
System.UITypes,
System.Classes,
System.Variants,
FireDAC.Stan.Error,
uBaseMigracaoBD,
Vcl.Dialogs;
type
MigracoesControleFerias = class(TBaseMigracaoBD)
public
function VerificarNecessidade: Boolean; override;
function Instalar(): Boolean; override;
function Desinstalar(): Boolean; override;
procedure InternoInstalarCbPeriodos(SQLDDL: TStringList; const NomeEsquema, NovoOwner: String);
procedure InternoInstalarCbProjeto( SQLDDL: TStringList; const NomeEsquema, NovoOwner: String);
procedure InternoInstalarProjetos( SQLDDL: TStringList; const NomeEsquema, NovoOwner: String);
procedure InternoInstalarPessoas( SQLDDL: TStringList; const NomeEsquema: String);
end;
implementation
function MigracoesControleFerias.VerificarNecessidade: Boolean;
begin
Result := True;
end;
{
INSTALAÇÃO TABELA DE PERÍODOS DE FÉRIAS DO USUÁRIO
Nome: cbperiodos
}
procedure MigracoesControleFerias.InternoInstalarCbPeriodos(
SQLDDL: TStringList;
const NomeEsquema, NovoOwner: String);
var
NomeEsquemaTabela: String;
begin
if ExisteTabela('cbperiodos')
then Exit;
SQLDDL.Clear;
NomeEsquemaTabela := NomeEsquema + '.cbperiodos';
with SQLDDL do
begin
Add('CREATE TABLE ' + NomeEsquemaTabela);
Add('(');
Add(' idpessoa VARCHAR(40) NOT NULL,');
Add(' dtinicio TIMESTAMP NOT NULL,');
Add(' dtfinal TIMESTAMP NOT NULL,');
Add(' CONSTRAINT pk_cbperiodos_idcperiodo PRIMARY KEY (idpessoa, dtinicio, dtfinal)');
Add(');');
end;
InstalarTabela(SQLDDL);
AlterarOwnerTabela(NovoOwner, NomeEsquemaTabela);
end;
procedure MigracoesControleFerias.InternoInstalarProjetos(
SQLDDL: TStringList; const NomeEsquema, NovoOwner: String);
var
NomeEsquemaTabela: String;
begin
if ExisteTabela('projeto')
then Exit;
SQLDDL.Clear;
NomeEsquemaTabela := NomeEsquema + '.projeto';
with SQLDDL do
begin
Add('CREATE TABLE ' + NomeEsquemaTabela);
Add('(');
Add(' idprojeto SERIAL NOT NULL,');
Add(' nmprojeto VARCHAR(40) NOT NULL,');
Add(' dsprojeto VARCHAR(255) NOT NULL,');
Add(' CONSTRAINT pk_projetos_idprojeto PRIMARY KEY (idprojeto),');
Add(' CONSTRAINT uq_projetos_nmprojeto UNIQUE (nmprojeto)');
Add(');');
end;
InstalarTabela(SQLDDL);
AlterarOwnerTabela(NovoOwner, NomeEsquemaTabela);
end;
{
INSTALAÇÃO TABELA DE PROJETOS DOS USUÁRIOS
Nome: cbproj
}
procedure MigracoesControleFerias.InternoInstalarCbProjeto(
SQLDDL: TStringList;
const NomeEsquema, NovoOwner: String);
var
NomeEsquemaTabela: String;
begin
if ExisteTabela('cbproj')
then Exit;
SQLDDL.Clear;
NomeEsquemaTabela := NomeEsquema + '.cbproj';
with SQLDDL do
begin
Add('CREATE TABLE ' + NomeEsquemaTabela);
Add('(');
Add(' idpessoa VARCHAR(40) NOT NULL,');
Add(' idprojeto INTEGER NOT NULL,');
Add(' CONSTRAINT cbproj_idxprimario PRIMARY KEY (idpessoa, idprojeto)');
Add(');');
end;
InstalarTabela(SQLDDL);
AlterarOwnerTabela(NovoOwner, NomeEsquemaTabela);
end;
procedure MigracoesControleFerias.InternoInstalarPessoas(
SQLDDL: TStringList;
const NomeEsquema: String);
var
NomeEsquemaTabela: String;
begin
SQLDDL.Clear;
NomeEsquemaTabela := NomeEsquema + '.pessoas';
with SQLDDL do
begin
Add('ALTER TABLE ' + NomeEsquemaTabela + ' ADD COLUMN vldiasprevistos INTEGER;');
end;
try
InstalarTabela(SQLDDL);
except
on E: EFDDBEngineException do
begin {ignorar} end;
end;
SQLDDL.Clear;
with SQLDDL do
begin
Add('UPDATE ');
Add(NomeEsquemaTabela + ' ');
Add('SET');
Add(' vldiasprevistos = ''30'' ');
Add('WHERE');
Add(' stativo = ''S''');
Add(' AND vldiasprevistos IS NULL');
Add(' AND stvendedor = True;');
end;
InstalarTabela(SQLDDL);
end;
function MigracoesControleFerias.Instalar(): Boolean;
var
SQLDDL: TStringList;
NomeEsquema: String;
NovoOwner: String;
begin
NovoOwner := ObterSchemaOwner;
NomeEsquema := DacConnection.Params.Values['SearchPath'];
SQLDDL := TStringList.Create;
try
InternoInstalarCbPeriodos(SQLDDL, NomeEsquema, NovoOwner);
InternoInstalarCbProjeto (SQLDDL, NomeEsquema, NovoOwner);
InternoInstalarProjetos (SQLDDL, NomeEsquema, NovoOwner);
InternoInstalarPessoas (SQLDDL, NomeEsquema);
finally
SQLDDL.Free;
end;
end;
function MigracoesControleFerias.Desinstalar(): Boolean;
begin end;
end.