in-memory storage #32
3 changed files with 9 additions and 13 deletions
|
@ -58,10 +58,12 @@
|
|||
buildInputs = [
|
||||
cargo2nix.packages.x86_64-linux.default
|
||||
fenix.packages.x86_64-linux.minimal.toolchain
|
||||
fenix.packages.x86_64-linux.rust-analyzer
|
||||
];
|
||||
shellHook = ''
|
||||
echo "AEROGRAME DEVELOPMENT SHELL ${fenix.packages.x86_64-linux.minimal.rustc}"
|
||||
export RUST_SRC_PATH="${fenix.packages.x86_64-linux.latest.rust-src}/lib/rustlib/src/rust/library"
|
||||
export RUST_ANALYZER_INTERNALS_DO_NOT_USE='this is unstable'
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
@ -198,7 +198,7 @@ async fn move_incoming_message(
|
|||
// 2 parse mail and add to inbox
|
||||
let msg = IMF::try_from(&plain_mail[..]).map_err(|_| anyhow!("Invalid email body"))?;
|
||||
inbox
|
||||
.append_from_s3(msg, id, &object_key, message_key)
|
||||
.append_from_s3(msg, id, object.to_ref(), message_key)
|
||||
.await?;
|
||||
|
||||
// 3 delete from incoming
|
||||
|
|
|
@ -14,7 +14,7 @@ use crate::login::Credentials;
|
|||
use crate::mail::uidindex::*;
|
||||
use crate::mail::unique_ident::*;
|
||||
use crate::mail::IMF;
|
||||
use crate::storage::{RowStore, BlobStore};
|
||||
use crate::storage::{RowStore, BlobStore, self};
|
||||
use crate::time::now_msec;
|
||||
|
||||
pub struct Mailbox {
|
||||
|
@ -121,13 +121,13 @@ impl Mailbox {
|
|||
&self,
|
||||
msg: IMF<'a>,
|
||||
ident: UniqueIdent,
|
||||
s3_key: &str,
|
||||
blob_ref: storage::BlobRef,
|
||||
message_key: Key,
|
||||
) -> Result<()> {
|
||||
self.mbox
|
||||
.write()
|
||||
.await
|
||||
.append_from_s3(msg, ident, s3_key, message_key)
|
||||
.append_from_s3(msg, ident, blob_ref, message_key)
|
||||
.await
|
||||
}
|
||||
|
||||
|
@ -348,20 +348,14 @@ impl MailboxInternal {
|
|||
&mut self,
|
||||
mail: IMF<'a>,
|
||||
ident: UniqueIdent,
|
||||
s3_key: &str,
|
||||
blob_ref: storage::BlobRef,
|
||||
message_key: Key,
|
||||
) -> Result<()> {
|
||||
futures::try_join!(
|
||||
async {
|
||||
// Copy mail body from previous location
|
||||
let cor = CopyObjectRequest {
|
||||
bucket: self.bucket.clone(),
|
||||
key: format!("{}/{}", self.mail_path, ident),
|
||||
copy_source: format!("{}/{}", self.bucket, s3_key),
|
||||
metadata_directive: Some("REPLACE".into()),
|
||||
..Default::default()
|
||||
};
|
||||
self.s3.copy_object(cor).await?;
|
||||
let dst = self.s3.blob(format!("{}/{}", self.mail_path, ident));
|
||||
blob_ref.copy(dst).await?;
|
||||
Ok::<_, anyhow::Error>(())
|
||||
},
|
||||
async {
|
||||
|
|
Loading…
Reference in a new issue