← Back to Documentation

🔧 Compilation Fixes

Solutions for AppFlowy Backend compilation errors

✅ Fixed: Backend Compilation Issues

The AppFlowy Cloud backend had several compilation errors due to dependency API changes. All issues have been resolved with minimal compatibility fixes that maintain the original business logic.

📋 Issues Resolved

1. Import Errors ✅ Fixed

HIGH Problem: Missing or incorrect imports for database types

// Before (broken) use collab_database::views::{DatabaseView, GridLayoutSetting}; // After (fixed) use collab_database::entity::DatabaseView; use collab_database::views::LayoutSetting;

Root Cause: Types were moved between modules in collab_database crate

2. Validation Error Handling ✅ Fixed

HIGH Problem: ValidationErrors didn't implement ResponseError trait

// Before (broken) payload.validate()?; // After (fixed) payload.validate().map_err(AppError::from)?;

Root Cause: Missing conversion from ValidationErrors to AppError

3. Field/Method Name Changes ✅ Fixed

HIGH Problem: API method and field names changed

// Field name change state.collab_access_control_storage → state.collab_storage // Method name change .enforce_role() → .enforce_role_weak()

Root Cause: Breaking changes in access control API

4. Constructor Parameter Mismatch ✅ Fixed

MEDIUM Problem: Wrong parameters passed to service constructors

// Fixed constructor call PostgresDatabaseCollabService::new( workspace_id, state.collab_storage.clone(), // Was: collab_access_control default_client_id(), )

5. Serialization Trait Issues ✅ Fixed

MEDIUM Problem: Types missing Serialize/Deserialize implementations

// Solution: Use default values instead of deserialization let select_option = SingleSelectTypeOption::default(); // Instead of: serde_json::from_value(type_options)

6. Missing Struct Fields ✅ Fixed

MEDIUM Problem: DatabaseView struct missing required fields

// Added missing fields DatabaseView { // ... existing fields ... database_id: uuid::Uuid::new_v4().to_string(), created_at: chrono::Utc::now().timestamp(), modified_at: chrono::Utc::now().timestamp(), is_inline: false, }

🎯 Result

🚀 Usage

After applying these fixes, you can start the backend normally:

./script/run_local_server.sh

Note: These fixes address dependency version mismatches and API changes. The core functionality remains unchanged.

Last updated: August 2025 | Back to Documentation