Esempio n. 1
0
        /// <summary>
        /// Construct AzureSqlDatabaseModel from Management.Sql.LegacySdk.Models.Database object
        /// </summary>
        /// <param name="resourceGroup">Resource group</param>
        /// <param name="serverName">Server name</param>
        /// <param name="database">Database object</param>
        public AzureSqlDatabaseModel(string resourceGroup, string serverName, Management.Sql.Models.Database database)
        {
            DatabaseEdition   edition   = DatabaseEdition.None;
            DatabaseReadScale readScale = DatabaseReadScale.Enabled;

            ResourceGroupName           = resourceGroup;
            ServerName                  = serverName;
            CollationName               = database.Collation;
            CreationDate                = database.CreationDate.Value;
            CurrentServiceObjectiveName = database.ServiceLevelObjective;
            MaxSizeBytes                = long.Parse(database.MaxSizeBytes);
            DatabaseName                = database.Name;
            Status              = database.Status;
            Tags                = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(database.Tags), false);
            ElasticPoolName     = database.ElasticPoolName;
            Location            = database.Location;
            ResourceId          = database.Id;
            CreateMode          = database.CreateMode;
            EarliestRestoreDate = database.EarliestRestoreDate;

            CurrentServiceObjectiveId = database.CurrentServiceObjectiveId.Value;

            DatabaseId = database.DatabaseId.Value;

            Enum.TryParse <DatabaseEdition>(database.Edition, true, out edition);
            Edition = edition;

            RequestedServiceObjectiveId = database.RequestedServiceObjectiveId.Value;

            Enum.TryParse <DatabaseReadScale>(database.ReadScale.ToString(), true, out readScale);
            ReadScale = readScale;
        }
Esempio n. 2
0
        /// <summary>
        /// Construct AzureSqlDatabaseModel from Management.Sql.Database object
        /// </summary>
        /// <param name="resourceGroup">Resource group</param>
        /// <param name="serverName">Server name</param>
        /// <param name="database">Database object</param>
        public AzureSqlDatabaseModel(string resourceGroup, string serverName, Management.Sql.Models.Database database)
        {
            DatabaseReadScale readScale = DatabaseReadScale.Enabled;

            ResourceGroupName = resourceGroup;
            ServerName        = serverName;
            CollationName     = database.Collation;
            CreationDate      = database.CreationDate.Value;
            MaxSizeBytes      = (long)database.MaxSizeBytes;
            DatabaseName      = database.Name;
            Status            = database.Status;
            Tags                = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(database.Tags), false);
            ElasticPoolName     = database.ElasticPoolName;
            Location            = database.Location;
            ResourceId          = database.Id;
            CreateMode          = database.CreateMode;
            EarliestRestoreDate = database.EarliestRestoreDate;

            CurrentServiceObjectiveName = database.CurrentServiceObjectiveName;

            DatabaseId = database.DatabaseId.Value;

            Edition = database.Edition;

            RequestedServiceObjectiveName = database.RequestedServiceObjectiveName;

            Enum.TryParse <DatabaseReadScale>(database.ReadScale.ToString(), true, out readScale);
            ReadScale = readScale;

            ZoneRedundant = database.ZoneRedundant;

            Capacity = database.Sku == null ? (int?)null : database.Sku.Capacity;

            Family = database.Sku == null ? null : database.Sku.Family;

            SkuName = database.Sku == null ? null : database.Sku.Name;

            LicenseType = database.LicenseType;

            AutoPauseDelayInMinutes = database.AutoPauseDelay;
            MinimumCapacity         = database.MinCapacity;
        }
        /// <summary>
        /// Construct AzureSqlDatabaseModel from Management.Sql.LegacySdk.Models.Database object
        /// </summary>
        /// <param name="resourceGroup">Resource group</param>
        /// <param name="serverName">Server name</param>
        /// <param name="database">Database object</param>
        public AzureSqlDatabaseModel(string resourceGroup, string serverName, Management.Sql.LegacySdk.Models.Database database)
        {
            Guid              id        = Guid.Empty;
            DatabaseEdition   edition   = DatabaseEdition.None;
            DatabaseReadScale readScale = DatabaseReadScale.Enabled;

            ResourceGroupName           = resourceGroup;
            ServerName                  = serverName;
            CollationName               = database.Properties.Collation;
            CreationDate                = database.Properties.CreationDate;
            CurrentServiceObjectiveName = database.Properties.ServiceObjective;
            MaxSizeBytes                = database.Properties.MaxSizeBytes;
            DatabaseName                = database.Name;
            Status              = database.Properties.Status;
            Tags                = TagsConversionHelper.CreateTagDictionary(TagsConversionHelper.CreateTagHashtable(database.Tags), false);
            ElasticPoolName     = database.Properties.ElasticPoolName;
            Location            = database.Location;
            ResourceId          = database.Id;
            CreateMode          = database.Properties.CreateMode;
            EarliestRestoreDate = database.Properties.EarliestRestoreDate;

            Guid.TryParse(database.Properties.CurrentServiceObjectiveId, out id);
            CurrentServiceObjectiveId = id;

            Guid.TryParse(database.Properties.DatabaseId, out id);
            DatabaseId = id;

            Enum.TryParse <DatabaseEdition>(database.Properties.Edition, true, out edition);
            Edition = edition;

            Guid.TryParse(database.Properties.RequestedServiceObjectiveId, out id);
            RequestedServiceObjectiveId = id;

            Enum.TryParse <DatabaseReadScale>(database.Properties.ReadScale, true, out readScale);
            ReadScale = readScale;

            ZoneRedundant = false;
        }
        internal static SqlDatabaseData DeserializeSqlDatabaseData(JsonElement element)
        {
            Optional <Models.Sku>        sku       = default;
            Optional <string>            kind      = default;
            Optional <string>            managedBy = default;
            IDictionary <string, string> tags      = default;
            Location                                    location                          = default;
            ResourceIdentifier                          id                                = default;
            string                                      name                              = default;
            ResourceType                                type                              = default;
            Optional <CreateMode>                       createMode                        = default;
            Optional <string>                           collation                         = default;
            Optional <long>                             maxSizeBytes                      = default;
            Optional <SampleSchemaName>                 sampleName                        = default;
            Optional <string>                           elasticPoolId                     = default;
            Optional <string>                           sourceDatabaseId                  = default;
            Optional <DatabaseStatus>                   status                            = default;
            Optional <Guid>                             databaseId                        = default;
            Optional <DateTimeOffset>                   creationDate                      = default;
            Optional <string>                           currentServiceObjectiveName       = default;
            Optional <string>                           requestedServiceObjectiveName     = default;
            Optional <string>                           defaultSecondaryLocation          = default;
            Optional <string>                           failoverGroupId                   = default;
            Optional <DateTimeOffset>                   restorePointInTime                = default;
            Optional <DateTimeOffset>                   sourceDatabaseDeletionDate        = default;
            Optional <string>                           recoveryServicesRecoveryPointId   = default;
            Optional <string>                           longTermRetentionBackupResourceId = default;
            Optional <string>                           recoverableDatabaseId             = default;
            Optional <string>                           restorableDroppedDatabaseId       = default;
            Optional <CatalogCollationType>             catalogCollation                  = default;
            Optional <bool>                             zoneRedundant                     = default;
            Optional <DatabaseLicenseType>              licenseType                       = default;
            Optional <long>                             maxLogSizeBytes                   = default;
            Optional <DateTimeOffset>                   earliestRestoreDate               = default;
            Optional <DatabaseReadScale>                readScale                         = default;
            Optional <int>                              highAvailabilityReplicaCount      = default;
            Optional <SecondaryType>                    secondaryType                     = default;
            Optional <Models.Sku>                       currentSku                        = default;
            Optional <int>                              autoPauseDelay                    = default;
            Optional <CurrentBackupStorageRedundancy>   currentBackupStorageRedundancy    = default;
            Optional <RequestedBackupStorageRedundancy> requestedBackupStorageRedundancy  = default;
            Optional <double>                           minCapacity                       = default;
            Optional <DateTimeOffset>                   pausedDate                        = default;
            Optional <DateTimeOffset>                   resumedDate                       = default;
            Optional <string>                           maintenanceConfigurationId        = default;
            Optional <bool>                             isLedgerOn                        = default;
            Optional <bool>                             isInfraEncryptionEnabled          = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("sku"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    sku = Models.Sku.DeserializeSku(property.Value);
                    continue;
                }
                if (property.NameEquals("kind"))
                {
                    kind = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("managedBy"))
                {
                    managedBy = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("tags"))
                {
                    Dictionary <string, string> dictionary = new Dictionary <string, string>();
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        dictionary.Add(property0.Name, property0.Value.GetString());
                    }
                    tags = dictionary;
                    continue;
                }
                if (property.NameEquals("location"))
                {
                    location = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("createMode"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            createMode = new CreateMode(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("collation"))
                        {
                            collation = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("maxSizeBytes"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            maxSizeBytes = property0.Value.GetInt64();
                            continue;
                        }
                        if (property0.NameEquals("sampleName"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            sampleName = new SampleSchemaName(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("elasticPoolId"))
                        {
                            elasticPoolId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("sourceDatabaseId"))
                        {
                            sourceDatabaseId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("status"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            status = new DatabaseStatus(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("databaseId"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            databaseId = property0.Value.GetGuid();
                            continue;
                        }
                        if (property0.NameEquals("creationDate"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            creationDate = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("currentServiceObjectiveName"))
                        {
                            currentServiceObjectiveName = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("requestedServiceObjectiveName"))
                        {
                            requestedServiceObjectiveName = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("defaultSecondaryLocation"))
                        {
                            defaultSecondaryLocation = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("failoverGroupId"))
                        {
                            failoverGroupId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("restorePointInTime"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            restorePointInTime = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("sourceDatabaseDeletionDate"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            sourceDatabaseDeletionDate = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("recoveryServicesRecoveryPointId"))
                        {
                            recoveryServicesRecoveryPointId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("longTermRetentionBackupResourceId"))
                        {
                            longTermRetentionBackupResourceId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("recoverableDatabaseId"))
                        {
                            recoverableDatabaseId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("restorableDroppedDatabaseId"))
                        {
                            restorableDroppedDatabaseId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("catalogCollation"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            catalogCollation = new CatalogCollationType(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("zoneRedundant"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            zoneRedundant = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("licenseType"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            licenseType = new DatabaseLicenseType(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("maxLogSizeBytes"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            maxLogSizeBytes = property0.Value.GetInt64();
                            continue;
                        }
                        if (property0.NameEquals("earliestRestoreDate"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            earliestRestoreDate = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("readScale"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            readScale = new DatabaseReadScale(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("highAvailabilityReplicaCount"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            highAvailabilityReplicaCount = property0.Value.GetInt32();
                            continue;
                        }
                        if (property0.NameEquals("secondaryType"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            secondaryType = new SecondaryType(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("currentSku"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            currentSku = Models.Sku.DeserializeSku(property0.Value);
                            continue;
                        }
                        if (property0.NameEquals("autoPauseDelay"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            autoPauseDelay = property0.Value.GetInt32();
                            continue;
                        }
                        if (property0.NameEquals("currentBackupStorageRedundancy"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            currentBackupStorageRedundancy = new CurrentBackupStorageRedundancy(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("requestedBackupStorageRedundancy"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            requestedBackupStorageRedundancy = new RequestedBackupStorageRedundancy(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("minCapacity"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            minCapacity = property0.Value.GetDouble();
                            continue;
                        }
                        if (property0.NameEquals("pausedDate"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            pausedDate = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("resumedDate"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            resumedDate = property0.Value.GetDateTimeOffset("O");
                            continue;
                        }
                        if (property0.NameEquals("maintenanceConfigurationId"))
                        {
                            maintenanceConfigurationId = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("isLedgerOn"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            isLedgerOn = property0.Value.GetBoolean();
                            continue;
                        }
                        if (property0.NameEquals("isInfraEncryptionEnabled"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            isInfraEncryptionEnabled = property0.Value.GetBoolean();
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new SqlDatabaseData(id, name, type, tags, location, sku.Value, kind.Value, managedBy.Value, Optional.ToNullable(createMode), collation.Value, Optional.ToNullable(maxSizeBytes), Optional.ToNullable(sampleName), elasticPoolId.Value, sourceDatabaseId.Value, Optional.ToNullable(status), Optional.ToNullable(databaseId), Optional.ToNullable(creationDate), currentServiceObjectiveName.Value, requestedServiceObjectiveName.Value, defaultSecondaryLocation.Value, failoverGroupId.Value, Optional.ToNullable(restorePointInTime), Optional.ToNullable(sourceDatabaseDeletionDate), recoveryServicesRecoveryPointId.Value, longTermRetentionBackupResourceId.Value, recoverableDatabaseId.Value, restorableDroppedDatabaseId.Value, Optional.ToNullable(catalogCollation), Optional.ToNullable(zoneRedundant), Optional.ToNullable(licenseType), Optional.ToNullable(maxLogSizeBytes), Optional.ToNullable(earliestRestoreDate), Optional.ToNullable(readScale), Optional.ToNullable(highAvailabilityReplicaCount), Optional.ToNullable(secondaryType), currentSku.Value, Optional.ToNullable(autoPauseDelay), Optional.ToNullable(currentBackupStorageRedundancy), Optional.ToNullable(requestedBackupStorageRedundancy), Optional.ToNullable(minCapacity), Optional.ToNullable(pausedDate), Optional.ToNullable(resumedDate), maintenanceConfigurationId.Value, Optional.ToNullable(isLedgerOn), Optional.ToNullable(isInfraEncryptionEnabled)));
        }