-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtatovering.sql
181 lines (152 loc) · 5.33 KB
/
tatovering.sql
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
CREATE TABLE agendamentos
(
id string NOT NULL GENERATED ALWAYS AS IDENTITY UNIQUE,
servico_id string NOT NULL,
cliente_id string NOT NULL,
tatuador_id string NOT NULL,
duracao int NOT NULL,
valor float NOT NULL,
status enum ,
observacao string NOT NULL,
data_inicio datetime,
data_criacao datetime NOT NULL DEFAULT now(),
data_atualizacao datetime NOT NULL DEFAULT now(),
data_cancelamento datetime,
PRIMARY KEY (id)
);
COMMENT ON COLUMN agendamentos.servico_id IS 'ex: sessao, flash day, promocao,';
COMMENT ON COLUMN agendamentos.cliente_id IS 'id cliente';
COMMENT ON COLUMN agendamentos.duracao IS 'duracao / horas';
COMMENT ON COLUMN agendamentos.status IS 'ex: agendado, confirmado, cancelado, concluido';
COMMENT ON COLUMN agendamentos.data_inicio IS 'data/hora agendamento';
CREATE TABLE estudio
(
id int NOT NULL GENERATED ALWAYS AS IDENTITY UNIQUE,
proprietario_id INT NOT NULL,
nome text NOT NULL,
email varchar DEFAULT NULL,
horario_funcionamento jsonb NOT NULL,
endereco text DEFAULT NULL,
localizacao point DEFAULT NULL,
telefone varchar DEFAULT NULL,
descricao text ,
taxa_agendamento money DEFAULT NULL,
data_criacao datetime NOT NULL DEFAULT NOW(),
data_atualizacao datetime NOT NULL DEFAULT NOW(),
data_exclusao datetime DEFAULT NULL,
dias_funcionamento jsonb NOT NULL,
PRIMARY KEY (id)
);
COMMENT ON COLUMN estudio.email IS 'email profissional';
COMMENT ON COLUMN estudio.horario_funcionamento IS 'horarios de funcionamento do estudio';
COMMENT ON COLUMN estudio.endereco IS 'endereco';
COMMENT ON COLUMN estudio.localizacao IS 'localizacao em lat long';
COMMENT ON COLUMN estudio.taxa_agendamento IS 'O valor minimo que o tatuador cobra para agendar pela plataforma';
CREATE TABLE servico
(
id int NOT NULL UNIQUE,
tipo text NOT NULL,
cliente_id INT NOT NULL,
tatuador_id int NOT NULL,
tatuagem_id int NOT NULL,
descricao string NOT NULL,
duracao int NOT NULL,
preco int ,
data_criacao datetime DEFAULT NOW(),
data_atualizacao datetime DEFAULT NOW(),
data_exclusao datetime,
PRIMARY KEY (id)
);
CREATE TABLE tatuadores
(
id int NOT NULL GENERATED ALWAYS AS IDENTITY,
estudio_id int NOT NULL,
experiencia int NOT NULL DEFAULT 1,
estilo_tatuagem text ,
status text ,
tipo text ,
redes_sociais jsonb ,
estudio_id ,
data_criacao timestamp DEFAULT NOW(),
data_atualizacao timestamp DEFAULT NOW(),
PRIMARY KEY (id)
);
COMMENT ON COLUMN tatuadores.experiencia IS 'meses';
CREATE TABLE tatuagens
(
id int NOT NULL GENERATED ALWAYS AS IDENTITY UNIQUE,
cliente_id INT ,
tatuador_id int NOT NULL UNIQUE,
agendamento_id int UNIQUE,
preco float ,
desenho string UNIQUE,
tamanho int ,
cor enum ,
estilo enum ,
data_criacao date DEFAULT NOW(),
data_atualizacao date DEFAULT NOW(),
data_exclusao date DEFAULT NULL,
PRIMARY KEY (id)
);
COMMENT ON COLUMN tatuagens.tamanho IS 'tamanho em cm';
CREATE TABLE usuarios
(
id INT GENERATED ALWAYS AS IDENTITY,
nome text NOT NULL,
email text ,
telefone_celular text ,
cpf text ,
rg text ,
data_nascimento timestamp,
status text ,
experiencia integer ,
endereco text ,
data_criacao timestamp DEFAULT NOW(),
data_atualizacao timestamp DEFAULT NOW(),
data_exclusao timestamp,
PRIMARY KEY (id)
);
ALTER TABLE tatuagens
ADD CONSTRAINT FK_agendamentos_TO_tatuagens
FOREIGN KEY (agendamento_id)
REFERENCES agendamentos (id);
ALTER TABLE servico
ADD CONSTRAINT FK_tatuagens_TO_servico
FOREIGN KEY (tatuagem_id)
REFERENCES tatuagens (id);
ALTER TABLE tatuagens
ADD CONSTRAINT FK_usuarios_TO_tatuagens
FOREIGN KEY (cliente_id)
REFERENCES usuarios (id);
ALTER TABLE agendamentos
ADD CONSTRAINT FK_usuarios_TO_agendamentos
FOREIGN KEY (cliente_id)
REFERENCES usuarios (id);
ALTER TABLE servico
ADD CONSTRAINT FK_usuarios_TO_servico
FOREIGN KEY (cliente_id)
REFERENCES usuarios (id);
ALTER TABLE estudio
ADD CONSTRAINT FK_usuarios_TO_estudio
FOREIGN KEY (proprietario_id)
REFERENCES usuarios (id);
ALTER TABLE tatuadores
ADD CONSTRAINT FK_estudio_TO_tatuadores
FOREIGN KEY (estudio_id)
REFERENCES estudio (id);
ALTER TABLE tatuagens
ADD CONSTRAINT FK_tatuadores_TO_tatuagens
FOREIGN KEY (tatuador_id)
REFERENCES tatuadores (id);
ALTER TABLE agendamentos
ADD CONSTRAINT FK_tatuadores_TO_agendamentos
FOREIGN KEY (tatuador_id)
REFERENCES tatuadores (id);
ALTER TABLE servico
ADD CONSTRAINT FK_tatuadores_TO_servico
FOREIGN KEY (tatuador_id)
REFERENCES tatuadores (id);
ALTER TABLE agendamentos
ADD CONSTRAINT FK_servico_TO_agendamentos
FOREIGN KEY (servico_id)
REFERENCES servico (id);