feat(group): Added group management functionality

- Added database interaction logic, supported inserting new group data, and integrated the Tauri SQL plugin for local data storage
- Added a floating button on the nodes page to redirect to the addGroup page
- Modified the app icon and title to improve the user experience
- Adjusted the Tauri configuration file, optimized window settings, and app identifiers
This commit is contained in:
2025-10-13 17:29:37 +08:00
parent 2a18061700
commit 7a20655557
17 changed files with 221 additions and 33 deletions

View File

@@ -22,6 +22,4 @@ tauri = { version = "2", features = [] }
tauri-plugin-opener = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sea-orm = { version = "2.0.0-rc", features = [ "sqlx-sqlite", "runtime-tokio-native-tls", "macros" ] }
once_cell = "1.21.3"
tauri-plugin-sql = { version = "2", features = ["sqlite"] }

View File

@@ -2,9 +2,13 @@
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["main"],
"windows": [
"main"
],
"permissions": [
"core:default",
"opener:default"
"opener:default",
"sql:default",
"sql:allow-execute"
]
}
}

View File

@@ -0,0 +1 @@

14
src-tauri/src/group.rs Normal file
View File

@@ -0,0 +1,14 @@
#[tauri::command]
pub fn add_group(
group_name: String,
group_subscribe_url: Option<String>,
group_arguments: Option<String>,
) {
let message = match (&group_subscribe_url, &group_arguments) {
(Some(url), Some(args)) => format!("add_group: {} {} {}", group_name, url, args),
(Some(url), None) => format!("add_group: {} {}", group_name, url),
(None, Some(args)) => format!("add_group: {} {}", group_name, args),
(None, None) => format!("add_group: {}", group_name),
};
println!("{}", message);
}

View File

@@ -1,13 +1,29 @@
// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
use crate::group::add_group;
use crate::spary::spary_switch;
use tauri_plugin_sql::{Migration, MigrationKind};
mod group;
mod spary;
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
let migrations = vec![
Migration {
version: 1,
description: "create_initial_tables",
sql: "CREATE TABLE `group`(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(60) NOT NULL,url TEXT NULL, arguments JSON NOT NULL default '{}', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP)",
kind: MigrationKind::Up,
}
];
tauri::Builder::default()
.plugin(
tauri_plugin_sql::Builder::default()
.add_migrations("sqlite:spary.db", migrations)
.build(),
)
.plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![spary_switch])
.invoke_handler(tauri::generate_handler![spary_switch, add_group])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

View File

@@ -1,14 +1,7 @@
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use once_cell::sync::OnceCell;
use sea_orm::DatabaseConnection;
mod entity;
static DB: OnceCell<DatabaseConnection> = OnceCell::new();
fn main() {
spary_lib::run()
}

View File

@@ -1,5 +1,4 @@
#[tauri::command]
pub fn spary_switch(status:bool) {
pub fn spary_switch(status: bool) {
println!("Spraying {status}");
}

View File

@@ -2,7 +2,7 @@
"$schema": "https://schema.tauri.app/config/2",
"productName": "spary",
"version": "0.1.0",
"identifier": "com.tain.spary",
"identifier": "one.tain.spary",
"build": {
"beforeDevCommand": "yarn dev",
"devUrl": "http://localhost:1420",
@@ -15,11 +15,6 @@
"title": "spary",
"width": 800,
"height": 600
},
{
"title": "addGroup",
"width": 800,
"height": 600
}
],
"security": {