update.
This commit is contained in:
@@ -7,17 +7,26 @@ use rusqlite::Connection;
|
||||
|
||||
/// Salva um layout no banco de dados.
|
||||
/// Se o layout já tem um id, atualiza. Caso contrário, insere.
|
||||
pub fn salvar_layout(conn: &Connection, layout: &Layout) -> Result<i64, String> {
|
||||
/// Retorna `ErroLayout::NomeConflitante` se já existir um layout com o mesmo nome.
|
||||
pub fn salvar_layout(conn: &Connection, layout: &Layout) -> Result<i64, ErroLayout> {
|
||||
// Validar campos obrigatórios
|
||||
if layout.nome().trim().is_empty() {
|
||||
return Err("Nome do layout não pode ser vazio".to_string());
|
||||
return Err(ErroLayout::CampoObrigatorioAusente("nome".to_string()));
|
||||
}
|
||||
|
||||
if let Some(id) = layout.id() {
|
||||
layout_repository::atualizar(conn, layout).map_err(|e| e.to_string())?;
|
||||
layout_repository::atualizar(conn, layout)
|
||||
.map_err(|e| ErroLayout::JsonMalformado(e.to_string()))?;
|
||||
Ok(id)
|
||||
} else {
|
||||
layout_repository::salvar(conn, layout).map_err(|e| e.to_string())
|
||||
let nome = layout.nome().to_string();
|
||||
let existe = layout_repository::existe_nome(conn, &nome)
|
||||
.map_err(|e| ErroLayout::JsonMalformado(e.to_string()))?;
|
||||
if existe {
|
||||
return Err(ErroLayout::NomeConflitante(nome));
|
||||
}
|
||||
layout_repository::salvar(conn, layout)
|
||||
.map_err(|e| ErroLayout::JsonMalformado(e.to_string()))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user