| 653 | } |
| 654 | |
| 655 | std::optional<Rig> ReadRigWithSensor(sensor_t sensor_id) const override { |
| 656 | auto find_rig_id_with_sensor = [&sensor_id](sqlite3_stmt* sql_stmt) { |
| 657 | Sqlite3StmtContext context(sql_stmt); |
| 658 | SQLITE3_CALL(sqlite3_bind_int64( |
| 659 | sql_stmt, 1, static_cast<sqlite3_int64>(sensor_id.id))); |
| 660 | SQLITE3_CALL(sqlite3_bind_int64( |
| 661 | sql_stmt, 2, static_cast<sqlite3_int64>(sensor_id.type))); |
| 662 | std::optional<rig_t> rig_id; |
| 663 | if (SQLITE3_CALL(sqlite3_step(sql_stmt)) == SQLITE_ROW) { |
| 664 | rig_id = static_cast<rig_t>(sqlite3_column_int64(sql_stmt, 0)); |
| 665 | } |
| 666 | return rig_id; |
| 667 | }; |
| 668 | |
| 669 | if (const std::optional<rig_t> rig_id = |
| 670 | find_rig_id_with_sensor(sql_stmt_read_rig_with_sensor_); |
| 671 | rig_id.has_value()) { |
| 672 | return ReadRig(*rig_id); |
| 673 | } |
| 674 | |
| 675 | if (const std::optional<rig_t> rig_id = |
| 676 | find_rig_id_with_sensor(sql_stmt_read_rig_with_ref_sensor_); |
| 677 | rig_id.has_value()) { |
| 678 | return ReadRig(*rig_id); |
| 679 | } |
| 680 | |
| 681 | return std::nullopt; |
| 682 | } |
| 683 | |
| 684 | std::vector<Rig> ReadAllRigs() const override { |
| 685 | Sqlite3StmtContext context(sql_stmt_read_rigs_); |
no outgoing calls