This commit is contained in:
Gabriel Almeida Bueno 2025-05-08 09:07:50 -03:00
parent 699c30821c
commit 4d8a043ec8

View File

@ -12,7 +12,7 @@
<nav>
<a href="/">Início</a>
<span>|</span>
<a href="https://git.gbrl.dev/Gabriel/Biblioteca/archive/etapa3.zip">Código fonte</a>
<a href="https://git.gbrl.dev/Gabriel/Biblioteca/archive/etapa3-v1.zip">Código fonte</a>
</nav>
<p>
@ -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;
}`}</code></pre>
@ -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);`}</code></pre>
cmd.Parameters.AddWithValue("atualizadoem", livro.AtualizadoEm);
await cmd.ExecuteNonQueryAsync()`}</code></pre>
<p>
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 <code>livro</code>.
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 <code>livro</code>, e depois o executamos.
</p>
<pre><code>{`await cmd.ExecuteNonQueryAsync();
<pre><code>{`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;`}</code></pre>
<p>
Em seguida, executamos o insert através de <code>await cmd.ExecuteNonQueryAsync()</code>. 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 à <code>livro.Id</code>, para
que possamos incluir este dado, a chave primária e identificador do livro criado, na resposta do endpoint.
</p>
<p>
@ -779,7 +800,7 @@ app.MapDelete("/livros/{id}", async (long id) =>
</ul>
<p>
O código-fonte do projeto desenvolvido até agora pode ser <a href="https://git.gbrl.dev/Gabriel/Biblioteca/archive/etapa3.zip">baixado aqui</a>.
O código-fonte do projeto desenvolvido até agora pode ser <a href="https://git.gbrl.dev/Gabriel/Biblioteca/archive/etapa3-v1.zip">baixado aqui</a>.
</p>
</section>