Profiles: Don't pull files needlessly

This commit is contained in:
asonix 2021-02-08 18:01:24 -06:00
parent 0dab6f14a9
commit e9b9a83042
2 changed files with 14 additions and 24 deletions

View file

@ -29,9 +29,7 @@ impl Action for CreateSubmission {
} }
for file in &self.files { for file in &self.files {
if let Ok(Some(file)) = ctx.store.files.by_id(*file) { changes.add_file(*file);
changes.add_file(&file);
}
} }
let submission = if changes.any_changes() { let submission = if changes.any_changes() {
@ -129,33 +127,25 @@ impl Action for UpdateSubmission {
let mut removed_file_ids = HashSet::new(); let mut removed_file_ids = HashSet::new();
if let Some(files) = &self.only_files { if let Some(files) = &self.only_files {
for file in submission.files() { for file in submission.files() {
if let Ok(Some(file)) = ctx.store.files.by_id(*file) { changes.delete_file(*file);
changes.delete_file(&file); removed_file_ids.insert(*file);
removed_file_ids.insert(file.id());
}
} }
for file in files { for file in files {
if let Ok(Some(file)) = ctx.store.files.by_id(*file) { changes.add_file(*file);
changes.add_file(&file); removed_file_ids.remove(file);
removed_file_ids.remove(&file.id());
}
} }
} else { } else {
if let Some(removed) = &self.removed_files { if let Some(removed) = &self.removed_files {
for file in removed { for file in removed {
if let Ok(Some(file)) = ctx.store.files.by_id(*file) { changes.delete_file(*file);
changes.delete_file(&file); removed_file_ids.insert(*file);
removed_file_ids.insert(file.id());
}
} }
} }
if let Some(new) = &self.new_files { if let Some(new) = &self.new_files {
for file in new { for file in new {
if let Ok(Some(file)) = ctx.store.files.by_id(*file) { changes.add_file(*file);
changes.add_file(&file); removed_file_ids.remove(file);
removed_file_ids.remove(&file.id());
}
} }
} }
} }

View file

@ -1,4 +1,4 @@
use super::{File, StoreError, Undo}; use super::{StoreError, Undo};
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use sled::{Db, Transactional, Tree}; use sled::{Db, Transactional, Tree};
use std::{fmt, io::Cursor}; use std::{fmt, io::Cursor};
@ -226,13 +226,13 @@ impl SubmissionChanges {
self self
} }
pub(crate) fn add_file(&mut self, file: &File) -> &mut Self { pub(crate) fn add_file(&mut self, file_id: Uuid) -> &mut Self {
self.files.push(file.id); self.files.push(file_id);
self self
} }
pub(crate) fn delete_file(&mut self, file: &File) -> &mut Self { pub(crate) fn delete_file(&mut self, file_id: Uuid) -> &mut Self {
self.files.retain(|id| *id != file.id); self.files.retain(|id| *id != file_id);
self self
} }