(
&self,
id: &str,
proposed_rule: &[u8],
)
| 777 | } |
| 778 | |
| 779 | pub async fn update_draft_chunk_rule( |
| 780 | &self, |
| 781 | id: &str, |
| 782 | proposed_rule: &[u8], |
| 783 | ) -> PersistenceResult<bool> { |
| 784 | let Some(mut record) = self.get_draft_chunk(id).await? else { |
| 785 | return Ok(false); |
| 786 | }; |
| 787 | |
| 788 | if record.status != "pending" { |
| 789 | return Ok(false); |
| 790 | } |
| 791 | |
| 792 | record.proposed_rule = proposed_rule.to_vec(); |
| 793 | record.last_seen_ms = current_time_ms(); |
| 794 | let payload = draft_chunk_payload_from_record(&record)?; |
| 795 | |
| 796 | let result = sqlx::query( |
| 797 | r#" |
| 798 | UPDATE "objects" |
| 799 | SET "payload" = ?3, "updated_at_ms" = ?4 |
| 800 | WHERE "object_type" = ?1 AND "id" = ?2 AND "status" = 'pending' |
| 801 | "#, |
| 802 | ) |
| 803 | .bind(DRAFT_CHUNK_OBJECT_TYPE) |
| 804 | .bind(id) |
| 805 | .bind(payload) |
| 806 | .bind(record.last_seen_ms) |
| 807 | .execute(&self.pool) |
| 808 | .await |
| 809 | .map_err(|e| map_db_error(&e))?; |
| 810 | Ok(result.rows_affected() > 0) |
| 811 | } |
| 812 | |
| 813 | pub async fn delete_draft_chunks( |
| 814 | &self, |
no test coverage detected