# encoding: utf-8
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.

module Azure::SQL::Mgmt::V2014_04_01
  module Models
    #
    # Import database parameters.
    #
    class ImportRequest < ExportRequest

      include MsRestAzure

      # @return [String] The name of the database to import.
      attr_accessor :database_name

      # @return [DatabaseEdition] The edition for the database being created.
      #
      # The list of SKUs may vary by region and support offer. To determine the
      # SKUs (including the SKU name, tier/edition, family, and capacity) that
      # are available to your subscription in an Azure region, use the
      # `Capabilities_ListByLocation` REST API or one of the following
      # commands:
      #
      # ```azurecli
      # az sql db list-editions -l <location> -o table
      # ````
      #
      # ```powershell
      # Get-AzSqlServerServiceObjective -Location <location>
      # ````
      # . Possible values include: 'Web', 'Business', 'Basic', 'Standard',
      # 'Premium', 'PremiumRS', 'Free', 'Stretch', 'DataWarehouse', 'System',
      # 'System2', 'GeneralPurpose', 'BusinessCritical', 'Hyperscale'
      attr_accessor :edition

      # @return [ServiceObjectiveName] The name of the service objective to
      # assign to the database. Possible values include: 'System', 'System0',
      # 'System1', 'System2', 'System3', 'System4', 'System2L', 'System3L',
      # 'System4L', 'Free', 'Basic', 'S0', 'S1', 'S2', 'S3', 'S4', 'S6', 'S7',
      # 'S9', 'S12', 'P1', 'P2', 'P3', 'P4', 'P6', 'P11', 'P15', 'PRS1',
      # 'PRS2', 'PRS4', 'PRS6', 'DW100', 'DW200', 'DW300', 'DW400', 'DW500',
      # 'DW600', 'DW1000', 'DW1200', 'DW1000c', 'DW1500', 'DW1500c', 'DW2000',
      # 'DW2000c', 'DW3000', 'DW2500c', 'DW3000c', 'DW6000', 'DW5000c',
      # 'DW6000c', 'DW7500c', 'DW10000c', 'DW15000c', 'DW30000c', 'DS100',
      # 'DS200', 'DS300', 'DS400', 'DS500', 'DS600', 'DS1000', 'DS1200',
      # 'DS1500', 'DS2000', 'ElasticPool'
      attr_accessor :service_objective_name

      # @return [String] The maximum size for the newly imported database.
      attr_accessor :max_size_bytes


      #
      # Mapper for ImportRequest class as Ruby Hash.
      # This will be used for serialization/deserialization.
      #
      def self.mapper()
        {
          client_side_validation: true,
          required: false,
          serialized_name: 'ImportRequest',
          type: {
            name: 'Composite',
            class_name: 'ImportRequest',
            model_properties: {
              storage_key_type: {
                client_side_validation: true,
                required: true,
                serialized_name: 'storageKeyType',
                type: {
                  name: 'Enum',
                  module: 'StorageKeyType'
                }
              },
              storage_key: {
                client_side_validation: true,
                required: true,
                serialized_name: 'storageKey',
                type: {
                  name: 'String'
                }
              },
              storage_uri: {
                client_side_validation: true,
                required: true,
                serialized_name: 'storageUri',
                type: {
                  name: 'String'
                }
              },
              administrator_login: {
                client_side_validation: true,
                required: true,
                serialized_name: 'administratorLogin',
                type: {
                  name: 'String'
                }
              },
              administrator_login_password: {
                client_side_validation: true,
                required: true,
                serialized_name: 'administratorLoginPassword',
                type: {
                  name: 'String'
                }
              },
              authentication_type: {
                client_side_validation: true,
                required: false,
                serialized_name: 'authenticationType',
                default_value: 'SQL',
                type: {
                  name: 'Enum',
                  module: 'AuthenticationType'
                }
              },
              database_name: {
                client_side_validation: true,
                required: true,
                serialized_name: 'databaseName',
                type: {
                  name: 'String'
                }
              },
              edition: {
                client_side_validation: true,
                required: true,
                serialized_name: 'edition',
                type: {
                  name: 'String'
                }
              },
              service_objective_name: {
                client_side_validation: true,
                required: true,
                serialized_name: 'serviceObjectiveName',
                type: {
                  name: 'String'
                }
              },
              max_size_bytes: {
                client_side_validation: true,
                required: true,
                serialized_name: 'maxSizeBytes',
                type: {
                  name: 'String'
                }
              }
            }
          }
        }
      end
    end
  end
end
