Files
OxiCloud/REPO-DOCUMENTATION.md
2025-04-04 01:48:55 +02:00

28 KiB

OxiCloud Code Documentation

This document provides a detailed description of each file in the OxiCloud codebase, organized by architectural layers according to the clean hexagonal architecture pattern.

Domain Layer

The domain layer forms the core of the application, containing business entities and repository interfaces.

Entities

File Entity (src/domain/entities/file.rs)

  • Core domain entity representing files in the system
  • Implements an immutable design pattern for file operations
  • Provides validation, creation, and manipulation methods for files
  • Maintains both physical storage information and logical metadata
  • Includes error handling via FileError for validation failures

Folder Entity (src/domain/entities/folder.rs)

  • Represents folders/directories in the domain model
  • Supports hierarchical structure with parent-child relationships
  • Provides validation, creation, and update operations
  • Implements immutable pattern with methods returning new instances
  • Handles path resolution for proper folder hierarchy

User Entity (src/domain/entities/user.rs)

  • Manages user accounts and authentication
  • Provides secure password handling with Argon2 hashing
  • Supports roles (Admin, User) with appropriate permissions
  • Tracks storage usage and quotas
  • Includes account management functions (activation, deactivation, login tracking)

Share Entity (src/domain/entities/share.rs)

  • Implements file and folder sharing functionality
  • Supports various permission levels (read, write, reshare)
  • Provides password protection for shared resources
  • Handles expiration dates for temporary sharing
  • Tracks access statistics for shared resources

Calendar Entity (src/domain/entities/calendar.rs)

  • Supports calendar functionality for CalDAV integration
  • Manages calendar properties like name, color, and description
  • Provides ownership and access control
  • Supports custom properties for extended CalDAV compatibility
  • Handles validation of calendar data

Calendar Event Entity (src/domain/entities/calendar_event.rs)

  • Represents calendar events with properties like title, description, location
  • Handles date/time management with recurrence rules
  • Supports reminders and notifications
  • Provides validation for event data
  • Implements custom properties for CalDAV compatibility

Trashed Item Entity (src/domain/entities/trashed_item.rs)

  • Manages files and folders in the trash
  • Tracks original locations for restoration
  • Implements automatic cleanup based on retention policies
  • Provides restoration and permanent deletion functionality

Repositories (Interfaces)

File Repository (src/domain/repositories/file_repository.rs)

  • Defines the contract for file storage operations
  • Abstracts storage implementation details from the domain
  • Supports file creation, retrieval, updating, and deletion
  • Provides methods for content streaming and file movement
  • Includes trash functionality for file lifecycle management

Folder Repository (src/domain/repositories/folder_repository.rs)

  • Defines the interface for folder manipulation
  • Abstracts storage implementation details for directories
  • Handles folder creation, listing, and hierarchy management
  • Supports moving folders and retrieving path information
  • Includes trash operations for folders

User Repository (src/domain/repositories/user_repository.rs)

  • Defines the interface for user data persistence
  • Supports user creation, retrieval, and management
  • Provides authentication and session management
  • Handles user preferences and settings storage
  • Manages user quotas and storage usage tracking

Share Repository (src/domain/repositories/share_repository.rs)

  • Defines the interface for share record management
  • Handles creation and validation of share records
  • Tracks permissions and expiration settings
  • Provides access verification for shared resources
  • Manages share revocation and updates

Trash Repository (src/domain/repositories/trash_repository.rs)

  • Defines the interface for trash operations
  • Manages soft deletion and restoration of resources
  • Handles retention policies and automatic cleanup
  • Provides listing of trashed items with metadata
  • Supports permanent deletion operations

Domain Services

Auth Service (src/domain/services/auth_service.rs)

  • Provides domain-level authentication logic
  • Implements password validation and hashing
  • Defines authentication policies and rules
  • Manages token generation and validation
  • Handles security-related domain operations

I18n Service (src/domain/services/i18n_service.rs)

  • Defines domain-level internationalization interface
  • Provides translation lookup capabilities
  • Manages localization strategies
  • Supports multiple languages and fallbacks
  • Handles format localization for dates, numbers, etc.

Path Service (src/domain/services/path_service.rs)

  • Manages domain-level path abstractions
  • Provides path validation and normalization
  • Handles path traversal and resolution
  • Implements path security measures
  • Supports different path formats and conventions

Application Layer

The application layer orchestrates use cases by coordinating domain objects and providing services to the interfaces layer.

Services

File Service (src/application/services/file_service.rs)

  • Implements file-related use cases
  • Coordinates between repositories for file operations
  • Provides file upload, download, and listing functionality
  • Handles error translation between layers
  • Contains business logic for file operations

Folder Service (src/application/services/folder_service.rs)

  • Implements folder management use cases
  • Manages folder creation, listing, and hierarchy
  • Coordinates between repositories for folder operations
  • Maintains folder structure integrity
  • Handles error translation for folder operations

Auth Application Service (src/application/services/auth_application_service.rs)

  • Manages user authentication flows
  • Implements login, logout, and session management
  • Handles token generation and validation
  • Coordinates with user repository for verification
  • Manages password reset and account recovery

File Management Service (src/application/services/file_management_service.rs)

  • Provides higher-level file operations
  • Manages file uploads, versions, and metadata
  • Handles file operations across repositories
  • Coordinates transactional file operations
  • Provides advanced file searching and filtering

File Retrieval Service (src/application/services/file_retrieval_service.rs)

  • Specialized service for file content retrieval
  • Optimizes file reading operations
  • Provides streaming and download functionality
  • Implements read-specific error handling
  • Supports different retrieval patterns (whole file, ranges)

File Upload Service (src/application/services/file_upload_service.rs)

  • Specialized service for handling file uploads
  • Manages chunked and multipart uploads
  • Provides validation during upload
  • Handles large file uploads efficiently
  • Supports upload resumption and integrity verification

Search Service (src/application/services/search_service.rs)

  • Implements file and folder search functionality
  • Provides text-based content searching
  • Handles metadata-based filtering
  • Supports sorting and pagination of results
  • Optimizes search operations for performance

Share Service (src/application/services/share_service.rs)

  • Implements file and folder sharing functionality
  • Creates and manages share links
  • Handles permission checking for shared resources
  • Manages password protection for shares
  • Processes access requests for shared content

Trash Service (src/application/services/trash_service.rs)

  • Implements trash can functionality
  • Manages moving items to trash and restoration
  • Handles automatic cleanup of expired trash
  • Coordinates with repositories for trash operations
  • Maintains metadata for trashed items

Recent Service (src/application/services/recent_service.rs)

  • Tracks recently accessed files
  • Manages user-specific recent file lists
  • Handles expiration of old entries
  • Provides sorting and filtering of recent files
  • Coordinates with file repository for metadata

Favorites Service (src/application/services/favorites_service.rs)

  • Manages user favorite files and folders
  • Provides adding and removing favorites
  • Handles listing and sorting of favorites
  • Coordinates with repositories for data consistency
  • Maintains user-specific favorite lists

I18n Application Service (src/application/services/i18n_application_service.rs)

  • Handles internationalization and localization
  • Provides translation lookups for UI components
  • Manages locale detection and setting
  • Coordinates with i18n domain service
  • Supports dynamic language switching

Storage Mediator (src/application/services/storage_mediator.rs)

  • Coordinates between different storage repositories
  • Manages transaction coordination
  • Handles path resolution between storage layers
  • Provides unified view of storage subsystems
  • Optimizes operations across storage types

Batch Operations (src/application/services/batch_operations.rs)

  • Implements batch processing for file operations
  • Handles atomic multi-file operations
  • Provides transaction support for batch operations
  • Manages failure handling and partial success
  • Optimizes performance for bulk operations

Ports

Inbound Ports (src/application/ports/inbound.rs)

  • Defines interfaces for external systems to use
  • Contains use case interfaces for application services
  • Specifies contracts for UI and API interactions
  • Provides clear boundaries for application functionality
  • Forms the primary API for interfaces layer

Outbound Ports (src/application/ports/outbound.rs)

  • Defines interfaces used by application services
  • Specifies contracts that infrastructure must implement
  • Allows swapping infrastructure implementations
  • Maintains dependency inversion principle
  • Protects application layer from external dependencies

Auth Ports (src/application/ports/auth_ports.rs)

  • Defines interfaces for authentication operations
  • Specifies contracts for login, validation, and sessions
  • Handles token generation and verification
  • Provides user identity management
  • Supports different authentication methods

Storage Ports (src/application/ports/storage_ports.rs)

  • Defines interfaces for storage operations
  • Specifies contracts for accessing persistent storage
  • Handles file system and database interactions
  • Provides transaction support for storage operations
  • Supports different storage backends

File Ports (src/application/ports/file_ports.rs)

  • Defines interfaces for file operations
  • Contains file upload and retrieval use cases
  • Specifies contracts for file management
  • Handles file-specific error conditions
  • Supports various file operation patterns

Favorites Ports (src/application/ports/favorites_ports.rs)

  • Defines interfaces for favorites functionality
  • Specifies contracts for favorite management
  • Handles favorite-specific operations
  • Provides user-specific favorite management
  • Supports different favorite organization structures

Recent Ports (src/application/ports/recent_ports.rs)

  • Defines interfaces for recent files functionality
  • Specifies contracts for recent file tracking
  • Handles history and access patterns
  • Provides user-specific recent file handling
  • Supports different recency algorithms

Share Ports (src/application/ports/share_ports.rs)

  • Defines interfaces for sharing functionality
  • Specifies contracts for share creation and access
  • Handles permission verification for shares
  • Provides link generation and management
  • Supports different sharing models

Trash Ports (src/application/ports/trash_ports.rs)

  • Defines interfaces for trash functionality
  • Specifies contracts for trash operations
  • Handles trash-specific workflows
  • Provides retention and cleanup interfaces
  • Supports different trash implementation strategies

DTOs

File DTO (src/application/dtos/file_dto.rs)

  • Data transfer object for file entities
  • Provides serialization and API representation
  • Translates between domain model and external interfaces
  • Includes conversions to/from domain entities
  • Contains file metadata for API responses

Folder DTO (src/application/dtos/folder_dto.rs)

  • Data transfer object for folder entities
  • Provides folder data for API responses
  • Handles serialization and API representation
  • Includes conversions to/from domain entities
  • Contains folder structure information

User DTO (src/application/dtos/user_dto.rs)

  • Data transfer object for user information
  • Provides user data for API responses
  • Handles serialization with sensitive data protection
  • Includes conversions to/from domain entities
  • Contains user profile information

Share DTO (src/application/dtos/share_dto.rs)

  • Data transfer object for share information
  • Provides share data for API responses
  • Handles serialization of sharing details
  • Includes conversions to/from domain entities
  • Contains share link and permission data

Trash DTO (src/application/dtos/trash_dto.rs)

  • Data transfer object for trashed items
  • Provides trash information for API responses
  • Handles serialization of trash metadata
  • Includes conversions to/from domain entities
  • Contains restoration information

Pagination DTO (src/application/dtos/pagination.rs)

  • Handles pagination for list responses
  • Provides page size and number information
  • Supports offset and cursor-based pagination
  • Includes metadata for total items and pages
  • Facilitates consistent pagination across APIs

Favorites DTO (src/application/dtos/favorites_dto.rs)

  • Data transfer object for favorites
  • Provides favorites data for API responses
  • Handles serialization of favorite items
  • Includes conversions to/from domain entities
  • Contains favorite metadata and organization

Recent DTO (src/application/dtos/recent_dto.rs)

  • Data transfer object for recent files
  • Provides recent items data for API responses
  • Handles serialization of access history
  • Includes conversions to/from domain entities
  • Contains timing and access metadata

Search DTO (src/application/dtos/search_dto.rs)

  • Data transfer object for search results
  • Provides search data for API responses
  • Handles serialization of search results
  • Includes query and result metadata
  • Contains relevance and ranking information

I18n DTO (src/application/dtos/i18n_dto.rs)

  • Data transfer object for internationalization
  • Provides language and translation data
  • Handles serialization of language resources
  • Includes locale and preference information
  • Contains translation bundle structures

Adapters

WebDAV Adapter (src/application/adapters/webdav_adapter.rs)

  • Adapts between OxiCloud domain models and WebDAV protocol
  • Handles XML parsing and generation for WebDAV operations
  • Implements property handling for WebDAV (PROPFIND, PROPPATCH)
  • Provides WebDAV-specific error handling
  • Translates between file operations and WebDAV methods

Transactions

Storage Transaction (src/application/transactions/storage_transaction.rs)

  • Manages transactional operations for storage
  • Implements transaction boundaries and commits
  • Provides rollback capabilities on failure
  • Ensures consistency across multiple operations
  • Handles transaction isolation levels

Infrastructure Layer

This layer provides concrete implementations of repository interfaces and technical services.

Repositories (Implementations)

File FS Repository (src/infrastructure/repositories/file_fs_repository.rs)

  • Implements FileRepository interface for filesystem storage
  • Manages physical file operations on disk
  • Handles file content reading and writing
  • Implements optimized large file handling
  • Provides metadata caching for performance

File FS Read Repository (src/infrastructure/repositories/file_fs_read_repository.rs)

  • Specialized repository for read-only file operations
  • Optimized for high-performance file retrieval
  • Implements caching for frequently accessed files
  • Supports streaming of large files
  • Handles content type detection and verification

File FS Write Repository (src/infrastructure/repositories/file_fs_write_repository.rs)

  • Specialized repository for file write operations
  • Handles atomic file writes with transaction support
  • Implements optimized large file writes
  • Manages file locking for concurrent writes
  • Provides integrity verification for written files

File FS Repository Trash (src/infrastructure/repositories/file_fs_repository_trash.rs)

  • Extends file repository with trash functionality
  • Implements soft delete operations for files
  • Manages restoration from trash
  • Handles automatic cleanup of expired trash
  • Maintains metadata for trashed files

Folder FS Repository (src/infrastructure/repositories/folder_fs_repository.rs)

  • Implements FolderRepository interface for filesystem
  • Creates and manages directory structures
  • Handles folder listing and hierarchy traversal
  • Implements folder permissions and ownership
  • Provides optimization for deep folder structures

Folder FS Repository Trash (src/infrastructure/repositories/folder_fs_repository_trash.rs)

  • Extends folder repository with trash functionality
  • Implements soft delete for directories
  • Handles recursive trash operations for folders
  • Manages restoration of folder hierarchies
  • Maintains metadata for trashed folders

Share FS Repository (src/infrastructure/repositories/share_fs_repository.rs)

  • Implements ShareRepository for filesystem-based sharing
  • Manages share records and permissions
  • Handles link generation and validation
  • Provides access control for shared resources
  • Supports share expiration and revocation

Trash FS Repository (src/infrastructure/repositories/trash_fs_repository.rs)

  • Implements TrashRepository for filesystem
  • Manages trash directory structure
  • Handles metadata for trashed items
  • Implements cleanup policies for expired trash
  • Supports permanent deletion operations

Session PG Repository (src/infrastructure/repositories/pg/session_pg_repository.rs)

  • Implements session storage using PostgreSQL
  • Manages user sessions and authentication state
  • Handles session creation, validation, and expiration
  • Provides secure token management
  • Supports multiple concurrent sessions

User PG Repository (src/infrastructure/repositories/pg/user_pg_repository.rs)

  • Implements UserRepository with PostgreSQL
  • Stores user accounts and profile information
  • Handles user queries and updates
  • Manages user roles and permissions
  • Supports user search and filtering

File Metadata Manager (src/infrastructure/repositories/file_metadata_manager.rs)

  • Manages file metadata independently of content
  • Handles extended attributes for files
  • Provides caching for frequently accessed metadata
  • Optimizes metadata operations
  • Supports custom metadata fields

File Path Resolver (src/infrastructure/repositories/file_path_resolver.rs)

  • Resolves logical paths to physical storage locations
  • Handles path normalization and validation
  • Provides path translation between different systems
  • Supports virtual paths and redirections
  • Optimizes path resolution for nested structures

Parallel File Processor (src/infrastructure/repositories/parallel_file_processor.rs)

  • Implements parallel processing for large files
  • Optimizes file operations with multi-threading
  • Provides chunked reading and writing
  • Handles load balancing for file operations
  • Implements backpressure mechanisms

Services

ID Mapping Service (src/infrastructure/services/id_mapping_service.rs)

  • Manages mapping between UUIDs and filesystem paths
  • Provides persistent ID generation and lookup
  • Handles path changes while maintaining stable IDs
  • Implements caching for frequently accessed mappings
  • Ensures consistency between IDs and paths

Buffer Pool (src/infrastructure/services/buffer_pool.rs)

  • Manages memory buffers for file operations
  • Implements pooling for optimal memory usage
  • Provides buffer recycling to reduce allocations
  • Handles buffer sizing for different operations
  • Implements thread-safe buffer management

Cache Manager (src/infrastructure/services/cache_manager.rs)

  • Provides application-wide caching services
  • Implements multiple cache levels (memory, disk)
  • Handles cache invalidation and consistency
  • Manages cache size limits and eviction
  • Provides statistics for cache performance

Compression Service (src/infrastructure/services/compression_service.rs)

  • Implements data compression for files and responses
  • Supports multiple compression algorithms
  • Provides on-the-fly compression for API responses
  • Handles selective compression based on file types
  • Optimizes compression levels for different content

File System I18n Service (src/infrastructure/services/file_system_i18n_service.rs)

  • Implements I18n service using filesystem storage
  • Loads translations from JSON files
  • Handles language detection and fallbacks
  • Provides translation lookups for UI components
  • Supports dynamic language switching

File Metadata Cache (src/infrastructure/services/file_metadata_cache.rs)

  • Provides caching for file metadata
  • Optimizes repeated metadata access
  • Implements cache invalidation strategies
  • Handles concurrent access to metadata
  • Supports different cache levels (memory, persistent)

ID Mapping Optimizer (src/infrastructure/services/id_mapping_optimizer.rs)

  • Optimizes ID-to-path mapping operations
  • Implements batch processing for mapping updates
  • Provides preloading for frequently accessed mappings
  • Handles compaction of mapping storage
  • Optimizes lookup performance for large mappings

Zip Service (src/infrastructure/services/zip_service.rs)

  • Provides ZIP archive creation and extraction
  • Supports on-the-fly compression for downloads
  • Handles large directory archiving
  • Implements streaming ZIP generation
  • Provides progress tracking for large operations

Trash Cleanup Service (src/infrastructure/services/trash_cleanup_service.rs)

  • Manages automatic cleanup of expired trash items
  • Implements retention policy enforcement
  • Provides scheduled cleanup operations
  • Handles graceful cleanup with resource limits
  • Supports custom cleanup rules

Interfaces Layer

This layer handles external communication, including API endpoints and web interfaces.

API Handlers

File Handler (src/interfaces/api/handlers/file_handler.rs)

  • Handles HTTP requests for file operations
  • Processes file uploads with multipart support
  • Provides file downloads with optional compression
  • Implements CRUD operations for files
  • Manages error responses and status codes

Folder Handler (src/interfaces/api/handlers/folder_handler.rs)

  • Handles HTTP requests for folder operations
  • Processes folder creation and listing
  • Implements CRUD operations for directories
  • Provides folder hierarchy navigation
  • Manages error responses for folder operations

Auth Handler (src/interfaces/api/handlers/auth_handler.rs)

  • Handles authentication-related API endpoints
  • Processes login, logout, and registration
  • Manages session tokens and refresh
  • Implements password reset functionality
  • Provides authentication status information

Share Handler (src/interfaces/api/handlers/share_handler.rs)

  • Handles file and folder sharing endpoints
  • Processes share creation and management
  • Provides access to shared resources
  • Handles permission verification
  • Manages share links and passwords

Trash Handler (src/interfaces/api/handlers/trash_handler.rs)

  • Handles trash-related API endpoints
  • Processes moving items to trash
  • Provides trash listing and filtering
  • Handles restoration from trash
  • Manages permanent deletion operations

Search Handler (src/interfaces/api/handlers/search_handler.rs)

  • Handles search-related API endpoints
  • Processes text search queries
  • Provides filtering and sorting options
  • Handles pagination for search results
  • Manages relevance scoring for results

Recent Handler (src/interfaces/api/handlers/recent_handler.rs)

  • Handles recently accessed files endpoints
  • Provides listing and filtering of recent files
  • Manages user-specific recent history
  • Handles pagination for recent items
  • Provides sorting options for recent files

Favorites Handler (src/interfaces/api/handlers/favorites_handler.rs)

  • Handles user favorites endpoints
  • Processes adding and removing favorites
  • Provides listing and filtering of favorites
  • Manages user-specific favorite collections
  • Handles sorting and organization of favorites

I18n Handler (src/interfaces/api/handlers/i18n_handler.rs)

  • Handles internationalization endpoints
  • Provides language selection and detection
  • Serves translation resources
  • Manages locale settings
  • Handles language preference persistence

Batch Handler (src/interfaces/api/handlers/batch_handler.rs)

  • Handles batch operation endpoints
  • Processes multiple operations in a single request
  • Provides transaction support for batches
  • Handles partial success scenarios
  • Manages comprehensive error reporting

WebDAV Handler (src/interfaces/api/handlers/webdav_handler.rs)

  • Implements WebDAV protocol (RFC 4918) endpoints
  • Handles WebDAV methods (PROPFIND, PROPPATCH, etc.)
  • Provides file system access via HTTP
  • Manages WebDAV properties and locks
  • Supports third-party WebDAV clients

API Routes

Routes (src/interfaces/api/routes.rs)

  • Defines API routes and URL structure
  • Maps endpoints to appropriate handlers
  • Configures middleware for routes
  • Handles versioning for API endpoints
  • Provides documentation integration

Middleware

Auth Middleware (src/interfaces/middleware/auth.rs)

  • Handles authentication for API requests
  • Verifies tokens and sessions
  • Provides user context for handlers
  • Manages authentication errors
  • Supports different authentication methods

Cache Middleware (src/interfaces/middleware/cache.rs)

  • Implements response caching
  • Handles cache headers and validation
  • Provides conditional request processing
  • Manages cache invalidation
  • Optimizes for different content types

Redirect Middleware (src/interfaces/middleware/redirect.rs)

  • Handles HTTP redirects
  • Manages URL normalization
  • Provides permanent and temporary redirects
  • Handles protocol upgrades (HTTP to HTTPS)
  • Supports path-based redirections

Web Interface

Web Module (src/interfaces/web/mod.rs)

  • Coordinates web interface components
  • Manages static file serving
  • Provides web application integration
  • Handles web-specific middleware
  • Supports single-page application routing

Common Layer

This layer provides shared utilities and configurations used across the application.

Config (src/common/config.rs)

  • Manages application configuration
  • Loads settings from environment and files
  • Provides typed configuration access
  • Handles configuration validation
  • Supports different environments (dev, prod)

Errors (src/common/errors.rs)

  • Defines error types and handling
  • Provides consistent error formatting
  • Implements error context and wrapping
  • Handles error translation between layers
  • Supports error categorization and logging

DI (src/common/di.rs)

  • Implements dependency injection
  • Manages service lifecycles
  • Provides application state container
  • Handles service resolution and registration
  • Supports scoped service instances

DB (src/common/db.rs)

  • Manages database connections
  • Provides connection pooling
  • Handles database migrations
  • Implements query helpers
  • Supports transaction management

Cache (src/common/cache.rs)

  • Provides generic caching facilities
  • Implements different cache strategies
  • Handles cache key generation
  • Manages cache invalidation
  • Supports distributed caching

Auth Factory (src/common/auth_factory.rs)

  • Creates authentication components
  • Configures auth providers based on settings
  • Provides factory methods for auth services
  • Handles auth strategy selection
  • Supports multiple authentication methods