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 }) => (
{label}
{value || '-'}
) 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