refactor(backend): return concrete FuturesByteStream instead of impl Stream
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
use axum::{body::Bytes, extract::multipart::MultipartError};
|
use axum::{body::Bytes, extract::multipart::MultipartError};
|
||||||
use futures_util::{Stream, StreamExt};
|
use futures_util::{Stream, StreamExt};
|
||||||
use opendal::{Operator, layers::LoggingLayer, services};
|
use opendal::{FuturesBytesStream, Operator, layers::LoggingLayer, services};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use sqlx::{PgPool, prelude::FromRow};
|
use sqlx::{PgPool, prelude::FromRow};
|
||||||
|
|
||||||
@@ -80,22 +80,14 @@ impl FileRepository {
|
|||||||
Ok(record)
|
Ok(record)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn download_file(
|
pub async fn download_file(&self, file_id: i64, user_id: i64) -> Result<FuturesBytesStream> {
|
||||||
&self,
|
|
||||||
file_id: i64,
|
|
||||||
user_id: i64,
|
|
||||||
) -> Result<impl Stream<Item = std::io::Result<Bytes>> + use<>> {
|
|
||||||
let record = self.get_file(file_id, user_id).await?;
|
let record = self.get_file(file_id, user_id).await?;
|
||||||
let reader = self.op.reader(&record.storage_key).await?;
|
let reader = self.op.reader(&record.storage_key).await?;
|
||||||
let stream = reader.into_bytes_stream(0..).await?;
|
let stream = reader.into_bytes_stream(0..).await?;
|
||||||
Ok(stream)
|
Ok(stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn thumbnail(
|
pub async fn thumbnail(&self, file_id: i64, user_id: i64) -> Result<FuturesBytesStream> {
|
||||||
&self,
|
|
||||||
file_id: i64,
|
|
||||||
user_id: i64,
|
|
||||||
) -> Result<impl Stream<Item = std::io::Result<Bytes>> + use<>> {
|
|
||||||
let record = self.get_file(file_id, user_id).await?;
|
let record = self.get_file(file_id, user_id).await?;
|
||||||
let path = format!("thumbnail/{}", &record.storage_key);
|
let path = format!("thumbnail/{}", &record.storage_key);
|
||||||
let reader = self.op.reader(&path).await?;
|
let reader = self.op.reader(&path).await?;
|
||||||
@@ -109,7 +101,7 @@ impl FileRepository {
|
|||||||
user_id: i64,
|
user_id: i64,
|
||||||
from: u64,
|
from: u64,
|
||||||
to: u64,
|
to: u64,
|
||||||
) -> Result<impl Stream<Item = std::io::Result<Bytes>> + use<>> {
|
) -> Result<FuturesBytesStream> {
|
||||||
let record = self.get_file(file_id, user_id).await?;
|
let record = self.get_file(file_id, user_id).await?;
|
||||||
let reader = self.op.reader(&record.storage_key).await?;
|
let reader = self.op.reader(&record.storage_key).await?;
|
||||||
let stream = reader.into_bytes_stream(from..to).await?;
|
let stream = reader.into_bytes_stream(from..to).await?;
|
||||||
|
|||||||
Reference in New Issue
Block a user