mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-06-29 01:27:22 +01:00
feat: Redesign container-copy flow to select destination account and enable cross-account container creation (#2436)
* feat: Redesign container-copy flow to select destination account and enable cross-account container creation * upgrade RBAC permissions from read only to read-write * fix copyjob playwright tests * swap source-destination content * fix formating * use targetAccountOverride for capability checks in AddCollectionPanel * feat: localize ContainerCopy hardcoded strings using i18next and refactor readDatabasesWithARM * removed container copy messages json file
This commit is contained in:
@@ -1,33 +1,36 @@
|
||||
import { AccountOverride } from "Contracts/DataModels";
|
||||
import { isFabricNative } from "Platform/Fabric/FabricUtil";
|
||||
import * as Constants from "../Common/Constants";
|
||||
import { userContext } from "../UserContext";
|
||||
|
||||
export const isCapabilityEnabled = (capabilityName: string): boolean => {
|
||||
export const isCapabilityEnabled = (capabilityName: string, targetAccountOverride?: AccountOverride): boolean => {
|
||||
const { databaseAccount } = userContext;
|
||||
if (databaseAccount && databaseAccount.properties && databaseAccount.properties.capabilities) {
|
||||
return databaseAccount.properties.capabilities.some((capability) => capability.name === capabilityName);
|
||||
const capabilities = targetAccountOverride?.capabilities || databaseAccount?.properties?.capabilities;
|
||||
if (capabilities) {
|
||||
return capabilities.some((capability) => capability.name === capabilityName);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
export const isServerlessAccount = (): boolean => {
|
||||
export const isServerlessAccount = (targetAccountOverride?: AccountOverride): boolean => {
|
||||
const { databaseAccount } = userContext;
|
||||
const capacityMode = targetAccountOverride?.capacityMode || databaseAccount?.properties?.capacityMode;
|
||||
return (
|
||||
databaseAccount?.properties?.capacityMode === Constants.CapacityMode.Serverless ||
|
||||
isCapabilityEnabled(Constants.CapabilityNames.EnableServerless)
|
||||
capacityMode === Constants.CapacityMode.Serverless ||
|
||||
isCapabilityEnabled(Constants.CapabilityNames.EnableServerless, targetAccountOverride)
|
||||
);
|
||||
};
|
||||
|
||||
export const isVectorSearchEnabled = (): boolean => {
|
||||
export const isVectorSearchEnabled = (targetAccountOverride?: AccountOverride): boolean => {
|
||||
return (
|
||||
userContext.apiType === "SQL" &&
|
||||
(isCapabilityEnabled(Constants.CapabilityNames.EnableNoSQLVectorSearch) || isFabricNative())
|
||||
(isCapabilityEnabled(Constants.CapabilityNames.EnableNoSQLVectorSearch, targetAccountOverride) || isFabricNative())
|
||||
);
|
||||
};
|
||||
|
||||
export const isFullTextSearchPreviewFeaturesEnabled = (): boolean => {
|
||||
export const isFullTextSearchPreviewFeaturesEnabled = (targetAccountOverride?: AccountOverride): boolean => {
|
||||
return (
|
||||
userContext.apiType === "SQL" &&
|
||||
isCapabilityEnabled(Constants.CapabilityNames.EnableNoSQLFullTextSearchPreviewFeatures)
|
||||
isCapabilityEnabled(Constants.CapabilityNames.EnableNoSQLFullTextSearchPreviewFeatures, targetAccountOverride)
|
||||
);
|
||||
};
|
||||
|
||||
@@ -93,7 +93,7 @@ export const assignRole = async (
|
||||
return null;
|
||||
}
|
||||
const accountScope = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}`;
|
||||
const roleDefinitionId = `${accountScope}/sqlRoleDefinitions/00000000-0000-0000-0000-000000000001`;
|
||||
const roleDefinitionId = `${accountScope}/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002`; // Built-in Contributor role definition ID for Cosmos DB
|
||||
const roleAssignmentName = crypto.randomUUID();
|
||||
const path = `${accountScope}/sqlRoleAssignments/${roleAssignmentName}`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user