function GetOciTopLevelCommand_psql() {
    return 'psql'
}

function GetOciSubcommands_psql() {
    $ociSubcommands = @{
        'psql' = 'backup backup-collection configuration configuration-collection connection-details db-system db-system-collection default-configuration default-configuration-collection shape-summary work-request work-request-error work-request-log-entry'
        'psql backup' = 'change-compartment create delete get update'
        'psql backup-collection' = 'list-backups'
        'psql configuration' = 'change-compartment create delete get update'
        'psql configuration-collection' = 'list-configurations'
        'psql connection-details' = 'get'
        'psql db-system' = 'change-compartment create create-db-system-backup-source-details create-db-system-none-source-details create-db-system-oci-optimized-storage-details delete failover get get-primary-db-instance patch reset-master-user-password reset-master-user-password-plain-text-password-details reset-master-user-password-vault-secret-password-details restart-db-instance-in restore update update-db-system-db-instance'
        'psql db-system-collection' = 'list-db-systems'
        'psql default-configuration' = 'get'
        'psql default-configuration-collection' = 'list-default-configurations'
        'psql shape-summary' = 'list-shapes'
        'psql work-request' = 'get list'
        'psql work-request-error' = 'list'
        'psql work-request-log-entry' = 'list-work-request-logs'
    }
    return $ociSubcommands
}

function GetOciCommandsToLongParams_psql() {
    $ociCommandsToLongParams = @{
        'psql backup change-compartment' = 'backup-id compartment-id from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql backup create' = 'compartment-id db-system-id defined-tags description display-name freeform-tags from-json help max-wait-seconds retention-period wait-for-state wait-interval-seconds'
        'psql backup delete' = 'backup-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql backup get' = 'backup-id from-json help'
        'psql backup update' = 'backup-id defined-tags description display-name force freeform-tags from-json help if-match max-wait-seconds retention-period wait-for-state wait-interval-seconds'
        'psql backup-collection list-backups' = 'all backup-id compartment-id display-name from-json help id lifecycle-state limit page page-size sort-by sort-order time-ended time-started'
        'psql configuration change-compartment' = 'compartment-id configuration-id from-json help if-match'
        'psql configuration create' = 'compartment-id db-configuration-overrides db-version defined-tags description display-name freeform-tags from-json help instance-memory-size-in-gbs instance-ocpu-count max-wait-seconds shape system-tags wait-for-state wait-interval-seconds'
        'psql configuration delete' = 'configuration-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql configuration get' = 'configuration-id from-json help'
        'psql configuration update' = 'configuration-id defined-tags description display-name force freeform-tags from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql configuration-collection list-configurations' = 'all compartment-id configuration-id db-version display-name from-json help lifecycle-state limit page page-size shape sort-by sort-order'
        'psql connection-details get' = 'db-system-id from-json help'
        'psql db-system change-compartment' = 'compartment-id db-system-id from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql db-system create' = 'compartment-id config-id credentials db-version defined-tags description display-name freeform-tags from-json help instance-count instance-memory-size-in-gbs instance-ocpu-count instances-details management-policy max-wait-seconds network-details shape source storage-details system-type wait-for-state wait-interval-seconds'
        'psql db-system create-db-system-backup-source-details' = 'compartment-id config-id credentials db-version defined-tags description display-name freeform-tags from-json help instance-count instance-memory-size-in-gbs instance-ocpu-count instances-details management-policy max-wait-seconds network-details shape source-backup-id source-is-having-restore-config-overrides storage-details system-type wait-for-state wait-interval-seconds'
        'psql db-system create-db-system-none-source-details' = 'compartment-id config-id credentials db-version defined-tags description display-name freeform-tags from-json help instance-count instance-memory-size-in-gbs instance-ocpu-count instances-details management-policy max-wait-seconds network-details shape storage-details system-type wait-for-state wait-interval-seconds'
        'psql db-system create-db-system-oci-optimized-storage-details' = 'compartment-id config-id credentials db-version defined-tags description display-name freeform-tags from-json help instance-count instance-memory-size-in-gbs instance-ocpu-count instances-details management-policy max-wait-seconds network-details shape source storage-details-availability-domain storage-details-iops storage-details-is-regionally-durable system-type wait-for-state wait-interval-seconds'
        'psql db-system delete' = 'db-system-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql db-system failover' = 'ad db-instance-id db-system-id from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql db-system get' = 'db-system-id excluded-fields from-json help'
        'psql db-system get-primary-db-instance' = 'db-system-id from-json help'
        'psql db-system patch' = 'db-system-id from-json help if-match items max-wait-seconds wait-for-state wait-interval-seconds'
        'psql db-system reset-master-user-password' = 'db-system-id from-json help if-match max-wait-seconds password-details wait-for-state wait-interval-seconds'
        'psql db-system reset-master-user-password-plain-text-password-details' = 'db-system-id from-json help if-match max-wait-seconds password-details-password wait-for-state wait-interval-seconds'
        'psql db-system reset-master-user-password-vault-secret-password-details' = 'db-system-id from-json help if-match max-wait-seconds password-details-secret-id password-details-secret-version wait-for-state wait-interval-seconds'
        'psql db-system restart-db-instance-in' = 'db-instance-id db-system-id from-json help if-match max-wait-seconds restart-type wait-for-state wait-interval-seconds'
        'psql db-system restore' = 'ad backup-id db-system-id from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql db-system update' = 'db-configuration-params db-system-id defined-tags description display-name force freeform-tags from-json help if-match management-policy max-wait-seconds storage-details wait-for-state wait-interval-seconds'
        'psql db-system update-db-system-db-instance' = 'db-instance-id db-system-id description display-name from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'psql db-system-collection list-db-systems' = 'all compartment-id display-name from-json help id lifecycle-state limit page page-size sort-by sort-order'
        'psql default-configuration get' = 'default-configuration-id from-json help'
        'psql default-configuration-collection list-default-configurations' = 'all configuration-id db-version display-name from-json help lifecycle-state limit page page-size shape sort-by sort-order'
        'psql shape-summary list-shapes' = 'all compartment-id from-json help id limit page page-size sort-by sort-order'
        'psql work-request get' = 'from-json help work-request-id'
        'psql work-request list' = 'all compartment-id from-json help limit page page-size resource-id sort-by sort-order status work-request-id'
        'psql work-request-error list' = 'all from-json help limit page page-size sort-by sort-order work-request-id'
        'psql work-request-log-entry list-work-request-logs' = 'all from-json help limit page page-size sort-by sort-order work-request-id'
    }
    return $ociCommandsToLongParams
}

function GetOciCommandsToShortParams_psql() {
    $ociCommandsToShortParams = @{
        'psql backup change-compartment' = '? c h'
        'psql backup create' = '? c h'
        'psql backup delete' = '? h'
        'psql backup get' = '? h'
        'psql backup update' = '? h'
        'psql backup-collection list-backups' = '? c h'
        'psql configuration change-compartment' = '? c h'
        'psql configuration create' = '? c h'
        'psql configuration delete' = '? h'
        'psql configuration get' = '? h'
        'psql configuration update' = '? h'
        'psql configuration-collection list-configurations' = '? c h'
        'psql connection-details get' = '? h'
        'psql db-system change-compartment' = '? c h'
        'psql db-system create' = '? c h'
        'psql db-system create-db-system-backup-source-details' = '? c h'
        'psql db-system create-db-system-none-source-details' = '? c h'
        'psql db-system create-db-system-oci-optimized-storage-details' = '? c h'
        'psql db-system delete' = '? h'
        'psql db-system failover' = '? h'
        'psql db-system get' = '? h'
        'psql db-system get-primary-db-instance' = '? h'
        'psql db-system patch' = '? h'
        'psql db-system reset-master-user-password' = '? h'
        'psql db-system reset-master-user-password-plain-text-password-details' = '? h'
        'psql db-system reset-master-user-password-vault-secret-password-details' = '? h'
        'psql db-system restart-db-instance-in' = '? h'
        'psql db-system restore' = '? h'
        'psql db-system update' = '? h'
        'psql db-system update-db-system-db-instance' = '? h'
        'psql db-system-collection list-db-systems' = '? c h'
        'psql default-configuration get' = '? h'
        'psql default-configuration-collection list-default-configurations' = '? h'
        'psql shape-summary list-shapes' = '? c h'
        'psql work-request get' = '? h'
        'psql work-request list' = '? c h'
        'psql work-request-error list' = '? h'
        'psql work-request-log-entry list-work-request-logs' = '? h'
    }
    return $ociCommandsToShortParams
}