// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.mssql.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class DatabaseImportArgs extends com.pulumi.resources.ResourceArgs {

    public static final DatabaseImportArgs Empty = new DatabaseImportArgs();

    /**
     * Specifies the name of the SQL administrator.
     * 
     */
    @Import(name="administratorLogin", required=true)
    private Output<String> administratorLogin;

    /**
     * @return Specifies the name of the SQL administrator.
     * 
     */
    public Output<String> administratorLogin() {
        return this.administratorLogin;
    }

    /**
     * Specifies the password of the SQL administrator.
     * 
     */
    @Import(name="administratorLoginPassword", required=true)
    private Output<String> administratorLoginPassword;

    /**
     * @return Specifies the password of the SQL administrator.
     * 
     */
    public Output<String> administratorLoginPassword() {
        return this.administratorLoginPassword;
    }

    /**
     * Specifies the type of authentication used to access the server. Valid values are `SQL` or `ADPassword`.
     * 
     */
    @Import(name="authenticationType", required=true)
    private Output<String> authenticationType;

    /**
     * @return Specifies the type of authentication used to access the server. Valid values are `SQL` or `ADPassword`.
     * 
     */
    public Output<String> authenticationType() {
        return this.authenticationType;
    }

    /**
     * The resource id for the storage account used to store BACPAC file. If set, private endpoint connection will be created for the storage account. Must match storage account used for storage_uri parameter.
     * 
     */
    @Import(name="storageAccountId")
    private @Nullable Output<String> storageAccountId;

    /**
     * @return The resource id for the storage account used to store BACPAC file. If set, private endpoint connection will be created for the storage account. Must match storage account used for storage_uri parameter.
     * 
     */
    public Optional<Output<String>> storageAccountId() {
        return Optional.ofNullable(this.storageAccountId);
    }

    /**
     * Specifies the access key for the storage account.
     * 
     */
    @Import(name="storageKey", required=true)
    private Output<String> storageKey;

    /**
     * @return Specifies the access key for the storage account.
     * 
     */
    public Output<String> storageKey() {
        return this.storageKey;
    }

    /**
     * Specifies the type of access key for the storage account. Valid values are `StorageAccessKey` or `SharedAccessKey`.
     * 
     */
    @Import(name="storageKeyType", required=true)
    private Output<String> storageKeyType;

    /**
     * @return Specifies the type of access key for the storage account. Valid values are `StorageAccessKey` or `SharedAccessKey`.
     * 
     */
    public Output<String> storageKeyType() {
        return this.storageKeyType;
    }

    /**
     * Specifies the blob URI of the .bacpac file.
     * 
     */
    @Import(name="storageUri", required=true)
    private Output<String> storageUri;

    /**
     * @return Specifies the blob URI of the .bacpac file.
     * 
     */
    public Output<String> storageUri() {
        return this.storageUri;
    }

    private DatabaseImportArgs() {}

    private DatabaseImportArgs(DatabaseImportArgs $) {
        this.administratorLogin = $.administratorLogin;
        this.administratorLoginPassword = $.administratorLoginPassword;
        this.authenticationType = $.authenticationType;
        this.storageAccountId = $.storageAccountId;
        this.storageKey = $.storageKey;
        this.storageKeyType = $.storageKeyType;
        this.storageUri = $.storageUri;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(DatabaseImportArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private DatabaseImportArgs $;

        public Builder() {
            $ = new DatabaseImportArgs();
        }

        public Builder(DatabaseImportArgs defaults) {
            $ = new DatabaseImportArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param administratorLogin Specifies the name of the SQL administrator.
         * 
         * @return builder
         * 
         */
        public Builder administratorLogin(Output<String> administratorLogin) {
            $.administratorLogin = administratorLogin;
            return this;
        }

        /**
         * @param administratorLogin Specifies the name of the SQL administrator.
         * 
         * @return builder
         * 
         */
        public Builder administratorLogin(String administratorLogin) {
            return administratorLogin(Output.of(administratorLogin));
        }

        /**
         * @param administratorLoginPassword Specifies the password of the SQL administrator.
         * 
         * @return builder
         * 
         */
        public Builder administratorLoginPassword(Output<String> administratorLoginPassword) {
            $.administratorLoginPassword = administratorLoginPassword;
            return this;
        }

        /**
         * @param administratorLoginPassword Specifies the password of the SQL administrator.
         * 
         * @return builder
         * 
         */
        public Builder administratorLoginPassword(String administratorLoginPassword) {
            return administratorLoginPassword(Output.of(administratorLoginPassword));
        }

        /**
         * @param authenticationType Specifies the type of authentication used to access the server. Valid values are `SQL` or `ADPassword`.
         * 
         * @return builder
         * 
         */
        public Builder authenticationType(Output<String> authenticationType) {
            $.authenticationType = authenticationType;
            return this;
        }

        /**
         * @param authenticationType Specifies the type of authentication used to access the server. Valid values are `SQL` or `ADPassword`.
         * 
         * @return builder
         * 
         */
        public Builder authenticationType(String authenticationType) {
            return authenticationType(Output.of(authenticationType));
        }

        /**
         * @param storageAccountId The resource id for the storage account used to store BACPAC file. If set, private endpoint connection will be created for the storage account. Must match storage account used for storage_uri parameter.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountId(@Nullable Output<String> storageAccountId) {
            $.storageAccountId = storageAccountId;
            return this;
        }

        /**
         * @param storageAccountId The resource id for the storage account used to store BACPAC file. If set, private endpoint connection will be created for the storage account. Must match storage account used for storage_uri parameter.
         * 
         * @return builder
         * 
         */
        public Builder storageAccountId(String storageAccountId) {
            return storageAccountId(Output.of(storageAccountId));
        }

        /**
         * @param storageKey Specifies the access key for the storage account.
         * 
         * @return builder
         * 
         */
        public Builder storageKey(Output<String> storageKey) {
            $.storageKey = storageKey;
            return this;
        }

        /**
         * @param storageKey Specifies the access key for the storage account.
         * 
         * @return builder
         * 
         */
        public Builder storageKey(String storageKey) {
            return storageKey(Output.of(storageKey));
        }

        /**
         * @param storageKeyType Specifies the type of access key for the storage account. Valid values are `StorageAccessKey` or `SharedAccessKey`.
         * 
         * @return builder
         * 
         */
        public Builder storageKeyType(Output<String> storageKeyType) {
            $.storageKeyType = storageKeyType;
            return this;
        }

        /**
         * @param storageKeyType Specifies the type of access key for the storage account. Valid values are `StorageAccessKey` or `SharedAccessKey`.
         * 
         * @return builder
         * 
         */
        public Builder storageKeyType(String storageKeyType) {
            return storageKeyType(Output.of(storageKeyType));
        }

        /**
         * @param storageUri Specifies the blob URI of the .bacpac file.
         * 
         * @return builder
         * 
         */
        public Builder storageUri(Output<String> storageUri) {
            $.storageUri = storageUri;
            return this;
        }

        /**
         * @param storageUri Specifies the blob URI of the .bacpac file.
         * 
         * @return builder
         * 
         */
        public Builder storageUri(String storageUri) {
            return storageUri(Output.of(storageUri));
        }

        public DatabaseImportArgs build() {
            $.administratorLogin = Objects.requireNonNull($.administratorLogin, "expected parameter 'administratorLogin' to be non-null");
            $.administratorLoginPassword = Objects.requireNonNull($.administratorLoginPassword, "expected parameter 'administratorLoginPassword' to be non-null");
            $.authenticationType = Objects.requireNonNull($.authenticationType, "expected parameter 'authenticationType' to be non-null");
            $.storageKey = Objects.requireNonNull($.storageKey, "expected parameter 'storageKey' to be non-null");
            $.storageKeyType = Objects.requireNonNull($.storageKeyType, "expected parameter 'storageKeyType' to be non-null");
            $.storageUri = Objects.requireNonNull($.storageUri, "expected parameter 'storageUri' to be non-null");
            return $;
        }
    }

}
