From 9ea057e9436fb03a0fa6baadd936345704087720 Mon Sep 17 00:00:00 2001
From: haex
Date: Tue, 21 Oct 2025 16:29:13 +0200
Subject: [PATCH] fixed drizzle rust logic
---
src-tauri/src/database/core.rs | 28 +++--
src-tauri/src/database/mod.rs | 9 ++
src-tauri/src/extension/core/manager.rs | 110 +++++++++---------
src-tauri/src/extension/database/executor.rs | 56 ++++-----
src-tauri/src/lib.rs | 5 +-
src/components/haex/desktop/index.vue | 1 +
.../haex/extension/marketplace-card.vue | 16 ++-
src/components/haex/system/marketplace.vue | 15 +--
src/components/haex/system/settings.vue | 8 +-
src/components/haex/window/index.vue | 3 +-
src/components/haex/workspace/card.vue | 4 +-
src/stores/desktop/workspace.ts | 1 +
src/stores/vault/index.ts | 7 +-
13 files changed, 151 insertions(+), 112 deletions(-)
diff --git a/src-tauri/src/database/core.rs b/src-tauri/src/database/core.rs
index 2125d25..6f13e1d 100644
--- a/src-tauri/src/database/core.rs
+++ b/src-tauri/src/database/core.rs
@@ -164,9 +164,11 @@ pub fn execute(
if has_returning {
// Use prepare + query for RETURNING statements
- let mut stmt = conn.prepare(&sql).map_err(|e| DatabaseError::PrepareError {
- reason: e.to_string(),
- })?;
+ let mut stmt = conn
+ .prepare(&sql)
+ .map_err(|e| DatabaseError::PrepareError {
+ reason: e.to_string(),
+ })?;
let num_columns = stmt.column_count();
let mut rows = stmt
@@ -183,11 +185,11 @@ pub fn execute(
let mut row_values: Vec = Vec::with_capacity(num_columns);
for i in 0..num_columns {
- let value_ref = row.get_ref(i).map_err(|e| {
- DatabaseError::RowProcessingError {
- reason: format!("Failed to get column {}: {}", i, e),
- }
- })?;
+ let value_ref =
+ row.get_ref(i)
+ .map_err(|e| DatabaseError::RowProcessingError {
+ reason: format!("Failed to get column {}: {}", i, e),
+ })?;
let json_val = convert_value_ref_to_json(value_ref)?;
row_values.push(json_val);
@@ -274,6 +276,16 @@ pub fn select(
})
}
+pub fn select_with_crdt(
+ sql: String,
+ params: Vec,
+ connection: &DbConnection,
+) -> Result>, DatabaseError> {
+ with_connection(&connection, |conn| {
+ SqlExecutor::select_internal(conn, &sql, ¶ms)
+ })
+}
+
/// Konvertiert rusqlite ValueRef zu JSON
pub fn convert_value_ref_to_json(value_ref: ValueRef) -> Result {
let json_val = match value_ref {
diff --git a/src-tauri/src/database/mod.rs b/src-tauri/src/database/mod.rs
index 0b0e470..bb10942 100644
--- a/src-tauri/src/database/mod.rs
+++ b/src-tauri/src/database/mod.rs
@@ -43,6 +43,15 @@ pub fn sql_execute(
core::execute(sql, params, &state.db)
}
+#[tauri::command]
+pub fn sql_select_with_crdt(
+ sql: String,
+ params: Vec,
+ state: State<'_, AppState>,
+) -> Result>, DatabaseError> {
+ core::select_with_crdt(sql, params, &state.db)
+}
+
#[tauri::command]
pub fn sql_execute_with_crdt(
sql: String,
diff --git a/src-tauri/src/extension/core/manager.rs b/src-tauri/src/extension/core/manager.rs
index 4eacf99..0c5d76b 100644
--- a/src-tauri/src/extension/core/manager.rs
+++ b/src-tauri/src/extension/core/manager.rs
@@ -167,7 +167,6 @@ impl ExtensionManager {
Ok(specific_extension_dir)
}
-
pub fn add_production_extension(&self, extension: Extension) -> Result<(), ExtensionError> {
if extension.id.is_empty() {
return Err(ExtensionError::ValidationError {
@@ -223,11 +222,12 @@ impl ExtensionManager {
name: &str,
) -> Result
@@ -67,7 +67,9 @@
>
{{ t('installed') }}
- {{ t('installedVersion', { version: extension.installedVersion }) }}
+ {{
+ t('installedVersion', { version: extension.installedVersion })
+ }}
-
+
@@ -14,14 +14,14 @@
@@ -34,13 +34,14 @@
icon="i-heroicons-arrow-up-tray"
color="neutral"
@click="onSelectExtensionAsync"
+ block
/>
@@ -65,7 +66,7 @@
-
-
+
+
{{ t('language') }}
@@ -34,6 +32,8 @@
@change="onUpdateDeviceNameAsync"
/>
+
+
diff --git a/src/components/haex/window/index.vue b/src/components/haex/window/index.vue
index ef9a64c..9fc00b1 100644
--- a/src/components/haex/window/index.vue
+++ b/src/components/haex/window/index.vue
@@ -5,7 +5,7 @@
:class="[
'absolute bg-default/80 backdrop-blur-xl rounded-xl shadow-2xl overflow-hidden isolate',
'border border-gray-200 dark:border-gray-700 transition-all ease-out duration-600 ',
- 'flex flex-col',
+ 'flex flex-col @container',
{ 'select-none': isResizingOrDragging },
isActive ? 'z-50' : 'z-10',
]"
@@ -208,6 +208,7 @@ useDrag(
}
}
+ globalThis.getSelection()?.removeAllRanges()
emit('positionChanged', x.value, y.value)
emit('sizeChanged', width.value, height.value)
emit('dragEnd')
diff --git a/src/components/haex/workspace/card.vue b/src/components/haex/workspace/card.vue
index bea0dc0..4d92abe 100644
--- a/src/components/haex/workspace/card.vue
+++ b/src/components/haex/workspace/card.vue
@@ -2,7 +2,7 @@
()
const workspaceStore = useWorkspaceStore()
-const { currentWorkspaceIndex } = storeToRefs(workspaceStore)
+const { currentWorkspace } = storeToRefs(workspaceStore)
diff --git a/src/stores/desktop/workspace.ts b/src/stores/desktop/workspace.ts
index fc0f090..8abbf99 100644
--- a/src/stores/desktop/workspace.ts
+++ b/src/stores/desktop/workspace.ts
@@ -38,6 +38,7 @@ export const useWorkspaceStore = defineStore('workspaceStore', () => {
.from(haexWorkspaces)
.orderBy(asc(haexWorkspaces.position))
+ console.log('loadWorkspacesAsync', items)
workspaces.value = items
// Create default workspace if none exist
diff --git a/src/stores/vault/index.ts b/src/stores/vault/index.ts
index e387ad1..37ddd7f 100644
--- a/src/stores/vault/index.ts
+++ b/src/stores/vault/index.ts
@@ -142,7 +142,10 @@ const drizzleCallback = (async (
if (isSelectQuery(sql)) {
// SELECT statements
- rows = await invoke('sql_select', { sql, params }).catch((e) => {
+ rows = await invoke('sql_select_with_crdt', {
+ sql,
+ params,
+ }).catch((e) => {
console.error('SQL select Error:', e, sql, params)
return []
})
@@ -164,9 +167,9 @@ const drizzleCallback = (async (
console.error('SQL execute with CRDT Error:', e, sql, params, rows)
return []
})
- return { rows: undefined }
}
+ console.log('drizzle found', rows)
if (method === 'get') {
return { rows: rows.length > 0 ? [rows[0]] : [] }
} else {