content_type -> mime_type

This commit is contained in:
2025-11-22 04:00:21 +01:00
parent 5871c7ae6e
commit 138e46a286
10 changed files with 34 additions and 28 deletions
@@ -0,0 +1,3 @@
-- Revert column rename.
ALTER TABLE tenant.documents
RENAME COLUMN mime_type TO content_type;
@@ -0,0 +1,3 @@
-- Rename document content_type column to mime_type for consistency with API.
ALTER TABLE tenant.documents
RENAME COLUMN content_type TO mime_type;
+2 -2
View File
@@ -540,7 +540,7 @@ pub struct Document {
pub id: Uuid,
pub filename: String,
pub original_name: String,
pub content_type: Option<String>,
pub mime_type: Option<String>,
pub folder_id: Option<Uuid>,
pub created_at: NaiveDateTime,
pub updated_at: NaiveDateTime,
@@ -558,7 +558,7 @@ pub struct NewDocument {
pub id: Uuid,
pub filename: String,
pub original_name: String,
pub content_type: Option<String>,
pub mime_type: Option<String>,
pub folder_id: Option<Uuid>,
pub current_version_id: Uuid,
pub metadata: serde_json::Value,
+4 -4
View File
@@ -200,7 +200,7 @@ pub async fn upload_document(
let user_id = user_id;
let mut file_bytes: Option<Vec<u8>> = None;
let mut original_name: Option<String> = None;
let mut content_type: Option<String> = None;
let mut mime_type: Option<String> = None;
let mut folder_id: Option<Uuid> = None;
let mut metadata: Value = Value::Object(Default::default());
let mut tag_ids: Vec<Uuid> = Vec::new();
@@ -219,7 +219,7 @@ pub async fn upload_document(
Some("file") => {
let file_name = field.file_name().map(|n| n.to_string());
original_name = file_name.clone();
content_type = field.content_type().map(|mime| mime.to_string());
mime_type = field.content_type().map(|mime| mime.to_string());
let data = field.bytes().await.map_err(|err| {
let msg = format!("failed to read file bytes: {err}");
error!(error = %err, "failed to read file bytes");
@@ -348,7 +348,7 @@ pub async fn upload_document(
let request = DocumentUploadRequest {
bytes: file_bytes,
original_name,
content_type,
mime_type,
folder_id,
metadata,
title_override,
@@ -689,7 +689,7 @@ pub async fn download_with_token(
&version.s3_key,
disposition.as_deref(),
headers.get(header::RANGE).cloned(),
doc.content_type.as_deref(),
doc.mime_type.as_deref(),
Some(version.id.to_string()),
)
.await
+6 -6
View File
@@ -351,7 +351,7 @@ async fn stream_document(
if let Some(content_type) = upstream.headers().get(header::CONTENT_TYPE) {
builder = builder.header(header::CONTENT_TYPE, content_type);
} else if let Some(ref typ) = document.content_type {
} else if let Some(ref typ) = document.mime_type {
builder = builder.header(header::CONTENT_TYPE, typ);
}
@@ -529,7 +529,7 @@ fn build_resources_for_folder(
display_name,
is_collection: true,
content_length: None,
content_type: None,
mime_type: None,
last_modified,
});
@@ -545,7 +545,7 @@ fn build_resources_for_folder(
display_name: subfolder.name.clone(),
is_collection: true,
content_length: None,
content_type: None,
mime_type: None,
last_modified: Some(to_http_date(subfolder.updated_at)),
});
}
@@ -583,7 +583,7 @@ fn document_to_resource(
display_name: document.title.clone(),
is_collection: false,
content_length: Some(version.size_bytes),
content_type: document.content_type.clone(),
mime_type: document.mime_type.clone(),
last_modified: Some(to_http_date(document.updated_at)),
}
}
@@ -639,7 +639,7 @@ fn render_multistatus(resources: &[DavResource]) -> Result<Vec<u8>, quick_xml::E
writer.write_event(Event::End(BytesEnd::new("D:getcontentlength")))?;
}
if let Some(content_type) = &resource.content_type {
if let Some(content_type) = &resource.mime_type {
writer.write_event(Event::Start(BytesStart::new("D:getcontenttype")))?;
writer.write_event(Event::Text(BytesText::new(content_type)))?;
writer.write_event(Event::End(BytesEnd::new("D:getcontenttype")))?;
@@ -681,7 +681,7 @@ struct DavResource {
display_name: String,
is_collection: bool,
content_length: Option<i64>,
content_type: Option<String>,
mime_type: Option<String>,
last_modified: Option<String>,
}
enum ResolvedPath {
+1 -1
View File
@@ -83,7 +83,7 @@ diesel::table! {
#[max_length = 255]
original_name -> Varchar,
#[max_length = 100]
content_type -> Nullable<Varchar>,
mime_type -> Nullable<Varchar>,
folder_id -> Nullable<Uuid>,
created_at -> Timestamptz,
updated_at -> Timestamptz,
+6 -6
View File
@@ -133,7 +133,7 @@ pub struct DocumentResponse {
pub title: String,
pub original_name: String,
#[schema(nullable)]
pub content_type: Option<String>,
pub mime_type: Option<String>,
#[schema(nullable)]
pub folder_id: Option<Uuid>,
pub created_at: String,
@@ -225,7 +225,7 @@ fn default_true() -> bool {
pub struct DocumentUploadRequest {
pub bytes: Vec<u8>,
pub original_name: String,
pub content_type: Option<String>,
pub mime_type: Option<String>,
pub folder_id: Option<Uuid>,
pub metadata: Value,
pub title_override: Option<String>,
@@ -685,7 +685,7 @@ impl<'a> DocumentsService<'a> {
let DocumentUploadRequest {
bytes,
original_name,
content_type,
mime_type,
folder_id,
metadata,
title_override,
@@ -739,7 +739,7 @@ impl<'a> DocumentsService<'a> {
.put_object(
&s3_key,
bytes.clone(),
content_type.clone(),
mime_type.clone(),
content_disposition.clone(),
)
.await
@@ -756,7 +756,7 @@ impl<'a> DocumentsService<'a> {
id: doc_id,
filename: stored_filename.clone(),
original_name: original_name.clone(),
content_type: content_type.clone(),
mime_type: mime_type.clone(),
folder_id,
current_version_id: version_id,
metadata: metadata_value.clone(),
@@ -1418,7 +1418,7 @@ impl<'a> DocumentsService<'a> {
filename: doc.filename,
title: doc.title,
original_name: doc.original_name,
content_type: doc.content_type,
mime_type: doc.mime_type,
folder_id: doc.folder_id,
created_at: to_iso(doc.created_at),
updated_at: to_iso(doc.updated_at),
+3 -3
View File
@@ -155,8 +155,8 @@ pub(crate) fn determine_thumbnail_support(document: &Document) -> (bool, Option<
.into_iter()
.collect();
if let Some(ref content_type) = document.content_type {
if supported_mimes.contains(content_type.as_str()) {
if let Some(ref mime_type) = document.mime_type {
if supported_mimes.contains(mime_type.as_str()) {
return (true, None);
}
}
@@ -183,7 +183,7 @@ pub(crate) fn determine_thumbnail_support(document: &Document) -> (bool, Option<
fn document_supports_ocr(document: &Document) -> bool {
document
.content_type
.mime_type
.as_deref()
.map(|mime| mime.eq_ignore_ascii_case("application/pdf"))
.unwrap_or_else(|| {
+5 -5
View File
@@ -59,7 +59,7 @@ impl Task<DocumentVersionTaskContext> for GenerateOcrTask {
let bytes = ctx.buffered_object().await?.to_vec();
let meta = PdfDocumentMeta {
content_type: context.document.content_type.clone(),
mime_type: context.document.mime_type.clone(),
original_name: context.document.original_name.clone(),
};
@@ -284,7 +284,7 @@ fn generate_ocr_text(meta: &PdfDocumentMeta, bytes: &[u8]) -> Option<OcrGenerati
}
struct PdfDocumentMeta {
content_type: Option<String>,
mime_type: Option<String>,
original_name: String,
}
@@ -395,8 +395,8 @@ fn run_ocr(bytes: &[u8]) -> Result<Option<String>, OcrError> {
}
fn document_meta_is_pdf(meta: &PdfDocumentMeta) -> bool {
if let Some(content_type) = &meta.content_type {
if content_type.eq_ignore_ascii_case("application/pdf") {
if let Some(mime_type) = &meta.mime_type {
if mime_type.eq_ignore_ascii_case("application/pdf") {
return true;
}
}
@@ -410,7 +410,7 @@ fn document_meta_is_pdf(meta: &PdfDocumentMeta) -> bool {
fn document_is_pdf(document: &Document) -> bool {
document
.content_type
.mime_type
.as_deref()
.map(|mime| mime.eq_ignore_ascii_case("application/pdf"))
.unwrap_or_else(|| {
+1 -1
View File
@@ -463,7 +463,7 @@ fn persist_document_page_count(
fn document_is_pdf(document: &Document) -> bool {
document
.content_type
.mime_type
.as_deref()
.map(|mime| mime.eq_ignore_ascii_case("application/pdf"))
.unwrap_or_else(|| {