| 1102 | } |
| 1103 | |
| 1104 | rig_t WriteRig(const Rig& rig, const bool use_rig_id) override { |
| 1105 | THROW_CHECK(rig.NumSensors() > 0) << "Rig must have at least one sensor"; |
| 1106 | |
| 1107 | Sqlite3StmtContext context(sql_stmt_write_rig_); |
| 1108 | |
| 1109 | if (use_rig_id) { |
| 1110 | THROW_CHECK(!ExistsRig(rig.RigId())) << "rig_id must be unique"; |
| 1111 | SQLITE3_CALL(sqlite3_bind_int64(sql_stmt_write_rig_, 1, rig.RigId())); |
| 1112 | } else { |
| 1113 | SQLITE3_CALL(sqlite3_bind_null(sql_stmt_write_rig_, 1)); |
| 1114 | } |
| 1115 | |
| 1116 | SQLITE3_CALL( |
| 1117 | sqlite3_bind_int64(sql_stmt_write_rig_, |
| 1118 | 2, |
| 1119 | static_cast<sqlite3_int64>(rig.RefSensorId().id))); |
| 1120 | SQLITE3_CALL( |
| 1121 | sqlite3_bind_int64(sql_stmt_write_rig_, |
| 1122 | 3, |
| 1123 | static_cast<sqlite3_int64>(rig.RefSensorId().type))); |
| 1124 | |
| 1125 | SQLITE3_CALL(sqlite3_step(sql_stmt_write_rig_)); |
| 1126 | |
| 1127 | const rig_t rig_id = static_cast<rig_t>( |
| 1128 | sqlite3_last_insert_rowid(THROW_CHECK_NOTNULL(database_))); |
| 1129 | |
| 1130 | WriteRigSensors(rig_id, rig, sql_stmt_write_rig_sensor_); |
| 1131 | |
| 1132 | return rig_id; |
| 1133 | } |
| 1134 | |
| 1135 | camera_t WriteCamera(const Camera& camera, |
| 1136 | const bool use_camera_id) override { |