mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-11-12 00:19:45 +00:00
chore: clippy
This commit is contained in:
parent
edc5710e32
commit
3a05a4851f
@ -0,0 +1,3 @@
|
|||||||
|
-- This file should undo anything in `up.sql`
|
||||||
|
ALTER TABLE user_workspace_table
|
||||||
|
DROP COLUMN auth_type;
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
-- Your SQL goes here
|
||||||
|
ALTER TABLE user_workspace_table
|
||||||
|
ADD COLUMN auth_type INTEGER NOT NULL DEFAULT 1;
|
||||||
|
|
||||||
|
-- 2. Back‑fill from user_table.auth_type
|
||||||
|
UPDATE user_workspace_table
|
||||||
|
SET auth_type = (SELECT ut.auth_type
|
||||||
|
FROM user_table ut
|
||||||
|
WHERE ut.id = CAST(user_workspace_table.uid AS TEXT))
|
||||||
|
WHERE EXISTS (SELECT 1
|
||||||
|
FROM user_table ut
|
||||||
|
WHERE ut.id = CAST(user_workspace_table.uid AS TEXT));
|
||||||
|
|
||||||
|
ALTER TABLE user_table DROP COLUMN stability_ai_key;
|
||||||
|
ALTER TABLE user_table DROP COLUMN openai_key;
|
||||||
|
ALTER TABLE user_table DROP COLUMN workspace;
|
||||||
|
ALTER TABLE user_table DROP COLUMN encryption_type;
|
||||||
|
ALTER TABLE user_table DROP COLUMN ai_model;
|
||||||
|
|
||||||
|
CREATE TABLE workspace_setting_table (
|
||||||
|
id TEXT PRIMARY KEY NOT NULL ,
|
||||||
|
disable_search_indexing BOOLEAN DEFAULT FALSE NOT NULL ,
|
||||||
|
ai_model TEXT DEFAULT "" NOT NULL
|
||||||
|
);
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
use client_api::entity::AFWorkspaceSettings;
|
||||||
|
use flowy_error::FlowyError;
|
||||||
|
use flowy_sqlite::schema::workspace_setting_table;
|
||||||
|
use flowy_sqlite::schema::workspace_setting_table::dsl;
|
||||||
|
use flowy_sqlite::DBConnection;
|
||||||
|
use flowy_sqlite::{query_dsl::*, ExpressionMethods};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
#[derive(Clone, Default, Queryable, Identifiable, Insertable)]
|
||||||
|
#[diesel(table_name = workspace_setting_table)]
|
||||||
|
pub struct WorkspaceSettingsTable {
|
||||||
|
pub id: String,
|
||||||
|
pub disable_search_indexing: bool,
|
||||||
|
pub ai_model: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(AsChangeset, Identifiable, Default, Debug)]
|
||||||
|
#[diesel(table_name = workspace_setting_table)]
|
||||||
|
pub struct WorkspaceSettingsChangeset {
|
||||||
|
pub id: String,
|
||||||
|
pub disable_search_indexing: Option<bool>,
|
||||||
|
pub ai_model: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WorkspaceSettingsTable {
|
||||||
|
pub fn from_workspace_settings(workspace_id: &Uuid, settings: &AFWorkspaceSettings) -> Self {
|
||||||
|
Self {
|
||||||
|
id: workspace_id.to_string(),
|
||||||
|
disable_search_indexing: settings.disable_search_indexing,
|
||||||
|
ai_model: settings.ai_model.clone(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn update_workspace_setting(
|
||||||
|
conn: &mut DBConnection,
|
||||||
|
changeset: WorkspaceSettingsChangeset,
|
||||||
|
) -> Result<(), FlowyError> {
|
||||||
|
diesel::update(dsl::workspace_setting_table)
|
||||||
|
.filter(workspace_setting_table::id.eq(changeset.id.clone()))
|
||||||
|
.set(changeset)
|
||||||
|
.execute(conn)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Upserts a workspace setting into the database.
|
||||||
|
pub fn upsert_workspace_setting(
|
||||||
|
conn: &mut DBConnection,
|
||||||
|
settings: WorkspaceSettingsTable,
|
||||||
|
) -> Result<(), FlowyError> {
|
||||||
|
diesel::insert_into(dsl::workspace_setting_table)
|
||||||
|
.values(settings.clone())
|
||||||
|
.on_conflict(workspace_setting_table::id)
|
||||||
|
.do_update()
|
||||||
|
.set((
|
||||||
|
workspace_setting_table::disable_search_indexing.eq(settings.disable_search_indexing),
|
||||||
|
workspace_setting_table::ai_model.eq(settings.ai_model),
|
||||||
|
))
|
||||||
|
.execute(conn)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Selects a workspace setting by id from the database.
|
||||||
|
pub fn select_workspace_setting(
|
||||||
|
conn: &mut DBConnection,
|
||||||
|
id: &str,
|
||||||
|
) -> Result<WorkspaceSettingsTable, FlowyError> {
|
||||||
|
let setting = dsl::workspace_setting_table
|
||||||
|
.filter(workspace_setting_table::id.eq(id))
|
||||||
|
.first::<WorkspaceSettingsTable>(conn)?;
|
||||||
|
Ok(setting)
|
||||||
|
}
|
||||||
@ -5,17 +5,6 @@ use client_api::entity::billing_dto::{SubscriptionPlan, WorkspaceUsageAndLimit};
|
|||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use collab_integrate::CollabKVDB;
|
|
||||||
use flowy_error::{ErrorCode, FlowyError, FlowyResult};
|
|
||||||
use flowy_folder_pub::entities::{ImportFrom, ImportedCollabData, ImportedFolderData};
|
|
||||||
use flowy_sqlite::schema::user_workspace_table;
|
|
||||||
use flowy_sqlite::{query_dsl::*, DBConnection, ExpressionMethods};
|
|
||||||
use flowy_user_pub::entities::{
|
|
||||||
AuthType, Role, UserWorkspace, WorkspaceInvitation, WorkspaceInvitationStatus, WorkspaceMember,
|
|
||||||
};
|
|
||||||
use tracing::{error, info, instrument, trace, warn};
|
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use crate::entities::{
|
use crate::entities::{
|
||||||
RepeatedUserWorkspacePB, SubscribeWorkspacePB, SuccessWorkspaceSubscriptionPB,
|
RepeatedUserWorkspacePB, SubscribeWorkspacePB, SuccessWorkspaceSubscriptionPB,
|
||||||
UpdateUserWorkspaceSettingPB, UserWorkspacePB, WorkspaceSettingsPB, WorkspaceSubscriptionInfoPB,
|
UpdateUserWorkspaceSettingPB, UserWorkspacePB, WorkspaceSettingsPB, WorkspaceSubscriptionInfoPB,
|
||||||
@ -38,7 +27,18 @@ use crate::services::sqlite_sql::workspace_sql::{
|
|||||||
UserWorkspaceChangeset, UserWorkspaceTable,
|
UserWorkspaceChangeset, UserWorkspaceTable,
|
||||||
};
|
};
|
||||||
use crate::user_manager::UserManager;
|
use crate::user_manager::UserManager;
|
||||||
|
use collab_integrate::CollabKVDB;
|
||||||
|
use flowy_error::{ErrorCode, FlowyError, FlowyResult};
|
||||||
|
use flowy_folder_pub::entities::{ImportFrom, ImportedCollabData, ImportedFolderData};
|
||||||
|
use flowy_sqlite::schema::user_workspace_table;
|
||||||
|
use flowy_sqlite::{query_dsl::*, ConnectionPool, DBConnection, ExpressionMethods};
|
||||||
|
use flowy_user_pub::cloud::UserCloudServiceProvider;
|
||||||
|
use flowy_user_pub::entities::{
|
||||||
|
AuthType, Role, UserWorkspace, WorkspaceInvitation, WorkspaceInvitationStatus, WorkspaceMember,
|
||||||
|
};
|
||||||
use flowy_user_pub::session::Session;
|
use flowy_user_pub::session::Session;
|
||||||
|
use tracing::{error, info, instrument, trace, warn};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
impl UserManager {
|
impl UserManager {
|
||||||
/// Import appflowy data from the given path.
|
/// Import appflowy data from the given path.
|
||||||
@ -561,51 +561,29 @@ impl UserManager {
|
|||||||
Ok(workspace_settings) => {
|
Ok(workspace_settings) => {
|
||||||
trace!("workspace settings found in local db");
|
trace!("workspace settings found in local db");
|
||||||
let pb = WorkspaceSettingsPB::from(workspace_settings);
|
let pb = WorkspaceSettingsPB::from(workspace_settings);
|
||||||
|
|
||||||
let old_pb = pb.clone();
|
let old_pb = pb.clone();
|
||||||
let workspace_id = *workspace_id;
|
let workspace_id = *workspace_id;
|
||||||
|
|
||||||
|
// Spawn a task to sync remote settings using the helper
|
||||||
let pool = self.db_pool(uid)?;
|
let pool = self.db_pool(uid)?;
|
||||||
let cloud_service = self.cloud_service.clone();
|
let cloud_service = self.cloud_service.clone();
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let cloud_service = cloud_service.get_user_service()?;
|
let _ = sync_workspace_settings(cloud_service, workspace_id, old_pb, uid, pool).await;
|
||||||
let settings = cloud_service.get_workspace_setting(&workspace_id).await?;
|
|
||||||
let new_pb = WorkspaceSettingsPB::from(&settings);
|
|
||||||
if new_pb != old_pb {
|
|
||||||
trace!("workspace settings updated");
|
|
||||||
send_notification(
|
|
||||||
&uid.to_string(),
|
|
||||||
UserNotification::DidUpdateWorkspaceSetting,
|
|
||||||
)
|
|
||||||
.payload(new_pb)
|
|
||||||
.send();
|
|
||||||
|
|
||||||
if let Ok(mut conn) = pool.get() {
|
|
||||||
upsert_workspace_setting(
|
|
||||||
&mut conn,
|
|
||||||
WorkspaceSettingsTable::from_workspace_settings(&workspace_id, &settings),
|
|
||||||
)?;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok::<_, FlowyError>(())
|
|
||||||
});
|
});
|
||||||
Ok(pb)
|
Ok(pb)
|
||||||
},
|
},
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
if err.is_record_not_found() {
|
if err.is_record_not_found() {
|
||||||
trace!("No workspace settings found, fetch from remote");
|
trace!("No workspace settings found, fetch from remote");
|
||||||
let settings = self
|
let service = self.cloud_service.get_user_service()?;
|
||||||
.cloud_service
|
let settings = service.get_workspace_setting(&workspace_id).await?;
|
||||||
.get_user_service()?
|
|
||||||
.get_workspace_setting(&workspace_id)
|
|
||||||
.await?;
|
|
||||||
let pb = WorkspaceSettingsPB::from(&settings);
|
let pb = WorkspaceSettingsPB::from(&settings);
|
||||||
let mut conn = self.db_connection(uid)?;
|
let mut conn = self.db_connection(uid)?;
|
||||||
upsert_workspace_setting(
|
upsert_workspace_setting(
|
||||||
&mut conn,
|
&mut conn,
|
||||||
WorkspaceSettingsTable::from_workspace_settings(&workspace_id, &settings),
|
WorkspaceSettingsTable::from_workspace_settings(&workspace_id, &settings),
|
||||||
)?;
|
)?;
|
||||||
Ok::<_, FlowyError>(pb.clone())
|
Ok(pb)
|
||||||
} else {
|
} else {
|
||||||
Err(err)
|
Err(err)
|
||||||
}
|
}
|
||||||
@ -777,3 +755,31 @@ fn is_older_than_n_minutes(updated_at: NaiveDateTime, minutes: i64) -> bool {
|
|||||||
None => false,
|
None => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn sync_workspace_settings(
|
||||||
|
cloud_service: Arc<dyn UserCloudServiceProvider>,
|
||||||
|
workspace_id: Uuid,
|
||||||
|
old_pb: WorkspaceSettingsPB,
|
||||||
|
uid: i64,
|
||||||
|
pool: Arc<ConnectionPool>,
|
||||||
|
) -> FlowyResult<()> {
|
||||||
|
let service = cloud_service.get_user_service()?;
|
||||||
|
let settings = service.get_workspace_setting(&workspace_id).await?;
|
||||||
|
let new_pb = WorkspaceSettingsPB::from(&settings);
|
||||||
|
if new_pb != old_pb {
|
||||||
|
trace!("workspace settings updated");
|
||||||
|
send_notification(
|
||||||
|
&uid.to_string(),
|
||||||
|
UserNotification::DidUpdateWorkspaceSetting,
|
||||||
|
)
|
||||||
|
.payload(new_pb)
|
||||||
|
.send();
|
||||||
|
if let Ok(mut conn) = pool.get() {
|
||||||
|
upsert_workspace_setting(
|
||||||
|
&mut conn,
|
||||||
|
WorkspaceSettingsTable::from_workspace_settings(&workspace_id, &settings),
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user