Fixes #41. MySQL columns now decode by their declared type instead of a blind try_get chain, so every non-string type (integers, DECIMAL, BIT, YEAR, DATE/TIME/DATETIME/TIMESTAMP) renders its value instead of NULL. MySQL restore runs in-process over the sqlx driver (no bundled MariaDB client, so MySQL 8 caching_sha2_password works) and the Clean toggle is implemented. .sql files can be opened with Gridline from the OS file manager. Verified: cargo test --lib 442 passed / 0 failed; bun run test 133 files / 1151 tests exit 0; tsc clean; both live MySQL 8 integration tests pass with the bundled CLI hidden.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { FileCode2, X } from "lucide-react";
|
||||
import { useUiStore } from "../../stores/uiStore";
|
||||
|
||||
/**
|
||||
* Shown when a `.sql` file was opened from the OS but no database connection is
|
||||
* active. The file is already loaded in memory; picking a connection in the
|
||||
* Home screen delivers it (see `useSqlFileOpen`).
|
||||
*/
|
||||
export function PendingSqlFileBanner() {
|
||||
const pending = useUiStore((s) => s.pendingSqlFile);
|
||||
const clear = useUiStore((s) => s.clearPendingSqlFile);
|
||||
if (!pending) return null;
|
||||
|
||||
return (
|
||||
<div
|
||||
role="status"
|
||||
className="flex items-center gap-2 border-b border-border bg-surface-raised px-3 py-1.5 text-xs text-text-muted"
|
||||
>
|
||||
<FileCode2 className="h-3.5 w-3.5 shrink-0 text-accent" />
|
||||
<span className="truncate">
|
||||
<span className="font-medium text-text">{pending.name}</span> is ready — open a connection
|
||||
to use it.
|
||||
</span>
|
||||
<button
|
||||
type="button"
|
||||
onClick={clear}
|
||||
aria-label="Dismiss pending SQL file"
|
||||
className="ml-auto flex items-center rounded px-1 py-0.5 hover:bg-surface hover:text-text transition-colors cursor-pointer"
|
||||
>
|
||||
<X className="h-3.5 w-3.5" />
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user