import React from 'react'; import { router, usePage } from '@inertiajs/react'; import { useInertiaForm } from 'use-inertia-form'; import { SearchableSelect } from '../components/SearchableSelect'; import type { Datasource, DatasourceFormProps } from '../types/datasource'; export default function DatasourceFormPage({ datasource, constants }: DatasourceFormProps) { const { rootPath } = usePage().props; const isEditing = !!datasource; const { data, setData, processing, errors } = useInertiaForm<{ datasource: Datasource }>({ datasource: { name: datasource?.name ?? '', datasource_type: datasource?.datasource_type ?? 's3', s3_bucket: datasource?.s3_bucket ?? '', s3_prefix: datasource?.s3_prefix ?? '', s3_region: datasource?.s3_region ?? 'us-east-1', } }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (isEditing) { router.patch(`${rootPath}/datasources/${datasource.id}`, data); } else { router.post(`${rootPath}/datasources`, data); } }; return (

{isEditing ? 'Edit Datasource' : 'New Datasource'}

setData('datasource.name', e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 py-2 px-4 shadow-sm border-gray-300 border" required /> {errors.datasource?.name && (

{errors.datasource.name}

)}
{!isEditing && (
setData('datasource.datasource_type', value)} placeholder="Select datasource type" />
)}
setData('datasource.s3_bucket', e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 py-2 px-4 shadow-sm border-gray-300 border" required /> {errors.datasource?.s3_bucket && (

{errors.datasource.s3_bucket}

)}
setData('datasource.s3_prefix', e.target.value)} className="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 py-2 px-4 shadow-sm border-gray-300 border" placeholder="data/raw/" /> {errors.datasource?.s3_prefix && (

{errors.datasource.s3_prefix}

)}
setData('datasource.s3_region', value)} placeholder="Select s3 region" /> {errors.datasource?.s3_region && (

{errors.datasource.s3_region}

)}
); }