# coding=utf-8
# *** WARNING: this file was generated by the Pulumi SDK Generator. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs

__all__ = [
    'GetDatabaseMigrationsSqlDbResult',
    'AwaitableGetDatabaseMigrationsSqlDbResult',
    'get_database_migrations_sql_db',
    'get_database_migrations_sql_db_output',
]

@pulumi.output_type
class GetDatabaseMigrationsSqlDbResult:
    """
    Database Migration Resource for SQL Database.
    """
    def __init__(__self__, id=None, name=None, properties=None, system_data=None, type=None):
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if properties and not isinstance(properties, dict):
            raise TypeError("Expected argument 'properties' to be a dict")
        pulumi.set(__self__, "properties", properties)
        if system_data and not isinstance(system_data, dict):
            raise TypeError("Expected argument 'system_data' to be a dict")
        pulumi.set(__self__, "system_data", system_data)
        if type and not isinstance(type, str):
            raise TypeError("Expected argument 'type' to be a str")
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def id(self) -> str:
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def properties(self) -> 'outputs.DatabaseMigrationPropertiesSqlDbResponse':
        """
        Database Migration Resource properties for SQL database.
        """
        return pulumi.get(self, "properties")

    @property
    @pulumi.getter(name="systemData")
    def system_data(self) -> 'outputs.SystemDataResponse':
        """
        Metadata pertaining to creation and last modification of the resource.
        """
        return pulumi.get(self, "system_data")

    @property
    @pulumi.getter
    def type(self) -> str:
        return pulumi.get(self, "type")


class AwaitableGetDatabaseMigrationsSqlDbResult(GetDatabaseMigrationsSqlDbResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDatabaseMigrationsSqlDbResult(
            id=self.id,
            name=self.name,
            properties=self.properties,
            system_data=self.system_data,
            type=self.type)


def get_database_migrations_sql_db(expand: Optional[str] = None,
                                   migration_operation_id: Optional[str] = None,
                                   resource_group_name: Optional[str] = None,
                                   sql_db_instance_name: Optional[str] = None,
                                   target_db_name: Optional[str] = None,
                                   opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDatabaseMigrationsSqlDbResult:
    """
    Retrieve the Database Migration resource.
    API Version: 2022-03-30-preview.


    :param str expand: Complete migration details be included in the response.
    :param str migration_operation_id: Optional migration operation ID. If this is provided, then details of migration operation for that ID are retrieved. If not provided (default), then details related to most recent or current operation are retrieved.
    :param str resource_group_name: Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
    :param str target_db_name: The name of the target database.
    """
    __args__ = dict()
    __args__['expand'] = expand
    __args__['migrationOperationId'] = migration_operation_id
    __args__['resourceGroupName'] = resource_group_name
    __args__['sqlDbInstanceName'] = sql_db_instance_name
    __args__['targetDbName'] = target_db_name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('azure-native:datamigration:getDatabaseMigrationsSqlDb', __args__, opts=opts, typ=GetDatabaseMigrationsSqlDbResult).value

    return AwaitableGetDatabaseMigrationsSqlDbResult(
        id=__ret__.id,
        name=__ret__.name,
        properties=__ret__.properties,
        system_data=__ret__.system_data,
        type=__ret__.type)


@_utilities.lift_output_func(get_database_migrations_sql_db)
def get_database_migrations_sql_db_output(expand: Optional[pulumi.Input[Optional[str]]] = None,
                                          migration_operation_id: Optional[pulumi.Input[Optional[str]]] = None,
                                          resource_group_name: Optional[pulumi.Input[str]] = None,
                                          sql_db_instance_name: Optional[pulumi.Input[str]] = None,
                                          target_db_name: Optional[pulumi.Input[str]] = None,
                                          opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseMigrationsSqlDbResult]:
    """
    Retrieve the Database Migration resource.
    API Version: 2022-03-30-preview.


    :param str expand: Complete migration details be included in the response.
    :param str migration_operation_id: Optional migration operation ID. If this is provided, then details of migration operation for that ID are retrieved. If not provided (default), then details related to most recent or current operation are retrieved.
    :param str resource_group_name: Name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
    :param str target_db_name: The name of the target database.
    """
    ...
