Repository navigation
Conversation
|
|
||
| /// Trims the justification and stores `None` when nothing is left, so blank | ||
| /// explanations are treated as absent. | ||
| fn normalize_justification(justification: Option<&str>) -> Option<String> { |
There was a problem hiding this comment.
Para mantener los patrones del proyecto es preferible anexar este tipo de funciones como método de la struct y no de forma libre en el módulo.
| } | ||
| } | ||
|
|
||
| fn build_question( |
There was a problem hiding this comment.
De paso podrías eliminar/mover esta función, al parecer por descuido quedó fuera y solo se utiliza una vez durante la construcción del banco. No es que aporte demasiado estando fuera del Service.
La construcción de la Question puede ser inline en el ciclo.
| pub options: Vec<String>, | ||
| #[serde(default, skip_serializing_if = "PatchField::is_missing")] | ||
| #[validate(custom(function = "validate_justification_update"))] | ||
| pub justification: PatchField<String>, |
There was a problem hiding this comment.
Entiendo el por qué la decisión de utilizar un enum custom en este caso, si bien es más idiomático lo que generalmente se suele utilizar es el crate serde_with con un doble Option: Option<Option<T>>.
En caso de mantener el enum, lo más adecuado sería mantenerlo en shared/ ya que a futuro puede utilizarse en otros dtos.
Resumen
nulllas elimina explícitamente.Migraciones
20261011000000_question-justification.sql20261011010000_quiz-results-multiple-views.sqlVerificación
cargo fmt --all -- --checkcargo clippy --workspace --all-targets --all-features -- -D warnings(conCARGO_TARGET_DIRtemporal)corepack pnpm run lintcorepack pnpm run checkNo ejecuté tests. Preparé pools locales por unidad con 151 preguntas justificadas para validación manual; están fuera de este repositorio. La PR queda en Draft mientras se realiza esa prueba.