feat: PlanetScale managed-MySQL preset with setup guide and host detection (Task 3)

This commit is contained in:
2026-09-09 18:05:13 +08:00
parent 28ce32ce91
commit 45e3327db4
10 changed files with 67 additions and 17 deletions
@@ -74,7 +74,7 @@ export function NewConnectionScreen({
}: NewConnectionScreenProps) {
const [stage, setStage] = useState<Stage>("entry");
const [managedPreset, setManagedPreset] = useState<
"supabase" | "neon" | null
"supabase" | "neon" | "planetscale" | null
>(null);
const [form, setForm] = useState<ConnectionFormData>(() =>
createEmptyForm(
@@ -99,7 +99,7 @@ export function NewConnectionScreen({
const parsed = parseConnectionString(value);
if (parsed) {
const provider =
parsed.db_type === "postgresql"
parsed.db_type === "postgresql" || parsed.db_type === "mysql"
? detectProviderFromHost(parsed.host)
: null;
setManagedPreset(provider);
@@ -139,7 +139,9 @@ export function NewConnectionScreen({
(id: ProviderId) => {
const provider = getProviderById(id)!;
setManagedPreset(
provider.isManagedPreset ? (id as "supabase" | "neon") : null,
provider.isManagedPreset
? (id as "supabase" | "neon" | "planetscale")
: null,
);
revealConfigured({
db_type: provider.dbType,
@@ -148,6 +150,7 @@ export function NewConnectionScreen({
? null
: getDefaultPort(provider.dbType),
...(provider.dbType === "sqlite" ? { host: "" } : {}),
...(id === "planetscale" ? { ssl_mode: "verify-full" } : {}),
});
},
[revealConfigured],
@@ -164,7 +167,7 @@ export function NewConnectionScreen({
const parsed = parseConnectionString(value);
if (parsed) {
const provider =
parsed.db_type === "postgresql"
parsed.db_type === "postgresql" || parsed.db_type === "mysql"
? detectProviderFromHost(parsed.host)
: null;
setManagedPreset(provider);