db: use sqlx FromRow derive for row mapping
* removes manual row.get() calls in favor of derive macros
* uses #[sqlx(rename)] for columns with different struct field names
* uses #[sqlx(skip)] for constant fields like is_spark and is_saved
* removes unused sqlx::Row import
This reduces boilerplate and makes the mapping less error-prone since
field names are checked at compile time.