diff --git a/Dockerfile b/Dockerfile index fb1c8cc..86990a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,18 +13,19 @@ COPY frontend/ ./ RUN npm run generate -FROM rust:bookworm AS backend-builder +FROM rust:alpine AS backend-builder WORKDIR /usr/src/warren COPY backend/Cargo.toml backend/Cargo.lock ./ RUN mkdir -p src/bin/backend && mkdir src/lib && echo "fn main() {}" > src/bin/backend/main.rs && echo "" > src/lib/lib.rs +RUN apk add --no-cache pkgconfig openssl-dev libc-dev RUN cargo build --release COPY backend/ . RUN touch src/bin/backend/main.rs && touch src/lib/lib.rs RUN cargo build --release -FROM debian:bookworm +FROM alpine:3 WORKDIR /var/lib/warren COPY --from=backend-builder /usr/src/warren/target/release/warren_backend /usr/bin/warren diff --git a/backend/src/lib/domain/warren/models/file/mod.rs b/backend/src/lib/domain/warren/models/file/mod.rs index 2e245b9..09409a7 100644 --- a/backend/src/lib/domain/warren/models/file/mod.rs +++ b/backend/src/lib/domain/warren/models/file/mod.rs @@ -12,7 +12,7 @@ pub struct File { name: FileName, file_type: FileType, mime_type: Option, - created_at: u64, + created_at: Option, } impl File { @@ -20,7 +20,7 @@ impl File { name: FileName, file_type: FileType, mime_type: Option, - created_at: u64, + created_at: Option, ) -> Self { Self { name, @@ -42,7 +42,7 @@ impl File { self.mime_type.as_ref() } - pub fn created_at(&self) -> u64 { + pub fn created_at(&self) -> Option { self.created_at } } diff --git a/backend/src/lib/inbound/http/handlers/warrens/list_warren_files.rs b/backend/src/lib/inbound/http/handlers/warrens/list_warren_files.rs index e5267ed..3a8bd4b 100644 --- a/backend/src/lib/inbound/http/handlers/warrens/list_warren_files.rs +++ b/backend/src/lib/inbound/http/handlers/warrens/list_warren_files.rs @@ -66,7 +66,7 @@ pub struct WarrenFileElement { name: String, file_type: FileType, mime_type: Option, - created_at: u64, + created_at: Option, } #[derive(Debug, Clone, PartialEq, Eq, Serialize)] diff --git a/backend/src/lib/outbound/file_system.rs b/backend/src/lib/outbound/file_system.rs index 0bf75f2..ba4cf1b 100644 --- a/backend/src/lib/outbound/file_system.rs +++ b/backend/src/lib/outbound/file_system.rs @@ -73,7 +73,11 @@ impl FileSystem { } }; let metadata = entry.metadata().await?; - let created_at = metadata.created()?.duration_since(UNIX_EPOCH)?.as_secs(); + let created_at = metadata + .created() + .ok() + .map(|c| c.duration_since(UNIX_EPOCH).ok().map(|c| c.as_secs())) + .flatten(); let mime_type = match file_type { FileType::File => FileMimeType::from_name(&name), diff --git a/frontend/components/DirectoryEntry.vue b/frontend/components/DirectoryEntry.vue index 42da8ef..c75b94a 100644 --- a/frontend/components/DirectoryEntry.vue +++ b/frontend/components/DirectoryEntry.vue @@ -59,6 +59,7 @@ async function openRenameDialog() { > {{ entry.name }}