import DeployEssentialLabForm from "@/components/labs/deploy-lab-form.essential";
import { Alert, AlertTitle } from "@/components/ui/alert";
import type { ClusterRegionKey } from "@/lib/cluster-regions";
import { DeployLabFormV2Props } from "./deploy-lab-form.common";
import DeployDedicatedLabForm from "./deploy-lab-form.dedicated";
import DeploySelfManagedLabForm from "./deploy-lab-form.self-managed";
import DeployServerlessLabForm from "./deploy-lab-form.serverless";

export type DeployLabFormData = {
  region: ClusterRegionKey;
  tidb_version?: string | undefined;
  serverless_cluster_type?: "sandbox" | "user-host";
  user_serverless_cluster_id?: string | undefined;
};

export default function DeployLabForm(props: DeployLabFormV2Props) {
  switch (props.tidbEnvironment) {
    case "TiDB Cloud Starter":
      return <DeployServerlessLabForm {...props} />;
    case "TiDB Cloud Dedicated":
      return <DeployDedicatedLabForm {...props} />;
    case "TiDB Self-Managed":
      return <DeploySelfManagedLabForm {...props} />;
    case "TiDB Cloud Essential":
      return <DeployEssentialLabForm {...props} />;
    default:
      return (
        <Alert variant="destructive">
          <AlertTitle>
            Unsupported TiDB Environment {props.tidbEnvironment}
          </AlertTitle>
        </Alert>
      );
  }
}
