@@ -23,8 +23,9 @@ router.put('/update', authMiddleware, async (req, res) => {
23
23
if ( ! req . userAuthenticated ) {
24
24
return res . status ( 401 ) . json ( { message : 'Usuário não autenticado' } ) ;
25
25
}
26
- const userId = ( req . userAuthenticated as JwtPayload ) . id ;
26
+ const loginUserId = ( req . userAuthenticated as JwtPayload ) . id ;
27
27
28
+ // Desestruturação das variáveis do req.body
28
29
const {
29
30
pontos,
30
31
vitorias,
@@ -42,27 +43,40 @@ router.put('/update', authMiddleware, async (req, res) => {
42
43
geral
43
44
} = req . body ;
44
45
45
- // Verifica se o perfil já existe
46
+ // Primeiro, buscar o idCliente da tabela login_usuario
47
+ const userQuery = await dbConnection . query (
48
+ 'SELECT idCliente FROM login_usuario WHERE id = $1' ,
49
+ [ loginUserId ]
50
+ ) ;
51
+
52
+ if ( userQuery . rows . length === 0 ) {
53
+ return res . status ( 404 ) . json ( { message : 'Cliente não encontrado' } ) ;
54
+ }
55
+
56
+ // Este é o id da tabela Cliente que será usado como foreign key
57
+ const clienteId = userQuery . rows [ 0 ] . idcliente ;
58
+
59
+ // Verifica se o perfil já existe usando o id do Cliente
46
60
const existingProfile = await dbConnection . query (
47
61
'SELECT * FROM Estatisticas_do_Cliente WHERE idUsuario = $1' ,
48
- [ userId ]
62
+ [ clienteId ]
49
63
) ;
50
64
51
65
if ( existingProfile . rows . length === 0 ) {
52
- // Se não existir, insere um novo perfil
66
+ // Se não existir, insere um novo perfil usando o id do Cliente
53
67
await dbConnection . query (
54
68
`INSERT INTO Estatisticas_do_Cliente
55
69
(idUsuario, pontos, vitorias, jogos, reflexos, defesa, forca, fisico, estrelas, estilo, posicao, cidadeEstado, numeroPreferido, bairro, geral)
56
70
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)` ,
57
- [ userId , pontos , vitorias , jogos , reflexos , defesa , forca , fisico , estrelas , estilo , posicao , cidadeEstado , numeroPreferido , bairro , geral ]
71
+ [ clienteId , pontos , vitorias , jogos , reflexos , defesa , forca , fisico , estrelas , estilo , posicao , cidadeEstado , numeroPreferido , bairro , geral ]
58
72
) ;
59
73
} else {
60
74
// Se existir, atualiza o perfil
61
75
await dbConnection . query (
62
76
`UPDATE Estatisticas_do_Cliente
63
77
SET pontos = $2, vitorias = $3, jogos = $4, reflexos = $5, defesa = $6, forca = $7, fisico = $8, estrelas = $9, estilo = $10, posicao = $11, cidadeEstado = $12, numeroPreferido = $13, bairro = $14, geral = $15
64
78
WHERE idUsuario = $1` ,
65
- [ userId , pontos , vitorias , jogos , reflexos , defesa , forca , fisico , estrelas , estilo , posicao , cidadeEstado , numeroPreferido , bairro , geral ]
79
+ [ clienteId , pontos , vitorias , jogos , reflexos , defesa , forca , fisico , estrelas , estilo , posicao , cidadeEstado , numeroPreferido , bairro , geral ]
66
80
) ;
67
81
}
68
82
@@ -134,8 +148,33 @@ router.get('/profile/:id', async (req: Request, res: Response) => {
134
148
try {
135
149
const userId = req . params . id ;
136
150
151
+ // Buscar dados do perfil básico e estatísticas usando JOIN
137
152
const profileQuery = await dbConnection . query (
138
- 'SELECT id, email, nickname, nomeReal, dataNasc, amigos, fotoAvatar FROM Cliente WHERE id = $1' ,
153
+ `SELECT
154
+ c.id,
155
+ c.email,
156
+ c.nickname,
157
+ c.nomeReal,
158
+ c.dataNasc,
159
+ c.amigos,
160
+ c.fotoAvatar,
161
+ e.pontos,
162
+ e.vitorias,
163
+ e.jogos,
164
+ e.reflexos,
165
+ e.defesa,
166
+ e.forca,
167
+ e.fisico,
168
+ e.estrelas,
169
+ e.estilo,
170
+ e.posicao,
171
+ e.cidadeEstado,
172
+ e.numeroPreferido,
173
+ e.bairro,
174
+ e.geral
175
+ FROM Cliente c
176
+ LEFT JOIN Estatisticas_do_Cliente e ON c.id = e.idUsuario
177
+ WHERE c.id = $1` ,
139
178
[ userId ]
140
179
) ;
141
180
0 commit comments