| 1171 | } |
| 1172 | |
| 1173 | frame_t WriteFrame(const Frame& frame, const bool use_frame_id) override { |
| 1174 | Sqlite3StmtContext context(sql_stmt_write_frame_); |
| 1175 | |
| 1176 | if (use_frame_id) { |
| 1177 | THROW_CHECK(!ExistsFrame(frame.FrameId())) << "frame_id must be unique"; |
| 1178 | SQLITE3_CALL( |
| 1179 | sqlite3_bind_int64(sql_stmt_write_frame_, 1, frame.FrameId())); |
| 1180 | } else { |
| 1181 | SQLITE3_CALL(sqlite3_bind_null(sql_stmt_write_frame_, 1)); |
| 1182 | } |
| 1183 | |
| 1184 | SQLITE3_CALL(sqlite3_bind_int64(sql_stmt_write_frame_, 2, frame.RigId())); |
| 1185 | |
| 1186 | SQLITE3_CALL(sqlite3_step(sql_stmt_write_frame_)); |
| 1187 | |
| 1188 | const frame_t frame_id = static_cast<frame_t>( |
| 1189 | sqlite3_last_insert_rowid(THROW_CHECK_NOTNULL(database_))); |
| 1190 | |
| 1191 | WriteFrameData(frame_id, frame, sql_stmt_write_frame_data_); |
| 1192 | |
| 1193 | return frame_id; |
| 1194 | } |
| 1195 | |
| 1196 | image_t WriteImage(const Image& image, const bool use_image_id) override { |
| 1197 | if (image.HasFrameId()) { |