feat: initial release

Multi-database management tool built with Tauri + Vue 3.
Supports MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server.
This commit is contained in:
t8y2
2026-04-29 18:09:23 +08:00
commit b2e6dfad7e
156 changed files with 21979 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
export type DatabaseType = "mysql" | "postgres" | "sqlite" | "redis" | "duckdb" | "clickhouse" | "sqlserver" | "mongodb";
export interface ConnectionConfig {
id: string;
name: string;
db_type: DatabaseType;
host: string;
port: number;
username: string;
password: string;
database?: string;
ssh_enabled?: boolean;
ssh_host?: string;
ssh_port?: number;
ssh_user?: string;
ssh_key_path?: string;
}
export interface DatabaseInfo {
name: string;
}
export interface TableInfo {
name: string;
table_type: string;
}
export interface ColumnInfo {
name: string;
data_type: string;
is_nullable: boolean;
column_default: string | null;
is_primary_key: boolean;
extra: string | null;
}
export interface IndexInfo {
name: string;
columns: string[];
is_unique: boolean;
is_primary: boolean;
}
export interface ForeignKeyInfo {
name: string;
column: string;
ref_table: string;
ref_column: string;
}
export interface TriggerInfo {
name: string;
event: string;
timing: string;
}
export interface QueryResult {
columns: string[];
rows: (string | number | boolean | null)[][];
affected_rows: number;
execution_time_ms: number;
truncated?: boolean;
}
export type TreeNodeType =
| "connection" | "database" | "schema" | "table" | "view"
| "group-columns" | "group-indexes" | "group-fkeys" | "group-triggers"
| "column" | "index" | "fkey" | "trigger"
| "redis-db" | "redis-key"
| "mongo-db" | "mongo-collection";
export interface TreeNode {
id: string;
label: string;
type: TreeNodeType;
children?: TreeNode[];
isLoading?: boolean;
isExpanded?: boolean;
connectionId?: string;
database?: string;
schema?: string;
tableName?: string;
meta?: ColumnInfo | IndexInfo | ForeignKeyInfo | TriggerInfo;
}
export interface QueryTab {
id: string;
title: string;
connectionId: string;
database: string;
sql: string;
result?: QueryResult;
isExecuting: boolean;
mode: "data" | "query" | "redis" | "mongo";
tableMeta?: {
schema?: string;
tableName: string;
columns: ColumnInfo[];
primaryKeys: string[];
};
}
+8
View File
@@ -0,0 +1,8 @@
declare module "vue-virtual-scroller" {
import type { DefineComponent } from "vue";
const VueVirtualScroller: any;
export const RecycleScroller: DefineComponent<any, any, any>;
export const DynamicScroller: DefineComponent<any, any, any>;
export const DynamicScrollerItem: DefineComponent<any, any, any>;
export default VueVirtualScroller;
}