Dionisio
b0235e05c8
perf(issue#6): migrate ShareFsRepository to PostgreSQL
...
- Add storage.shares table with indexes on token, (item_id, item_type), created_by
- Create SharePgRepository with indexed SQL queries and window-function pagination
- Rewire DI to inject SharePgRepository with PgPool instead of config
- Delete legacy share_fs_repository.rs (295 lines of JSON file I/O)
- Remove dead module declaration from repositories/mod.rs
Eliminates O(n) full-file JSON reads/writes, TOCTOU races, and crash
corruption risk. All share operations now use indexed PG queries.
2026-02-24 10:09:49 +01:00
Dionisio
fac0b5e77b
fix: critical bugs from deep audit
...
- Fix copy_files() data loss: implement real copy_file across full stack
(FileWritePort, FileManagementUseCase, stubs, service, repository with
atomic CTE + dedup ref_count increment, batch_operations caller)
- Fix plaintext password in replace_default_admin: hash password via
PasswordHasherPort before User::new()
- Fix CalendarService hardcoded user_id: unify CalendarUseCase trait with
explicit user_id parameter on all methods, remove zombie _for_user
duplicates and hardcoded 'current_user_id', update 20 CalDAV handler
call sites
- Previous session: migrate DedupService to PostgreSQL (storage.blobs),
atomic CTEs with compensation for file/folder repository operations
2026-02-14 20:22:19 +01:00
Dionisio
3c7c16f07e
feat( #113 ): 100% blob storage model — PostgreSQL metadata + DedupService blobs
...
BREAKING CHANGE: Storage model completely rewritten. All file/folder
metadata now lives in PostgreSQL (storage schema). File content stored
as content-addressable blobs via DedupService. Filesystem directories
are no longer used for user storage.
New components:
- storage.folders / storage.files / storage.trash_items (PG schema)
- FolderDbRepository: virtual folders backed by PG
- FileBlobReadRepository: file reads via PG metadata + dedup blobs
- FileBlobWriteRepository: file writes via PG metadata + dedup blobs
- TrashDbRepository: soft-delete trash using is_trashed flags
Removed legacy FS components (~5500 lines deleted):
- FolderFsRepository, FileFsReadRepository, FileFsWriteRepository
- CompositeFileRepository, ParallelFileProcessor
- IdMappingService, IdMappingOptimizer, FileMetadataCache
- BufferPool, FileSystemUtils, RepositoryErrors
- TrashFsRepository, FolderFsRepositoryTrash
DI rewired: build_app_state() now requires PgPool (no FS fallback).
FileUploadService.new_with_read() and FileRetrievalService.new_with_cache()
constructors added for blob model (no write-behind needed).
Closes #113
2026-02-14 17:54:25 +01:00
Dionisio
4c98c5a657
style: apply cargo fmt to entire codebase
...
Standardize code formatting across all 173 Rust source files
using rustfmt. No functional changes - purely cosmetic.
This establishes a consistent code style baseline for the
project going forward.
2026-02-14 01:29:34 +01:00
Diocrafts
a82faa5eaf
refactoring hexagonal and clean architecture
2026-02-08 13:40:23 +01:00
DioCrafts
705cb5b069
adding pdf and image viewer
2025-04-02 01:22:05 +02:00
DioCrafts
3a4cb75ac7
configuring backend topology
2025-03-28 12:38:48 +01:00
DioCrafts
bfbef18117
fix warnings
2025-03-27 23:41:56 +01:00
DioCrafts
38b0e9594b
fix auth errors and add primigenial paper trash
2025-03-24 16:47:42 +01:00
DioCrafts
cafad0fbfd
adding user authentication
2025-03-20 09:22:31 +01:00
DioCrafts
6e055c3043
adding features
2025-03-19 19:52:12 +01:00
DioCrafts
d9bbd575d2
adding several features
2025-03-19 00:44:27 +01:00
root
fe19bc8505
Initial commit
2025-03-17 21:28:08 +01:00