All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.azure.toolkit.lib.cosmos.model.DatabaseAccountConnectionStrings Maven / Gradle / Ivy

There is a newer version: 0.48.0
Show newest version
/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 */

package com.microsoft.azure.toolkit.lib.cosmos.model;

import com.azure.resourcemanager.cosmos.models.DatabaseAccountConnectionString;
import com.azure.resourcemanager.cosmos.models.DatabaseAccountListConnectionStringsResult;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;

import javax.annotation.Nonnull;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class DatabaseAccountConnectionStrings {
    private String primaryConnectionString;
    private String secondaryConnectionString;
    private String primaryReadonlyConnectionString;
    private String secondaryReadonlyConnectionString;

    public static DatabaseAccountConnectionStrings fromDatabaseAccountListConnectionStringsResult(@Nonnull DatabaseAccountListConnectionStringsResult result,
                                                                                                  @Nonnull DatabaseAccountKind kind) {
        return DatabaseAccountConnectionStrings.builder()
                .primaryConnectionString(getConnectionString(result, kind, true, false))
                .secondaryConnectionString(getConnectionString(result, kind, false, false))
                .primaryReadonlyConnectionString(getConnectionString(result, kind, true, true))
                .secondaryReadonlyConnectionString(getConnectionString(result, kind, false, true))
                .build();
    }

    private static String getConnectionString(@Nonnull DatabaseAccountListConnectionStringsResult result, @Nonnull DatabaseAccountKind kind, boolean isPrimary, boolean isReadOnly) {
        return result.connectionStrings().stream()
                .filter(string -> StringUtils.contains(string.description(), kind.getValue()))
                .filter(string -> StringUtils.contains(string.description(), isPrimary ? "Primary" : "Secondary"))
                .filter(string -> isReadOnly == StringUtils.containsIgnoreCase(string.description(), "Read-Only"))
                .findFirst().map(DatabaseAccountConnectionString::connectionString).orElse(null);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy