mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
* feat: implement folder indexer * feat: sqlite search views using fts5 * feat: add view indexing to user manager * feat: implement folder indexer * feat: add sqlite search documents * feat: add document indexing to user manager * feat: add document indexing to folder indexer * chore: update collab rev * feat: search frontend integration * refactor: search index * test: add event test * chore: fix ci * feat: initial command palette overlay impl (#4619) * chore: test search engine * chore: initial structure * chore: replace old search request * chore: enable log for lib-dispatch * chore: move search manager to core * feat: move traits and responsibility to search crate * feat: move search to search crate * feat: replace sqlite with tantivy * feat: deserialize tantivy documents * chore: fixes after rebase * chore: clean code * feat: fetch and sort results * fix: code review + cleaning * feat: support custom icons * feat: support view layout icons * feat: rename bloc and fix indexing * fix: prettify dialog * feat: score results * chore: update collab rev * feat: add recent view history to command palette * test: add integration_tests * fix: clippy changes * fix: focus traversal in cmd palette * fix: remove file after merging main * chore: code review and panic-safe * feat: index all views if index does not exist * chore: improve logic with conditional * chore: add is_empty check * chore: abstract logic from folder manager init * chore: update collab rev * chore: code review * chore: fixes after merge + update lock file * chore: revert cargo lock * fix: set icon type when removing icon * fix: code review + dependency inversion * fix: remove icon fix for not persisting icon type * test: simple tests manipulating views * test: create 100 views * fix: tauri build * chore: create 1000 views * chore: create util methods * chore: test * chore: test * chore: remove logs * chore: fix build.rs * chore: export models * chore: enable clear cache on Rust-CI * fix: navigate to newly created views * fix: force disable setting workspace listener on rebuilds * fix: remove late final * fix: missing returns * fix: localization and minor fixes * test: add index assert to large test * fix: missing section param after merging main * chore: try fix unzip file error * chore: lower the test * feat: show hint when result is in trash * feat: one index_writer per index * fix: minor changes after merge * fix: make create_log_filter public after merge * chore: fix test * chore: fix test * chore: flutter analyze * chore: flutter analyze * chore: fix tauri build --------- Co-authored-by: nathan <nathan@appflowy.io> Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io> Co-authored-by: Nathan.fooo <86001920+appflowy@users.noreply.github.com>
287 lines
6.2 KiB
Rust
287 lines
6.2 KiB
Rust
use serde_repr::*;
|
|
use thiserror::Error;
|
|
|
|
use flowy_derive::ProtoBuf_Enum;
|
|
|
|
#[derive(
|
|
Debug, Default, Clone, PartialEq, Eq, Error, Serialize_repr, Deserialize_repr, ProtoBuf_Enum,
|
|
)]
|
|
#[repr(u8)]
|
|
pub enum ErrorCode {
|
|
#[default]
|
|
#[error("Internal error")]
|
|
Internal = 0,
|
|
|
|
#[error("Unauthorized user")]
|
|
UserUnauthorized = 2,
|
|
|
|
#[error("Record not found")]
|
|
RecordNotFound = 3,
|
|
|
|
#[error("User id is empty")]
|
|
UserIdIsEmpty = 4,
|
|
|
|
#[error("Workspace name can not be empty or whitespace")]
|
|
WorkspaceNameInvalid = 5,
|
|
|
|
#[error("Workspace desc is invalid")]
|
|
WorkspaceDescTooLong = 8,
|
|
|
|
#[error("Workspace description too long")]
|
|
WorkspaceNameTooLong = 9,
|
|
|
|
#[error("Can't load the workspace data")]
|
|
WorkspaceInitializeError = 6,
|
|
|
|
#[error("View name can not be empty or whitespace")]
|
|
ViewNameInvalid = 12,
|
|
|
|
#[error("Thumbnail of the view is invalid")]
|
|
ViewThumbnailInvalid = 13,
|
|
|
|
#[error("View id can not be empty or whitespace")]
|
|
ViewIdIsInvalid = 14,
|
|
|
|
#[error("View data is invalid")]
|
|
ViewDataInvalid = 16,
|
|
|
|
#[error("View name too long")]
|
|
ViewNameTooLong = 17,
|
|
|
|
#[error("Email can not be empty or whitespace")]
|
|
EmailIsEmpty = 19,
|
|
|
|
#[error("Email format is not valid")]
|
|
EmailFormatInvalid = 20,
|
|
|
|
#[error("Email already exists")]
|
|
EmailAlreadyExists = 21,
|
|
|
|
#[error("Password can not be empty or whitespace")]
|
|
PasswordIsEmpty = 22,
|
|
|
|
#[error("Password format too long")]
|
|
PasswordTooLong = 23,
|
|
|
|
#[error("Password contains forbidden characters.")]
|
|
PasswordContainsForbidCharacters = 24,
|
|
|
|
#[error(
|
|
"Password should contain a minimum of 6 characters with 1 special 1 letter and 1 numeric"
|
|
)]
|
|
PasswordFormatInvalid = 25,
|
|
|
|
#[error("Password not match")]
|
|
PasswordNotMatch = 26,
|
|
|
|
#[error("User name is too long")]
|
|
UserNameTooLong = 27,
|
|
|
|
#[error("User name contain forbidden characters")]
|
|
UserNameContainForbiddenCharacters = 28,
|
|
|
|
#[error("User name can not be empty or whitespace")]
|
|
UserNameIsEmpty = 29,
|
|
|
|
#[error("user id is empty or whitespace")]
|
|
UserIdInvalid = 30,
|
|
|
|
#[error("Text is too long")]
|
|
TextTooLong = 32,
|
|
|
|
#[error("Database id is empty")]
|
|
DatabaseIdIsEmpty = 33,
|
|
|
|
#[error("Grid view id is empty")]
|
|
DatabaseViewIdIsEmpty = 34,
|
|
|
|
#[error("Grid block id is empty")]
|
|
BlockIdIsEmpty = 35,
|
|
|
|
#[error("Row id is empty")]
|
|
RowIdIsEmpty = 36,
|
|
|
|
#[error("Select option id is empty")]
|
|
OptionIdIsEmpty = 37,
|
|
|
|
#[error("Field id is empty")]
|
|
FieldIdIsEmpty = 38,
|
|
|
|
#[error("Field doesn't exist")]
|
|
FieldDoesNotExist = 39,
|
|
|
|
#[error("The name of the option should not be empty")]
|
|
SelectOptionNameIsEmpty = 40,
|
|
|
|
#[error("Field not exists")]
|
|
FieldNotExists = 41,
|
|
|
|
#[error("The operation in this field is invalid")]
|
|
FieldInvalidOperation = 42,
|
|
|
|
#[error("Filter id is empty")]
|
|
FilterIdIsEmpty = 43,
|
|
|
|
#[error("Field is not exist")]
|
|
FieldRecordNotFound = 44,
|
|
|
|
#[error("Field's type-option data should not be empty")]
|
|
TypeOptionDataIsEmpty = 45,
|
|
|
|
#[error("Group id is empty")]
|
|
GroupIdIsEmpty = 46,
|
|
|
|
#[error("Invalid date time format")]
|
|
InvalidDateTimeFormat = 48,
|
|
|
|
#[error("Invalid params")]
|
|
InvalidParams = 49,
|
|
|
|
#[error("Serde")]
|
|
Serde = 50,
|
|
|
|
#[error("Protobuf serde")]
|
|
ProtobufSerde = 51,
|
|
|
|
#[error("Out of bounds")]
|
|
OutOfBounds = 52,
|
|
|
|
#[error("Sort id is empty")]
|
|
SortIdIsEmpty = 53,
|
|
|
|
#[error("Connect refused")]
|
|
ConnectRefused = 54,
|
|
|
|
#[error("Connection timeout")]
|
|
ConnectTimeout = 55,
|
|
|
|
#[error("Connection closed")]
|
|
ConnectClose = 56,
|
|
|
|
#[error("Connection canceled")]
|
|
ConnectCancel = 57,
|
|
|
|
#[error("Sql error")]
|
|
SqlError = 58,
|
|
|
|
#[error("Http error")]
|
|
HttpError = 59,
|
|
|
|
#[error("The content should not be empty")]
|
|
UnexpectedEmpty = 60,
|
|
|
|
#[error("Only the date type can be used in calendar")]
|
|
UnexpectedCalendarFieldType = 61,
|
|
|
|
#[error("Document Data Invalid")]
|
|
DocumentDataInvalid = 62,
|
|
|
|
#[error("Unsupported auth type")]
|
|
UnsupportedAuthType = 63,
|
|
|
|
#[error("Invalid auth configuration")]
|
|
InvalidAuthConfig = 64,
|
|
|
|
#[error("Missing auth field")]
|
|
MissingAuthField = 65,
|
|
|
|
#[error("Rocksdb IO error")]
|
|
RocksdbIOError = 66,
|
|
|
|
#[error("Document id is empty")]
|
|
DocumentIdIsEmpty = 67,
|
|
|
|
#[error("Apply actions is empty")]
|
|
ApplyActionsIsEmpty = 68,
|
|
|
|
#[error("Connect postgres database failed")]
|
|
PgConnectError = 69,
|
|
|
|
#[error("Postgres database error")]
|
|
PgDatabaseError = 70,
|
|
|
|
#[error("Postgres transaction error")]
|
|
PgTransactionError = 71,
|
|
|
|
#[error("Enable data sync")]
|
|
DataSyncRequired = 72,
|
|
|
|
#[error("Conflict")]
|
|
Conflict = 73,
|
|
|
|
#[error("Invalid decryption secret")]
|
|
InvalidEncryptSecret = 74,
|
|
|
|
#[error("It appears that the collaboration object's data has not been fully synchronized")]
|
|
CollabDataNotSync = 75,
|
|
|
|
#[error("It appears that the workspace data has not been fully synchronized")]
|
|
WorkspaceDataNotSync = 76,
|
|
|
|
#[error("Excess storage limited")]
|
|
ExcessStorageLimited = 77,
|
|
|
|
#[error("Parse url failed")]
|
|
InvalidURL = 78,
|
|
|
|
#[error("Require Email Confirmation, Sign in after email confirmation")]
|
|
AwaitingEmailConfirmation = 79,
|
|
|
|
#[error("Text id is empty")]
|
|
TextIdIsEmpty = 80,
|
|
|
|
#[error("Record already exists")]
|
|
RecordAlreadyExists = 81,
|
|
|
|
#[error("Missing payload")]
|
|
MissingPayload = 82,
|
|
|
|
#[error("Permission denied")]
|
|
NotEnoughPermissions = 83,
|
|
|
|
#[error("Internal server error")]
|
|
InternalServerError = 84,
|
|
|
|
#[error("Not support yet")]
|
|
NotSupportYet = 85,
|
|
|
|
#[error("rocksdb corruption")]
|
|
RocksdbCorruption = 86,
|
|
|
|
#[error("rocksdb internal error")]
|
|
RocksdbInternal = 87,
|
|
|
|
#[error("Local version not support")]
|
|
LocalVersionNotSupport = 88,
|
|
|
|
#[error("AppFlowy data folder import error")]
|
|
AppFlowyDataFolderImportError = 89,
|
|
|
|
#[error("Cloud request payload too large")]
|
|
CloudRequestPayloadTooLarge = 90,
|
|
|
|
#[error("Workspace limit exceeded")]
|
|
WorkspaceLimitExceeded = 91,
|
|
|
|
#[error("Workspace member limit exceeded")]
|
|
WorkspaceMemberLimitExceeded = 92,
|
|
|
|
#[error("IndexWriter failed to commit")]
|
|
IndexWriterFailedCommit = 93,
|
|
|
|
#[error("Failed to open Index directory")]
|
|
FailedToOpenIndexDir = 94,
|
|
|
|
#[error("Failed to parse query")]
|
|
FailedToParseQuery = 95,
|
|
|
|
#[error("FolderIndexManager or its dependencies are unavailable")]
|
|
FolderIndexManagerUnavailable = 96,
|
|
}
|
|
|
|
impl ErrorCode {
|
|
pub fn value(&self) -> i32 {
|
|
self.clone() as i32
|
|
}
|
|
}
|