- split settings module into per-struct files
- add DatabaseSettings with default in-memory SQLite path
- implement RelayApi struct with GET /relays and POST
/relays/{id}/toggle
- wire create_relay_controller and create_label_repository into
Application::build() with mock/real selection via cfg!(test) || CI
- register RelayApi in OpenApiService alongside existing APIs
Add reusable test suite with 18 test functions covering get_label(),
save_label(), delete_label(), and get_all_labels() methods. Tests
verify contract compliance for any repository implementation.
Added delete_label() method to trait interface and implemented it in
MockRelayLabelRepository to support complete CRUD operations.
TDD phase: RED - Tests written before SQLite implementation (T036)
Ref: T035 (specs/001-modbus-relay-control/tasks.md)