import type {
SqlFunctionDto,
SqlQueryDto,
SqlStoredProcedureDto,
SqlViewDto,
SqlObjectType,
} from '@/proxy/sql-query-manager/models'
import { useLocalization } from '@/utils/hooks/useLocalization'
import dayjs from 'dayjs'
export type SqlObject = SqlFunctionDto | SqlQueryDto | SqlStoredProcedureDto | SqlViewDto
interface SqlObjectPropertiesProps {
object: SqlObject | null
type: SqlObjectType | null
}
const SqlObjectProperties = ({ object, type }: SqlObjectPropertiesProps) => {
const { translate } = useLocalization()
if (!object || !type) {
return (
{translate('::App.Platform.SelectAnObjectToViewProperties')}
)
}
const PropertyRow = ({ label, value }: { label: string; value: any }) => (
)
const getObjectTypeName = () => {
switch (type) {
case 1:
return translate('::App.Platform.Query')
case 2:
return translate('::App.Platform.StoredProcedure')
case 3:
return translate('::App.Platform.View')
case 4:
return translate('::App.Platform.Function')
default:
return translate('::App.Platform.Object')
}
}
const getStatusBadge = (status: number) => {
switch (status) {
case 1:
return {translate('::App.Platform.Draft')}
case 2:
return {translate('::App.Platform.Active')}
case 3:
return {translate('::App.Platform.Archived')}
default:
return {translate('::App.Platform.Unknown')}
}
}
const renderCommonProperties = () => (
<>
{object.creationTime && (
)}
{object.lastModificationTime && (
)}
>
)
const renderQueryProperties = () => {
const query = object as SqlQueryDto
return (
<>
{query.lastExecutedAt && (
)}
{renderCommonProperties()}
>
)
}
const renderStoredProcedureProperties = () => {
const sp = object as SqlStoredProcedureDto
return (
<>
{sp.lastDeployedAt && (
)}
{renderCommonProperties()}
>
)
}
const renderViewProperties = () => {
const view = object as SqlViewDto
return (
<>
{view.lastDeployedAt && (
)}
{renderCommonProperties()}
>
)
}
const renderFunctionProperties = () => {
const func = object as SqlFunctionDto
const getFunctionType = (funcType: number) => {
switch (funcType) {
case 1:
return translate('::App.Platform.ScalarFunction')
case 2:
return translate('::App.Platform.TableValuedFunction')
case 3:
return translate('::App.Platform.InlineTableValuedFunction')
default:
return translate('::App.Platform.Unknown')
}
}
return (
<>
{func.lastDeployedAt && (
)}
{renderCommonProperties()}
>
)
}
return (
{translate('::App.Platform.Properties')}
{type === 1 && renderQueryProperties()}
{type === 2 && renderStoredProcedureProperties()}
{type === 3 && renderViewProperties()}
{type === 4 && renderFunctionProperties()}
)
}
export default SqlObjectProperties