diff --git a/material-sistemas-distribuidos/src/routes/bd/+page.svelte b/material-sistemas-distribuidos/src/routes/bd/+page.svelte index bd82f76..a5efe60 100644 --- a/material-sistemas-distribuidos/src/routes/bd/+page.svelte +++ b/material-sistemas-distribuidos/src/routes/bd/+page.svelte @@ -12,7 +12,7 @@
@@ -527,6 +527,16 @@ app.MapGet("/livros/{id}", async (long id) => await cmd.ExecuteNonQueryAsync(); + using var cmd2 = conn.CreateCommand(); + + cmd2.CommandText = "SELECT LAST_INSERT_ID()"; + + using var reader = await cmd2.ExecuteReaderAsync(); + + await reader.ReadAsync(); + + livro.Id = reader.GetInt64(0); + return livro; }`} @@ -600,19 +610,30 @@ cmd.Parameters.AddWithValue("foto", livro.Foto); cmd.Parameters.AddWithValue("keywords", livro.Keywords); cmd.Parameters.AddWithValue("ativo", livro.Ativo); cmd.Parameters.AddWithValue("criadoem", livro.CriadoEm); -cmd.Parameters.AddWithValue("atualizadoem", livro.AtualizadoEm);`} +cmd.Parameters.AddWithValue("atualizadoem", livro.AtualizadoEm); + +await cmd.ExecuteNonQueryAsync()`}
- Assim como no método de listagem e da consulta por ISBN, montamos o SQL com um INSERT, e depois adicionamos os parâmetros do comando, com os
- dados do objeto livro.
+ Assim como no método de listagem e da consulta por chave primária, montamos o SQL com um INSERT, adicionamos os parâmetros do comando, com os
+ dados do objeto livro, e depois o executamos.
{`await cmd.ExecuteNonQueryAsync();
+{`using var cmd2 = conn.CreateCommand();
+
+cmd2.CommandText = "SELECT LAST_INSERT_ID()";
+
+using var reader = await cmd2.ExecuteReaderAsync();
+
+await reader.ReadAsync();
+
+livro.Id = reader.GetInt64(0);
return livro;`}
- Em seguida, executamos o insert através de await cmd.ExecuteNonQueryAsync(). Como a operação é de escrita, não há resultado a ser lido.
+ Em seguida, executamos uma consulta para obter o id do livro recém criado, e o atribuímos à livro.Id, para
+ que possamos incluir este dado, a chave primária e identificador do livro criado, na resposta do endpoint.
@@ -779,7 +800,7 @@ app.MapDelete("/livros/{id}", async (long id) =>
- O código-fonte do projeto desenvolvido até agora pode ser baixado aqui.
+ O código-fonte do projeto desenvolvido até agora pode ser baixado aqui.
\ No newline at end of file