mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-30 00:19:35 +00:00
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:
@@ -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[];
|
||||
};
|
||||
}
|
||||
Vendored
+8
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user