mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-31 06:41:35 +00:00
Compare commits
16 Commits
defect2392
...
users/artr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
873712d5c2 | ||
|
|
4f9054ef37 | ||
|
|
d9e142d7a6 | ||
|
|
dfdb44bdc9 | ||
|
|
0a06c1c4f6 | ||
|
|
73b6bdcd3a | ||
|
|
492c42ccda | ||
|
|
e48402ae1b | ||
|
|
a3bd126a21 | ||
|
|
d15feb3478 | ||
|
|
cbc722031c | ||
|
|
b9d93c7070 | ||
|
|
9c04cfcc18 | ||
|
|
7b568df150 | ||
|
|
5c7c0eae61 | ||
|
|
16b05c2a75 |
@@ -124,12 +124,13 @@ table.dataTable thead td:active {
|
||||
|
||||
table.dataTable thead th:focus,
|
||||
table.dataTable thead td:focus {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #007ACC;
|
||||
outline: 1px dashed #605E5C;
|
||||
outline-offset: -2px;
|
||||
/*[{datatable-header-cell-focus-background}]*/
|
||||
}
|
||||
|
||||
table.dataTable tbody tr:focus{
|
||||
outline: 1px dashed #605E5C;
|
||||
}
|
||||
table.dataTable thead th:hover,
|
||||
table.dataTable thead td:hover {
|
||||
border: 1px solid #007ACC;
|
||||
|
||||
18744
package-lock.json
generated
18744
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@
|
||||
"@babel/plugin-proposal-class-properties": "7.12.1",
|
||||
"@babel/plugin-proposal-decorators": "7.12.12",
|
||||
"@fluentui/react": "8.14.3",
|
||||
"@fluentui/react-components": "9.30.1",
|
||||
"@fluentui/react-components": "9.32.1",
|
||||
"@jupyterlab/services": "6.0.2",
|
||||
"@jupyterlab/terminal": "3.0.3",
|
||||
"@microsoft/applicationinsights-web": "2.6.1",
|
||||
@@ -233,6 +233,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/Azure/cosmos-explorer",
|
||||
"prettier": {
|
||||
"printWidth": 120
|
||||
"printWidth": 120,
|
||||
"endOfLine": "auto"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ export function client(): Cosmos.CosmosClient {
|
||||
(options as any).plugins = [{ on: "request", plugin: requestPlugin }];
|
||||
}
|
||||
|
||||
if (userContext.features.enablePriorityBasedThrottling && userContext.apiType === "SQL") {
|
||||
if (userContext.databaseAccount?.properties?.enablePriorityBasedExecution && userContext.apiType === "SQL") {
|
||||
const plugins = (options as any).plugins || [];
|
||||
plugins.push({ on: "request", plugin: PriorityBasedExecutionUtils.requestPlugin });
|
||||
(options as any).plugins = plugins;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { DatePicker, TextField } from "@fluentui/react";
|
||||
import React, { FunctionComponent } from "react";
|
||||
import { attributeValueLabel } from "../Explorer/Panes/Tables/Validators/EntityTableHelper";
|
||||
|
||||
export interface TableEntityProps {
|
||||
entityValueLabel?: string;
|
||||
@@ -58,6 +59,7 @@ export const EntityValue: FunctionComponent<TableEntityProps> = ({
|
||||
placeholder={entityValuePlaceholder}
|
||||
value={typeof entityValue === "string" ? entityValue : ""}
|
||||
onChange={onEntityValueChange}
|
||||
ariaLabel={attributeValueLabel}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
import React, { FunctionComponent } from "react";
|
||||
import DeleteIcon from "../../images/delete.svg";
|
||||
import EditIcon from "../../images/Edit_entity.svg";
|
||||
import { attributeNameLabel, dataTypeLabel } from "../Explorer/Panes/Tables/Validators/EntityTableHelper";
|
||||
import { CassandraType, TableType } from "../Explorer/Tables/Constants";
|
||||
import { userContext } from "../UserContext";
|
||||
import { EntityValue } from "./EntityValue";
|
||||
@@ -112,6 +113,7 @@ export const TableEntity: FunctionComponent<TableEntityProps> = ({
|
||||
value={entityProperty}
|
||||
onChange={onEntityPropertyChange}
|
||||
required
|
||||
ariaLabel={attributeNameLabel}
|
||||
/>
|
||||
<Dropdown
|
||||
label={entityTypeLabel && entityTypeLabel}
|
||||
@@ -120,6 +122,7 @@ export const TableEntity: FunctionComponent<TableEntityProps> = ({
|
||||
options={options}
|
||||
disabled={isPropertyTypeDisable}
|
||||
styles={dropdownStyles}
|
||||
ariaLabel={dataTypeLabel}
|
||||
/>
|
||||
<EntityValue
|
||||
entityValueLabel={entityValueLabel}
|
||||
|
||||
@@ -61,6 +61,9 @@ let configContext: Readonly<ConfigContext> = {
|
||||
`^https:\\/\\/[\\.\\w]*ext\\.azure\\.(com|cn|us)$`,
|
||||
`^https:\\/\\/[\\.\\w]*\\.ext\\.microsoftazure\\.de$`,
|
||||
`^https:\\/\\/cosmos-db-dataexplorer-germanycentral\\.azurewebsites\\.de$`,
|
||||
`^https:\\/\\/.*\\.fabric\\.microsoft\\.com$`,
|
||||
`^https:\\/\\/.*\\.powerbi\\.com$`,
|
||||
`^https:\\/\\/.*\\.analysis-df\\.net$`,
|
||||
], // Webpack injects this at build time
|
||||
gitSha: process.env.GIT_SHA,
|
||||
hostedExplorerURL: "https://cosmos.azure.com/",
|
||||
|
||||
@@ -38,6 +38,7 @@ export interface DatabaseAccountExtendedProperties {
|
||||
locations?: DatabaseAccountResponseLocation[];
|
||||
postgresqlEndpoint?: string;
|
||||
publicNetworkAccess?: string;
|
||||
enablePriorityBasedExecution?: boolean;
|
||||
vcoreMongoEndpoint?: string;
|
||||
}
|
||||
|
||||
|
||||
25
src/Contracts/FabricContract.ts
Normal file
25
src/Contracts/FabricContract.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
export type FabricMessage =
|
||||
| {
|
||||
type: "newContainer";
|
||||
databaseName: string;
|
||||
}
|
||||
| {
|
||||
type: "initialize";
|
||||
connectionString: string | undefined;
|
||||
}
|
||||
| {
|
||||
type: "openTab";
|
||||
databaseName: string;
|
||||
collectionName: string | undefined;
|
||||
};
|
||||
|
||||
export type DataExploreMessage =
|
||||
| "ready"
|
||||
| {
|
||||
type: number;
|
||||
data: {
|
||||
action: "LoadDatabases";
|
||||
actionModifier: "success" | "start";
|
||||
defaultExperience: "SQL";
|
||||
};
|
||||
};
|
||||
@@ -1,9 +1,9 @@
|
||||
import {
|
||||
ChoiceGroup,
|
||||
DefaultButton,
|
||||
Dialog as FluentDialog,
|
||||
DialogFooter,
|
||||
DialogType,
|
||||
Dialog as FluentDialog,
|
||||
FontIcon,
|
||||
IButtonProps,
|
||||
IChoiceGroupProps,
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
ProgressIndicator,
|
||||
TextField,
|
||||
} from "@fluentui/react";
|
||||
import React, { FC } from "react";
|
||||
import React, { FC, useEffect } from "react";
|
||||
import create, { UseStore } from "zustand";
|
||||
|
||||
export interface DialogState {
|
||||
@@ -157,6 +157,20 @@ export const Dialog: FC = () => {
|
||||
contentHtml,
|
||||
} = props || {};
|
||||
|
||||
const handleKeyDown = (event: KeyboardEvent) => {
|
||||
if (event.key === "Escape") {
|
||||
useDialog.getState().closeDialog();
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (visible) {
|
||||
document.addEventListener("keydown", handleKeyDown);
|
||||
} else {
|
||||
document.removeEventListener("keydown", handleKeyDown);
|
||||
}
|
||||
}, [visible]);
|
||||
|
||||
const dialogProps: IDialogProps = {
|
||||
hidden: !visible,
|
||||
dialogContentProps: {
|
||||
|
||||
@@ -218,6 +218,7 @@ export class SubSettingsComponent extends React.Component<SubSettingsComponentPr
|
||||
value={this.props.displayedTtlSeconds}
|
||||
onChange={this.onTimeToLiveSecondsChange}
|
||||
suffix="second(s)"
|
||||
ariaLabel={`Time to live in seconds`}
|
||||
/>
|
||||
)}
|
||||
</Stack>
|
||||
|
||||
@@ -62,6 +62,7 @@ exports[`SubSettingsComponent analyticalTimeToLive hidden 1`] = `
|
||||
}
|
||||
/>
|
||||
<StyledTextFieldBase
|
||||
ariaLabel="Time to live in seconds"
|
||||
id="timeToLiveSeconds"
|
||||
max={2147483647}
|
||||
min={1}
|
||||
@@ -295,6 +296,7 @@ exports[`SubSettingsComponent analyticalTimeToLiveSeconds hidden 1`] = `
|
||||
}
|
||||
/>
|
||||
<StyledTextFieldBase
|
||||
ariaLabel="Time to live in seconds"
|
||||
id="timeToLiveSeconds"
|
||||
max={2147483647}
|
||||
min={1}
|
||||
@@ -583,6 +585,7 @@ exports[`SubSettingsComponent changeFeedPolicy hidden 1`] = `
|
||||
}
|
||||
/>
|
||||
<StyledTextFieldBase
|
||||
ariaLabel="Time to live in seconds"
|
||||
id="timeToLiveSeconds"
|
||||
max={2147483647}
|
||||
min={1}
|
||||
@@ -831,6 +834,7 @@ exports[`SubSettingsComponent renders 1`] = `
|
||||
}
|
||||
/>
|
||||
<StyledTextFieldBase
|
||||
ariaLabel="Time to live in seconds"
|
||||
id="timeToLiveSeconds"
|
||||
max={2147483647}
|
||||
min={1}
|
||||
|
||||
@@ -14,3 +14,7 @@
|
||||
.throughputInputSpacing > :not(:last-child) {
|
||||
margin-bottom: @DefaultSpace;
|
||||
}
|
||||
.capacitycalculator-link:focus{
|
||||
text-decoration: underline;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
@@ -9,8 +9,11 @@ import {
|
||||
Tree,
|
||||
TreeItem,
|
||||
TreeItemLayout,
|
||||
TreeOpenChangeData,
|
||||
TreeOpenChangeEvent,
|
||||
} from "@fluentui/react-components";
|
||||
import { MoreHorizontal20Regular } from "@fluentui/react-icons";
|
||||
import { tokens } from "@fluentui/react-theme";
|
||||
import * as React from "react";
|
||||
|
||||
export interface TreeNode2MenuItem {
|
||||
@@ -27,7 +30,7 @@ export interface TreeNode2 {
|
||||
children?: TreeNode2[];
|
||||
contextMenu?: TreeNode2MenuItem[];
|
||||
iconSrc?: string;
|
||||
// isExpanded?: boolean;
|
||||
isExpanded?: boolean;
|
||||
className?: string;
|
||||
isAlphaSorted?: boolean;
|
||||
// data?: any; // Piece of data corresponding to this node
|
||||
@@ -37,7 +40,7 @@ export interface TreeNode2 {
|
||||
isScrollable?: boolean;
|
||||
isSelected?: () => boolean;
|
||||
onClick?: () => void; // Only if a leaf, other click will expand/collapse
|
||||
onExpanded?: () => void;
|
||||
onExpanded?: () => Promise<void>;
|
||||
onCollapsed?: () => void;
|
||||
onContextMenuOpen?: () => void;
|
||||
}
|
||||
@@ -46,7 +49,6 @@ export interface TreeNode2ComponentProps {
|
||||
node: TreeNode2;
|
||||
className?: string;
|
||||
treeNodeId: string;
|
||||
globalOpenIds: string[];
|
||||
}
|
||||
|
||||
const getTreeIcon = (iconSrc: string): JSX.Element => <img src={iconSrc} alt="" style={{ width: 20, height: 20 }} />;
|
||||
@@ -54,20 +56,8 @@ const getTreeIcon = (iconSrc: string): JSX.Element => <img src={iconSrc} alt=""
|
||||
export const TreeNode2Component: React.FC<TreeNode2ComponentProps> = ({
|
||||
node,
|
||||
treeNodeId,
|
||||
globalOpenIds,
|
||||
}: TreeNode2ComponentProps): JSX.Element => {
|
||||
// const defaultOpenItems = node.isExpanded ? children?.map((child: TreeNode2) => child.label) : undefined;
|
||||
const [isExpanded, setIsExpanded] = React.useState<boolean>(false);
|
||||
|
||||
// Compute whether node is expanded
|
||||
React.useEffect(() => {
|
||||
const isNowExpanded = globalOpenIds && globalOpenIds.includes(treeNodeId);
|
||||
if (!isExpanded && isNowExpanded) {
|
||||
// Catch the transition non-expanded to expanded
|
||||
node.onExpanded?.();
|
||||
}
|
||||
setIsExpanded(isNowExpanded);
|
||||
}, [globalOpenIds, treeNodeId, node, isExpanded]);
|
||||
const [isLoading, setIsLoading] = React.useState<boolean>(false);
|
||||
|
||||
const getSortedChildren = (treeNode: TreeNode2): TreeNode2[] => {
|
||||
if (!treeNode || !treeNode.children) {
|
||||
@@ -95,8 +85,24 @@ export const TreeNode2Component: React.FC<TreeNode2ComponentProps> = ({
|
||||
return unsortedChildren;
|
||||
};
|
||||
|
||||
const onOpenChange = (_: TreeOpenChangeEvent, data: TreeOpenChangeData) => {
|
||||
if (!node.isExpanded && data.open && node.onExpanded) {
|
||||
// Catch the transition non-expanded to expanded
|
||||
setIsLoading(true);
|
||||
node.onExpanded?.().then(() => setIsLoading(false));
|
||||
} else if (node.isExpanded && !data.open && node.onCollapsed) {
|
||||
// Catch the transition expanded to non-expanded
|
||||
node.onCollapsed?.();
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<TreeItem value={treeNodeId} itemType={node.children !== undefined ? "branch" : "leaf"} style={{ height: "100%" }}>
|
||||
<TreeItem
|
||||
value={treeNodeId}
|
||||
itemType={node.children !== undefined ? "branch" : "leaf"}
|
||||
style={{ height: "100%" }}
|
||||
onOpenChange={onOpenChange}
|
||||
>
|
||||
<TreeItemLayout
|
||||
className={node.className}
|
||||
actions={
|
||||
@@ -117,22 +123,21 @@ export const TreeNode2Component: React.FC<TreeNode2ComponentProps> = ({
|
||||
</Menu>
|
||||
)
|
||||
}
|
||||
expandIcon={node.isLoading ? <Spinner size="extra-tiny" /> : undefined}
|
||||
expandIcon={isLoading ? <Spinner size="extra-tiny" /> : undefined}
|
||||
iconBefore={node.iconSrc && getTreeIcon(node.iconSrc)}
|
||||
style={{
|
||||
backgroundColor: node.isSelected && node.isSelected() ? tokens.colorNeutralBackground1Selected : undefined,
|
||||
}}
|
||||
>
|
||||
<span onClick={() => node.onClick?.()}>{node.label}</span>
|
||||
</TreeItemLayout>
|
||||
{!node.isLoading && node.children?.length > 0 && (
|
||||
<Tree
|
||||
// defaultOpenItems={defaultOpenItems}
|
||||
style={{ overflow: node.isScrollable ? "auto" : undefined }}
|
||||
>
|
||||
<Tree style={{ overflow: node.isScrollable ? "auto" : undefined }}>
|
||||
{getSortedChildren(node).map((childNode: TreeNode2) => (
|
||||
<TreeNode2Component
|
||||
key={childNode.label}
|
||||
node={childNode}
|
||||
treeNodeId={`${treeNodeId}/${childNode.label}`}
|
||||
globalOpenIds={globalOpenIds}
|
||||
/>
|
||||
))}
|
||||
</Tree>
|
||||
|
||||
@@ -33,6 +33,7 @@ import { isCapabilityEnabled, isServerlessAccount } from "Utils/CapabilityUtils"
|
||||
import { getUpsellMessage } from "Utils/PricingUtils";
|
||||
import { CollapsibleSectionComponent } from "../Controls/CollapsiblePanel/CollapsibleSectionComponent";
|
||||
import { ThroughputInput } from "../Controls/ThroughputInput/ThroughputInput";
|
||||
import "../Controls/ThroughputInput/ThroughputInput.less";
|
||||
import { ContainerSampleGenerator } from "../DataSamples/ContainerSampleGenerator";
|
||||
import Explorer from "../Explorer";
|
||||
import { useDatabases } from "../useDatabases";
|
||||
@@ -318,7 +319,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
placeholder="Type a new database id"
|
||||
size={40}
|
||||
className="panelTextField"
|
||||
aria-label="New database id"
|
||||
aria-label="New database id, Type a new database id"
|
||||
autoFocus
|
||||
tabIndex={0}
|
||||
value={this.state.newDatabaseId}
|
||||
@@ -424,7 +425,7 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
placeholder={`e.g., ${getCollectionName()}1`}
|
||||
size={40}
|
||||
className="panelTextField"
|
||||
aria-label={`${getCollectionName()} id`}
|
||||
aria-label={`${getCollectionName()} id, Example ${getCollectionName()}1`}
|
||||
value={this.state.collectionId}
|
||||
onChange={(event: React.ChangeEvent<HTMLInputElement>) =>
|
||||
this.setState({ collectionId: event.target.value })
|
||||
@@ -843,7 +844,11 @@ export class AddCollectionPanel extends React.Component<AddCollectionPanelProps,
|
||||
<Text variant="small">
|
||||
Azure Synapse Link is required for creating an analytical store{" "}
|
||||
{getCollectionName().toLocaleLowerCase()}. Enable Synapse Link for this Cosmos DB account.{" "}
|
||||
<Link href="https://aka.ms/cosmosdb-synapselink" target="_blank">
|
||||
<Link
|
||||
href="https://aka.ms/cosmosdb-synapselink"
|
||||
target="_blank"
|
||||
className="capacitycalculator-link"
|
||||
>
|
||||
Learn more
|
||||
</Link>
|
||||
</Text>
|
||||
|
||||
@@ -307,7 +307,7 @@ export const CassandraAddCollectionPane: FunctionComponent<CassandraAddCollectio
|
||||
multiline
|
||||
id="editor-area"
|
||||
rows={5}
|
||||
aria-label="Table Schema"
|
||||
ariaLabel="Table schema"
|
||||
value={userTableQuery}
|
||||
onChange={(e, newValue) => setUserTableQuery(newValue)}
|
||||
/>
|
||||
|
||||
@@ -52,7 +52,7 @@ export const SettingsPane: FunctionComponent = () => {
|
||||
const shouldShowCrossPartitionOption = userContext.apiType !== "Gremlin";
|
||||
const shouldShowParallelismOption = userContext.apiType !== "Gremlin";
|
||||
const shouldShowPriorityLevelOption =
|
||||
userContext.features.enablePriorityBasedThrottling && userContext.apiType === "SQL";
|
||||
userContext.databaseAccount?.properties?.enablePriorityBasedExecution && userContext.apiType === "SQL";
|
||||
const handlerOnSubmit = (e: MouseEvent<HTMLButtonElement>) => {
|
||||
setIsExecuting(true);
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ exports[`AddCollectionPanel should render Default properly 1`] = `
|
||||
className="panelGroupSpacing"
|
||||
>
|
||||
<input
|
||||
aria-label="New database id"
|
||||
aria-label="New database id, Type a new database id"
|
||||
aria-required={true}
|
||||
autoComplete="off"
|
||||
autoFocus={true}
|
||||
@@ -178,7 +178,7 @@ exports[`AddCollectionPanel should render Default properly 1`] = `
|
||||
</StyledTooltipHostBase>
|
||||
</Stack>
|
||||
<input
|
||||
aria-label="Container id"
|
||||
aria-label="Container id, Example Container1"
|
||||
aria-required={true}
|
||||
autoComplete="off"
|
||||
className="panelTextField"
|
||||
@@ -400,6 +400,7 @@ exports[`AddCollectionPanel should render Default properly 1`] = `
|
||||
. Enable Synapse Link for this Cosmos DB account.
|
||||
|
||||
<StyledLinkBase
|
||||
className="capacitycalculator-link"
|
||||
href="https://aka.ms/cosmosdb-synapselink"
|
||||
target="_blank"
|
||||
>
|
||||
|
||||
@@ -60,7 +60,9 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
||||
<Text>
|
||||
Ask Copilot to generate a query by describing the query in your words.
|
||||
<br />
|
||||
<Link href="https://aka.ms/cdb-copilot-learn-more">Learn more</Link>
|
||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-learn-more">
|
||||
Learn more
|
||||
</Link>
|
||||
</Text>
|
||||
</Stack.Item>
|
||||
<Stack.Item align="center" className="text">
|
||||
@@ -78,7 +80,9 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
||||
<Text>
|
||||
AI-generated content can have mistakes. Make sure it’s accurate and appropriate before using it.
|
||||
<br />
|
||||
<Link href="https://aka.ms/cdb-copilot-preview-terms">Read preview terms</Link>
|
||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-preview-terms">
|
||||
Read preview terms
|
||||
</Link>
|
||||
</Text>
|
||||
</Stack.Item>
|
||||
<Stack.Item align="center" className="text">
|
||||
@@ -97,7 +101,9 @@ export const WelcomeModal = ({ visible }: { visible: boolean }): JSX.Element =>
|
||||
While in Private Preview, Query Copilot is setup to work on sample database we have configured for you
|
||||
at no cost.
|
||||
<br />
|
||||
<Link href="https://aka.ms/cdb-copilot-learn-more">Learn more</Link>
|
||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-learn-more">
|
||||
Learn more
|
||||
</Link>
|
||||
</Text>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
|
||||
@@ -103,6 +103,7 @@ exports[`Query Copilot Welcome Modal snapshot test should render when isOpen is
|
||||
<br />
|
||||
<StyledLinkBase
|
||||
href="https://aka.ms/cdb-copilot-learn-more"
|
||||
target="_blank"
|
||||
>
|
||||
Learn more
|
||||
</StyledLinkBase>
|
||||
@@ -139,6 +140,7 @@ exports[`Query Copilot Welcome Modal snapshot test should render when isOpen is
|
||||
<br />
|
||||
<StyledLinkBase
|
||||
href="https://aka.ms/cdb-copilot-preview-terms"
|
||||
target="_blank"
|
||||
>
|
||||
Read preview terms
|
||||
</StyledLinkBase>
|
||||
@@ -175,6 +177,7 @@ exports[`Query Copilot Welcome Modal snapshot test should render when isOpen is
|
||||
<br />
|
||||
<StyledLinkBase
|
||||
href="https://aka.ms/cdb-copilot-learn-more"
|
||||
target="_blank"
|
||||
>
|
||||
Learn more
|
||||
</StyledLinkBase>
|
||||
|
||||
@@ -65,7 +65,9 @@ export const WelcomeSidebarModal: React.FC = (): JSX.Element => {
|
||||
<Text>
|
||||
Ask Copilot to generate a query by describing the query in your words.
|
||||
<br />
|
||||
<Link href="https://aka.ms/cdb-copilot-learn-more">Learn more</Link>
|
||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-learn-more">
|
||||
Learn more
|
||||
</Link>
|
||||
</Text>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
@@ -87,7 +89,9 @@ export const WelcomeSidebarModal: React.FC = (): JSX.Element => {
|
||||
<Text>
|
||||
AI-generated content can have mistakes. Make sure it’s accurate and appropriate before using it.
|
||||
<br />
|
||||
<Link href="https://aka.ms/cdb-copilot-preview-terms">Read preview terms</Link>
|
||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-preview-terms">
|
||||
Read preview terms
|
||||
</Link>
|
||||
</Text>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
@@ -109,7 +113,9 @@ export const WelcomeSidebarModal: React.FC = (): JSX.Element => {
|
||||
<Text>
|
||||
Copilot is setup on a sample database we have configured for you at no cost
|
||||
<br />
|
||||
<Link href="https://aka.ms/cdb-copilot-learn-more">Learn more</Link>
|
||||
<Link target="_blank" href="https://aka.ms/cdb-copilot-learn-more">
|
||||
Learn more
|
||||
</Link>
|
||||
</Text>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
import * as ko from "knockout";
|
||||
import * as _ from "underscore";
|
||||
|
||||
import QueryTablesTab from "../../Tabs/QueryTablesTab";
|
||||
import * as Constants from "../Constants";
|
||||
import * as ViewModels from "../../../Contracts/ViewModels";
|
||||
import * as Entities from "../Entities";
|
||||
import * as Utilities from "../Utilities";
|
||||
import * as DataTableBuilder from "./DataTableBuilder";
|
||||
import DataTableOperationManager from "./DataTableOperationManager";
|
||||
import * as DataTableOperations from "./DataTableOperations";
|
||||
import QueryTablesTab from "../../Tabs/QueryTablesTab";
|
||||
import TableEntityListViewModel from "./TableEntityListViewModel";
|
||||
import * as Utilities from "../Utilities";
|
||||
import * as Entities from "../Entities";
|
||||
|
||||
/**
|
||||
* Custom binding manager of datatable
|
||||
@@ -41,7 +40,6 @@ function bindDataTable(element: any, valueAccessor: any, allBindings: any, viewM
|
||||
|
||||
createDataTable(0, tableEntityListViewModel, queryTablesTab); // Fake a DataTable to start.
|
||||
$(window).resize(updateTableScrollableRegionMetrics);
|
||||
operationManager.focusTable(); // Also selects the first row if needed.
|
||||
}
|
||||
|
||||
function onTableColumnChange(enablePrompt: boolean = true, queryTablesTab: QueryTablesTab) {
|
||||
@@ -364,10 +362,6 @@ function updateDataTableFocus(queryTablesTabId: string): void {
|
||||
if ($activeElement.is(".sorting_asc") || $activeElement.is(".sorting_desc")) {
|
||||
// If table header is selected, focus is shifted to the selected element as part of accessibility
|
||||
$activeElement && $activeElement.focus();
|
||||
} else {
|
||||
// If some control is active, we don't give focus back to the table,
|
||||
// just select the first row if needed (empty selection).
|
||||
operationManager.selectFirstIfNeeded();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@ import {
|
||||
DetailsList,
|
||||
DetailsListLayoutMode,
|
||||
IColumn,
|
||||
Icon,
|
||||
Link,
|
||||
Pivot,
|
||||
PivotItem,
|
||||
SelectionMode,
|
||||
Stack,
|
||||
Text,
|
||||
TooltipHost,
|
||||
} from "@fluentui/react";
|
||||
import { HttpHeaders, NormalizedEventKey } from "Common/Constants";
|
||||
import MongoUtility from "Common/MongoUtility";
|
||||
import { InfoTooltip } from "Common/Tooltip/InfoTooltip";
|
||||
import { QueryMetrics } from "Contracts/DataModels";
|
||||
import { EditorReact } from "Explorer/Controls/Editor/EditorReact";
|
||||
import { IDocument } from "Explorer/Tabs/QueryTab/QueryTabComponent";
|
||||
@@ -51,11 +53,33 @@ export const QueryResultSection: React.FC<QueryResultProps> = ({
|
||||
|
||||
const onRender = (item: IDocument): JSX.Element => (
|
||||
<>
|
||||
<InfoTooltip>{`${item.toolTip}`}</InfoTooltip>
|
||||
<Text style={{ paddingLeft: 10, margin: 0 }}>{`${item.metric}`}</Text>
|
||||
</>
|
||||
);
|
||||
const columns: IColumn[] = [
|
||||
{
|
||||
key: "column1",
|
||||
name: "",
|
||||
minWidth: 10,
|
||||
maxWidth: 12,
|
||||
data: String,
|
||||
fieldName: "",
|
||||
onRender: (item: IDocument) => {
|
||||
if (item.toolTip !== "") {
|
||||
return (
|
||||
<>
|
||||
<TooltipHost content={`${item.toolTip}`}>
|
||||
<Link style={{ color: "#323130" }}>
|
||||
<Icon iconName="Info" ariaLabel={`${item.toolTip}`} className="panelInfoIcon" tabIndex={0} />
|
||||
</Link>
|
||||
</TooltipHost>
|
||||
</>
|
||||
);
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
key: "column2",
|
||||
name: "METRIC",
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
TreeOpenChangeEvent,
|
||||
createLightTheme,
|
||||
} from "@fluentui/react-components";
|
||||
import { TreeNode2Component } from "Explorer/Controls/TreeComponent2/TreeNode2Component";
|
||||
import { TreeNode2, TreeNode2Component } from "Explorer/Controls/TreeComponent2/TreeNode2Component";
|
||||
import { useDatabaseTreeNodes } from "Explorer/Tree2/useDatabaseTreeNodes";
|
||||
import * as React from "react";
|
||||
import shallow from "zustand/shallow";
|
||||
@@ -69,16 +69,45 @@ export const ResourceTree2: React.FC<ResourceTreeProps> = ({ container }: Resour
|
||||
);
|
||||
// const { activeTab } = useTabs();
|
||||
const databaseTreeNodes = useDatabaseTreeNodes(container, isNotebookEnabled);
|
||||
const dataNodeTree = {
|
||||
const [openItems, setOpenItems] = React.useState<Iterable<TreeItemValue>>([DATA_TREE_LABEL]);
|
||||
|
||||
const dataNodeTree: TreeNode2 = {
|
||||
id: "data",
|
||||
label: DATA_TREE_LABEL,
|
||||
isExpanded: true,
|
||||
className: "accordionItemHeader",
|
||||
children: databaseTreeNodes,
|
||||
isScrollable: true,
|
||||
};
|
||||
|
||||
const [openItems, setOpenItems] = React.useState<Iterable<TreeItemValue>>([DATA_TREE_LABEL]);
|
||||
React.useEffect(() => {
|
||||
// Compute open items based on node.isExpanded
|
||||
const updateOpenItems = (node: TreeNode2, parentNodeId: string): void => {
|
||||
// This will look for ANY expanded node, event if its parent node isn't expanded
|
||||
// and add it to the openItems list
|
||||
const globalId = parentNodeId === undefined ? node.label : `${parentNodeId}/${node.label}`;
|
||||
|
||||
if (node.isExpanded) {
|
||||
let found = false;
|
||||
for (const id of openItems) {
|
||||
if (id === globalId) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
setOpenItems((prevOpenItems) => [...prevOpenItems, globalId]);
|
||||
}
|
||||
}
|
||||
|
||||
if (node.children) {
|
||||
for (const child of node.children) {
|
||||
updateOpenItems(child, globalId);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
updateOpenItems(dataNodeTree, undefined);
|
||||
}, [databaseTreeNodes]);
|
||||
|
||||
const handleOpenChange = (event: TreeOpenChangeEvent, data: TreeOpenChangeData) => setOpenItems(data.openItems);
|
||||
|
||||
@@ -93,13 +122,7 @@ export const ResourceTree2: React.FC<ResourceTreeProps> = ({ container }: Resour
|
||||
style={{ height: "100%", width: "290px" }}
|
||||
>
|
||||
{[dataNodeTree].map((node) => (
|
||||
<TreeNode2Component
|
||||
key={node.label}
|
||||
className="dataResourceTree"
|
||||
node={node}
|
||||
treeNodeId={node.label}
|
||||
globalOpenIds={[...openItems].map((item) => item.toString())}
|
||||
/>
|
||||
<TreeNode2Component key={node.label} className="dataResourceTree" node={node} treeNodeId={node.label} />
|
||||
))}
|
||||
</Tree>
|
||||
</FluentProvider>
|
||||
|
||||
@@ -45,7 +45,7 @@ export const buildCollectionNode = (
|
||||
// push to most recent
|
||||
mostRecentActivity.collectionWasOpened(userContext.databaseAccount?.id, collection);
|
||||
},
|
||||
onExpanded: () => {
|
||||
onExpanded: async () => {
|
||||
// Rewritten version of expandCollapseCollection
|
||||
useSelectedNode.getState().setSelectedNode(collection);
|
||||
useCommandBar.getState().setContextButtons([]);
|
||||
@@ -53,9 +53,16 @@ export const buildCollectionNode = (
|
||||
(tab: TabsBase) =>
|
||||
tab.collection?.id() === collection.id() && tab.collection.databaseId === collection.databaseId
|
||||
);
|
||||
useDatabases.getState().updateDatabase(database);
|
||||
},
|
||||
isSelected: () => useSelectedNode.getState().isDataNodeSelected(collection.databaseId, collection.id()),
|
||||
onContextMenuOpen: () => useSelectedNode.getState().setSelectedNode(collection),
|
||||
onCollapsed: () => {
|
||||
collection.collapseCollection();
|
||||
// useCommandBar.getState().setContextButtons([]);
|
||||
useDatabases.getState().updateDatabase(database);
|
||||
},
|
||||
isExpanded: collection.isCollectionExpanded(),
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -25,15 +25,22 @@ export const useDatabaseTreeNodes = (container: Explorer, isNotebookEnabled: boo
|
||||
contextMenu: ResourceTreeContextMenuButtonFactory.createDatabaseContextMenu(container, database.id()),
|
||||
onExpanded: async () => {
|
||||
useSelectedNode.getState().setSelectedNode(database);
|
||||
if (databaseNode.children?.length === 0) {
|
||||
if (!databaseNode.children || databaseNode.children?.length === 0) {
|
||||
databaseNode.isLoading = true;
|
||||
}
|
||||
await database.expandDatabase();
|
||||
databaseNode.isLoading = false;
|
||||
useCommandBar.getState().setContextButtons([]);
|
||||
refreshActiveTab((tab: TabsBase) => tab.collection?.databaseId === database.id());
|
||||
useDatabases.getState().updateDatabase(database);
|
||||
},
|
||||
onContextMenuOpen: () => useSelectedNode.getState().setSelectedNode(database),
|
||||
isExpanded: database.isDatabaseExpanded(),
|
||||
onCollapsed: () => {
|
||||
database.collapseDatabase();
|
||||
// useCommandBar.getState().setContextButtons([]);
|
||||
useDatabases.getState().updateDatabase(database);
|
||||
},
|
||||
};
|
||||
|
||||
if (database.isDatabaseShared() && configContext.platform !== Platform.Fabric) {
|
||||
|
||||
@@ -36,7 +36,6 @@ export type Features = {
|
||||
readonly enableLegacyMongoShellV2Debug: boolean;
|
||||
readonly loadLegacyMongoShellFromBE: boolean;
|
||||
readonly enableCopilot: boolean;
|
||||
readonly enablePriorityBasedThrottling: boolean;
|
||||
readonly copilotVersion?: string;
|
||||
readonly disableCopilotPhoenixGateaway: boolean;
|
||||
readonly enableCopilotFullSchema: boolean;
|
||||
@@ -108,7 +107,6 @@ export function extractFeatures(given = new URLSearchParams(window.location.sear
|
||||
enableLegacyMongoShellV2: "true" === get("enablelegacymongoshellv2"),
|
||||
enableLegacyMongoShellV2Debug: "true" === get("enablelegacymongoshellv2debug"),
|
||||
loadLegacyMongoShellFromBE: "true" === get("loadlegacymongoshellfrombe"),
|
||||
enablePriorityBasedThrottling: "true" === get("enableprioritybasedthrottling"),
|
||||
enableCopilot: "true" === get("enablecopilot", "true"),
|
||||
copilotVersion: get("copilotversion") ?? "v1.0",
|
||||
disableCopilotPhoenixGateaway: "true" === get("disablecopilotphoenixgateaway"),
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists the Cassandra keyspaces under an existing Azure Cosmos DB database account. */
|
||||
export async function listCassandraKeyspaces(
|
||||
@@ -196,3 +196,100 @@ export async function migrateCassandraTableToManualThroughput(
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/tables/${tableName}/throughputSettings/default/migrateToManualThroughput`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||
}
|
||||
|
||||
/* Lists the Cassandra materialized views under an existing Azure Cosmos DB database account. */
|
||||
export async function listCassandraViews(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string
|
||||
): Promise<Types.CassandraViewListResult> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Gets the Cassandra view under an existing Azure Cosmos DB database account. */
|
||||
export async function getCassandraView(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string
|
||||
): Promise<Types.CassandraViewGetResults> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Create or update an Azure Cosmos DB Cassandra View */
|
||||
export async function createUpdateCassandraView(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string,
|
||||
body: Types.CassandraViewCreateUpdateParameters
|
||||
): Promise<Types.CassandraViewGetResults | void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "PUT", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Deletes an existing Azure Cosmos DB Cassandra view. */
|
||||
export async function deleteCassandraView(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string
|
||||
): Promise<void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "DELETE", apiVersion });
|
||||
}
|
||||
|
||||
/* Gets the RUs per second of the Cassandra view under an existing Azure Cosmos DB database account with the provided name. */
|
||||
export async function getCassandraViewThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string
|
||||
): Promise<Types.ThroughputSettingsGetResults> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}/throughputSettings/default`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Update RUs per second of an Azure Cosmos DB Cassandra view */
|
||||
export async function updateCassandraViewThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string,
|
||||
body: Types.ThroughputSettingsUpdateParameters
|
||||
): Promise<Types.ThroughputSettingsGetResults | void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}/throughputSettings/default`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "PUT", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Migrate an Azure Cosmos DB Cassandra view from manual throughput to autoscale */
|
||||
export async function migrateCassandraViewToAutoscale(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string
|
||||
): Promise<Types.ThroughputSettingsGetResults | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}/throughputSettings/default/migrateToAutoscale`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||
}
|
||||
|
||||
/* Migrate an Azure Cosmos DB Cassandra view from autoscale to manual throughput */
|
||||
export async function migrateCassandraViewToManualThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
keyspaceName: string,
|
||||
viewName: string
|
||||
): Promise<Types.ThroughputSettingsGetResults | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/cassandraKeyspaces/${keyspaceName}/views/${viewName}/throughputSettings/default/migrateToManualThroughput`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||
}
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given database account and collection. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given collection, split by partition. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given collection and region, split by partition. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given database account, collection and region. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given database account and database. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given database account and region. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the properties of an existing Azure Cosmos DB database account. */
|
||||
export async function get(
|
||||
|
||||
56
src/Utils/arm/generatedClients/cosmos/graphResources.ts
Normal file
56
src/Utils/arm/generatedClients/cosmos/graphResources.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
AUTOGENERATED FILE
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists the graphs under an existing Azure Cosmos DB database account. */
|
||||
export async function listGraphs(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string
|
||||
): Promise<Types.GraphResourcesListResult> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/graphs`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Gets the Graph resource under an existing Azure Cosmos DB database account with the provided name. */
|
||||
export async function getGraph(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
graphName: string
|
||||
): Promise<Types.GraphResourceGetResults> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/graphs/${graphName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Create or update an Azure Cosmos DB Graph. */
|
||||
export async function createUpdateGraph(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
graphName: string,
|
||||
body: Types.GraphResourceCreateUpdateParameters
|
||||
): Promise<Types.GraphResourceGetResults | void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/graphs/${graphName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "PUT", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Deletes an existing Azure Cosmos DB Graph Resource. */
|
||||
export async function deleteGraphResource(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
graphName: string
|
||||
): Promise<void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/graphs/${graphName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "DELETE", apiVersion });
|
||||
}
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists the Gremlin databases under an existing Azure Cosmos DB database account. */
|
||||
export async function listGremlinDatabases(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* List Cosmos DB locations and their properties */
|
||||
export async function list(subscriptionId: string): Promise<Types.LocationListResult | Types.CloudError> {
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists the MongoDB databases under an existing Azure Cosmos DB database account. */
|
||||
export async function listMongoDBDatabases(
|
||||
@@ -100,6 +100,56 @@ export async function migrateMongoDBDatabaseToManualThroughput(
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||
}
|
||||
|
||||
/* Retrieve throughput distribution for an Azure Cosmos DB MongoDB database */
|
||||
export async function mongoDBDatabaseRetrieveThroughputDistribution(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
body: Types.RetrieveThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/mongodbDatabases/${databaseName}/throughputSettings/default/retrieveThroughputDistribution`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Redistribute throughput for an Azure Cosmos DB MongoDB database */
|
||||
export async function mongoDBDatabaseRedistributeThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
body: Types.RedistributeThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/mongodbDatabases/${databaseName}/throughputSettings/default/redistributeThroughput`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Retrieve throughput distribution for an Azure Cosmos DB MongoDB container */
|
||||
export async function mongoDBContainerRetrieveThroughputDistribution(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
collectionName: string,
|
||||
body: Types.RetrieveThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/mongodbDatabases/${databaseName}/collections/${collectionName}/throughputSettings/default/retrieveThroughputDistribution`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Redistribute throughput for an Azure Cosmos DB MongoDB container */
|
||||
export async function mongoDBContainerRedistributeThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
collectionName: string,
|
||||
body: Types.RedistributeThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/mongodbDatabases/${databaseName}/collections/${collectionName}/throughputSettings/default/redistributeThroughput`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Lists the MongoDB collection under an existing Azure Cosmos DB database account. */
|
||||
export async function listMongoDBCollections(
|
||||
subscriptionId: string,
|
||||
@@ -148,6 +198,31 @@ export async function deleteMongoDBCollection(
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "DELETE", apiVersion });
|
||||
}
|
||||
|
||||
/* Merges the partitions of a MongoDB database */
|
||||
export async function mongoDBDatabasePartitionMerge(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
body: Types.MergeParameters
|
||||
): Promise<Types.PhysicalPartitionStorageInfoCollection | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/mongodbDatabases/${databaseName}/partitionMerge`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Merges the partitions of a MongoDB Collection */
|
||||
export async function listMongoDBCollectionPartitionMerge(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
collectionName: string,
|
||||
body: Types.MergeParameters
|
||||
): Promise<Types.PhysicalPartitionStorageInfoCollection | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/mongodbDatabases/${databaseName}/collections/${collectionName}/partitionMerge`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Gets the RUs per second of the MongoDB collection under an existing Azure Cosmos DB database account with the provided name. */
|
||||
export async function getMongoDBCollectionThroughput(
|
||||
subscriptionId: string,
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists all of the available Cosmos DB Resource Provider operations. */
|
||||
export async function list(): Promise<Types.OperationListResult> {
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given partition key range id. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given partition key range id and region. */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given database account. This url is only for PBS and Replication Latency data */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given account, source and target region. This url is only for PBS and Replication Latency data */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Retrieves the metrics determined by the given filter for the given account target region. This url is only for PBS and Replication Latency data */
|
||||
export async function listMetrics(
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists the SQL databases under an existing Azure Cosmos DB database account. */
|
||||
export async function listSqlDatabases(
|
||||
@@ -100,6 +100,42 @@ export async function migrateSqlDatabaseToManualThroughput(
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||
}
|
||||
|
||||
/* Lists the ClientEncryptionKeys under an existing Azure Cosmos DB SQL database. */
|
||||
export async function listClientEncryptionKeys(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string
|
||||
): Promise<Types.ClientEncryptionKeysListResult> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/clientEncryptionKeys`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Gets the ClientEncryptionKey under an existing Azure Cosmos DB SQL database. */
|
||||
export async function getClientEncryptionKey(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
clientEncryptionKeyName: string
|
||||
): Promise<Types.ClientEncryptionKeyGetResults> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/clientEncryptionKeys/${clientEncryptionKeyName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Create or update a ClientEncryptionKey. This API is meant to be invoked via tools such as the Azure Powershell (instead of directly). */
|
||||
export async function createUpdateClientEncryptionKey(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
clientEncryptionKeyName: string,
|
||||
body: Types.ClientEncryptionKeyCreateUpdateParameters
|
||||
): Promise<Types.ClientEncryptionKeyGetResults | void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/clientEncryptionKeys/${clientEncryptionKeyName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "PUT", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Lists the SQL container under an existing Azure Cosmos DB database account. */
|
||||
export async function listSqlContainers(
|
||||
subscriptionId: string,
|
||||
@@ -148,6 +184,31 @@ export async function deleteSqlContainer(
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "DELETE", apiVersion });
|
||||
}
|
||||
|
||||
/* Merges the partitions of a SQL database */
|
||||
export async function sqlDatabasePartitionMerge(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
body: Types.MergeParameters
|
||||
): Promise<Types.PhysicalPartitionStorageInfoCollection | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/partitionMerge`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Merges the partitions of a SQL Container */
|
||||
export async function listSqlContainerPartitionMerge(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
containerName: string,
|
||||
body: Types.MergeParameters
|
||||
): Promise<Types.PhysicalPartitionStorageInfoCollection | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/containers/${containerName}/partitionMerge`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Gets the RUs per second of the SQL container under an existing Azure Cosmos DB database account. */
|
||||
export async function getSqlContainerThroughput(
|
||||
subscriptionId: string,
|
||||
@@ -197,40 +258,54 @@ export async function migrateSqlContainerToManualThroughput(
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion });
|
||||
}
|
||||
|
||||
/* Lists the ClientEncryptionKeys under an existing Azure Cosmos DB SQL database. */
|
||||
export async function listClientEncryptionKeys(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string
|
||||
): Promise<Types.ClientEncryptionKeysListResult> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/clientEncryptionKeys`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
}
|
||||
|
||||
/* Gets the ClientEncryptionKey under an existing Azure Cosmos DB SQL database. */
|
||||
export async function getClientEncryptionKey(
|
||||
/* Retrieve throughput distribution for an Azure Cosmos DB SQL database */
|
||||
export async function sqlDatabaseRetrieveThroughputDistribution(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
clientEncryptionKeyName: string
|
||||
): Promise<Types.ClientEncryptionKeyGetResults> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/clientEncryptionKeys/${clientEncryptionKeyName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "GET", apiVersion });
|
||||
body: Types.RetrieveThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/throughputSettings/default/retrieveThroughputDistribution`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Create or update a ClientEncryptionKey. This API is meant to be invoked via tools such as the Azure Powershell (instead of directly). */
|
||||
export async function createUpdateClientEncryptionKey(
|
||||
/* Redistribute throughput for an Azure Cosmos DB SQL database */
|
||||
export async function sqlDatabaseRedistributeThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
clientEncryptionKeyName: string,
|
||||
body: Types.ClientEncryptionKeyCreateUpdateParameters
|
||||
): Promise<Types.ClientEncryptionKeyGetResults | void> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/clientEncryptionKeys/${clientEncryptionKeyName}`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "PUT", apiVersion, body });
|
||||
body: Types.RedistributeThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/throughputSettings/default/redistributeThroughput`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Retrieve throughput distribution for an Azure Cosmos DB SQL container */
|
||||
export async function sqlContainerRetrieveThroughputDistribution(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
containerName: string,
|
||||
body: Types.RetrieveThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/containers/${containerName}/throughputSettings/default/retrieveThroughputDistribution`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Redistribute throughput for an Azure Cosmos DB SQL container */
|
||||
export async function sqlContainerRedistributeThroughput(
|
||||
subscriptionId: string,
|
||||
resourceGroupName: string,
|
||||
accountName: string,
|
||||
databaseName: string,
|
||||
containerName: string,
|
||||
body: Types.RedistributeThroughputParameters
|
||||
): Promise<Types.PhysicalPartitionThroughputInfoResult | void | Types.CloudError> {
|
||||
const path = `/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DocumentDB/databaseAccounts/${accountName}/sqlDatabases/${databaseName}/containers/${containerName}/throughputSettings/default/redistributeThroughput`;
|
||||
return armRequest({ host: configContext.ARM_ENDPOINT, path, method: "POST", apiVersion, body });
|
||||
}
|
||||
|
||||
/* Lists the SQL storedProcedure under an existing Azure Cosmos DB database account. */
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
import { armRequest } from "../../request";
|
||||
import * as Types from "./types";
|
||||
import { configContext } from "../../../../ConfigContext";
|
||||
const apiVersion = "2023-04-15";
|
||||
const apiVersion = "2023-09-15-preview";
|
||||
|
||||
/* Lists the Tables under an existing Azure Cosmos DB database account. */
|
||||
export async function listTables(
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Run "npm run generateARMClients" to regenerate
|
||||
Edting this file directly should be done with extreme caution as not to diverge from ARM REST specs
|
||||
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/2023-04-15/cosmos-db.json
|
||||
Generated from: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/2023-09-15-preview/cosmos-db.json
|
||||
*/
|
||||
|
||||
/* The List operation response, that contains the client encryption keys and their properties. */
|
||||
@@ -18,6 +18,12 @@ export interface DatabaseAccountsListResult {
|
||||
readonly value?: DatabaseAccountGetResults[];
|
||||
}
|
||||
|
||||
/* The List operation response, that contains the Graph resource and their properties. */
|
||||
export interface GraphResourcesListResult {
|
||||
/* List of Graph resource and their properties. */
|
||||
readonly value?: GraphResourceGetResults[];
|
||||
}
|
||||
|
||||
/* The List operation response, that contains the SQL databases and their properties. */
|
||||
export interface SqlDatabaseListResult {
|
||||
/* List of SQL databases and their properties. */
|
||||
@@ -90,6 +96,12 @@ export interface GremlinGraphListResult {
|
||||
readonly value?: GremlinGraphGetResults[];
|
||||
}
|
||||
|
||||
/* The List operation response, that contains the Cassandra views and their properties. */
|
||||
export interface CassandraViewListResult {
|
||||
/* List of Cassandra views and their properties. */
|
||||
readonly value?: CassandraViewGetResults[];
|
||||
}
|
||||
|
||||
/* Error Response. */
|
||||
export interface ErrorResponse {
|
||||
/* Error code. */
|
||||
@@ -155,6 +167,9 @@ export interface ARMResourceProperties {
|
||||
location?: string;
|
||||
/* undocumented */
|
||||
tags?: Tags;
|
||||
|
||||
/* undocumented */
|
||||
identity?: ManagedServiceIdentity;
|
||||
}
|
||||
|
||||
/* The resource model definition for a ARM proxy resource. It will have everything other than required location and tags */
|
||||
@@ -234,6 +249,20 @@ export type SqlDatabaseGetResults = ARMResourceProperties & {
|
||||
properties?: SqlDatabaseGetProperties;
|
||||
};
|
||||
|
||||
/* The properties of an Azure Cosmos DB SQL database */
|
||||
export interface GraphResourceGetProperties {
|
||||
/* undocumented */
|
||||
resource?: GraphResource;
|
||||
/* undocumented */
|
||||
options?: OptionsResource;
|
||||
}
|
||||
|
||||
/* An Azure Cosmos DB Graph resource. */
|
||||
export type GraphResourceGetResults = ARMResourceProperties & {
|
||||
/* The properties of an Azure Cosmos DB Graph resource. */
|
||||
properties?: GraphResourceGetProperties;
|
||||
};
|
||||
|
||||
/* The properties of an Azure Cosmos DB SQL database */
|
||||
export interface SqlDatabaseGetProperties {
|
||||
/* undocumented */
|
||||
@@ -390,6 +419,20 @@ export interface GremlinGraphGetProperties {
|
||||
options?: OptionsResource;
|
||||
}
|
||||
|
||||
/* An Azure Cosmos DB Cassandra view. */
|
||||
export type CassandraViewGetResults = ARMResourceProperties & {
|
||||
/* The properties of an Azure Cosmos DB Cassandra view */
|
||||
properties?: CassandraViewGetProperties;
|
||||
};
|
||||
|
||||
/* The properties of an Azure Cosmos DB Cassandra view */
|
||||
export interface CassandraViewGetProperties {
|
||||
/* undocumented */
|
||||
resource?: CassandraViewResource & ExtendedResourceProperties;
|
||||
/* undocumented */
|
||||
options?: OptionsResource;
|
||||
}
|
||||
|
||||
/* The consistency policy for the Cosmos DB database account. */
|
||||
export interface ConsistencyPolicy {
|
||||
/* The default consistency level and configuration settings of the Cosmos DB account. */
|
||||
@@ -502,18 +545,33 @@ export interface DatabaseAccountGetProperties {
|
||||
/* An array that contains the Resource Ids for Network Acl Bypass for the Cosmos DB account. */
|
||||
networkAclBypassResourceIds?: unknown[];
|
||||
|
||||
/* The Object representing the different Diagnostic log settings for the Cosmos DB Account. */
|
||||
diagnosticLogSettings?: DiagnosticLogSettings;
|
||||
|
||||
/* Opt-out of local authentication and ensure only MSI and AAD can be used exclusively for authentication. */
|
||||
disableLocalAuth?: boolean;
|
||||
/* The object that represents all properties related to capacity enforcement on an account. */
|
||||
capacity?: Capacity;
|
||||
|
||||
/* Flag to indicate whether to enable MaterializedViews on the Cosmos DB account */
|
||||
enableMaterializedViews?: boolean;
|
||||
/* The object that represents the metadata for the Account Keys of the Cosmos DB account. */
|
||||
keysMetadata?: DatabaseAccountKeysMetadata;
|
||||
|
||||
/* Flag to indicate enabling/disabling of Partition Merge feature on the account */
|
||||
enablePartitionMerge?: boolean;
|
||||
/* Flag to indicate enabling/disabling of Burst Capacity Preview feature on the account */
|
||||
enableBurstCapacity?: boolean;
|
||||
/* Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and Mongo API's, which only work with Tls 1.2. */
|
||||
minimalTlsVersion?: MinimalTlsVersion;
|
||||
|
||||
/* Indicates the status of the Customer Managed Key feature on the account. In case there are errors, the property provides troubleshooting guidance. */
|
||||
customerManagedKeyStatus?: CustomerManagedKeyStatus;
|
||||
|
||||
/* Flag to indicate enabling/disabling of Priority Based Execution Preview feature on the account */
|
||||
enablePriorityBasedExecution?: boolean;
|
||||
/* Enum to indicate default Priority Level of request for Priority Based Execution. */
|
||||
defaultPriorityLevel?: DefaultPriorityLevel;
|
||||
}
|
||||
|
||||
/* Properties to create and update Azure Cosmos DB database accounts. */
|
||||
@@ -581,6 +639,9 @@ export interface DatabaseAccountCreateUpdateProperties {
|
||||
/* An array that contains the Resource Ids for Network Acl Bypass for the Cosmos DB account. */
|
||||
networkAclBypassResourceIds?: unknown[];
|
||||
|
||||
/* The Object representing the different Diagnostic log settings for the Cosmos DB Account. */
|
||||
diagnosticLogSettings?: DiagnosticLogSettings;
|
||||
|
||||
/* Opt-out of local authentication and ensure only MSI and AAD can be used exclusively for authentication. */
|
||||
disableLocalAuth?: boolean;
|
||||
/* Parameters to indicate the information about the restore. */
|
||||
@@ -589,13 +650,25 @@ export interface DatabaseAccountCreateUpdateProperties {
|
||||
/* The object that represents all properties related to capacity enforcement on an account. */
|
||||
capacity?: Capacity;
|
||||
|
||||
/* Flag to indicate whether to enable MaterializedViews on the Cosmos DB account */
|
||||
enableMaterializedViews?: boolean;
|
||||
/* This property is ignored during the update/create operation, as the metadata is read-only. The object represents the metadata for the Account Keys of the Cosmos DB account. */
|
||||
keysMetadata?: DatabaseAccountKeysMetadata;
|
||||
|
||||
/* Flag to indicate enabling/disabling of Partition Merge feature on the account */
|
||||
enablePartitionMerge?: boolean;
|
||||
/* Flag to indicate enabling/disabling of Burst Capacity Preview feature on the account */
|
||||
enableBurstCapacity?: boolean;
|
||||
/* Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and Mongo API's, which only work with Tls 1.2. */
|
||||
minimalTlsVersion?: MinimalTlsVersion;
|
||||
|
||||
/* Indicates the status of the Customer Managed Key feature on the account. In case there are errors, the property provides troubleshooting guidance. */
|
||||
customerManagedKeyStatus?: CustomerManagedKeyStatus;
|
||||
|
||||
/* Flag to indicate enabling/disabling of Priority Based Execution Preview feature on the account */
|
||||
enablePriorityBasedExecution?: boolean;
|
||||
/* Enum to indicate default Priority Level of request for Priority Based Execution. */
|
||||
defaultPriorityLevel?: DefaultPriorityLevel;
|
||||
}
|
||||
|
||||
/* Parameters to create and update Cosmos DB database accounts. */
|
||||
@@ -669,18 +742,33 @@ export interface DatabaseAccountUpdateProperties {
|
||||
/* An array that contains the Resource Ids for Network Acl Bypass for the Cosmos DB account. */
|
||||
networkAclBypassResourceIds?: unknown[];
|
||||
|
||||
/* The Object representing the different Diagnostic log settings for the Cosmos DB Account. */
|
||||
diagnosticLogSettings?: DiagnosticLogSettings;
|
||||
|
||||
/* Opt-out of local authentication and ensure only MSI and AAD can be used exclusively for authentication. */
|
||||
disableLocalAuth?: boolean;
|
||||
/* The object that represents all properties related to capacity enforcement on an account. */
|
||||
capacity?: Capacity;
|
||||
|
||||
/* Flag to indicate whether to enable MaterializedViews on the Cosmos DB account */
|
||||
enableMaterializedViews?: boolean;
|
||||
/* This property is ignored during the update operation, as the metadata is read-only. The object represents the metadata for the Account Keys of the Cosmos DB account. */
|
||||
keysMetadata?: DatabaseAccountKeysMetadata;
|
||||
|
||||
/* Flag to indicate enabling/disabling of Partition Merge feature on the account */
|
||||
enablePartitionMerge?: boolean;
|
||||
/* Flag to indicate enabling/disabling of Burst Capacity Preview feature on the account */
|
||||
enableBurstCapacity?: boolean;
|
||||
/* Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and Mongo API's, which only work with Tls 1.2. */
|
||||
minimalTlsVersion?: MinimalTlsVersion;
|
||||
|
||||
/* Indicates the status of the Customer Managed Key feature on the account. In case there are errors, the property provides troubleshooting guidance. */
|
||||
customerManagedKeyStatus?: CustomerManagedKeyStatus;
|
||||
|
||||
/* Flag to indicate enabling/disabling of Priority Based Execution Preview feature on the account */
|
||||
enablePriorityBasedExecution?: boolean;
|
||||
/* Enum to indicate default Priority Level of request for Priority Based Execution. */
|
||||
defaultPriorityLevel?: DefaultPriorityLevel;
|
||||
}
|
||||
|
||||
/* Parameters for patching Azure Cosmos DB database account properties. */
|
||||
@@ -762,6 +850,27 @@ export interface ThroughputSettingsUpdateProperties {
|
||||
resource: ThroughputSettingsResource;
|
||||
}
|
||||
|
||||
/* Parameters to create and update Cosmos DB Graph resource. */
|
||||
export type GraphResourceCreateUpdateParameters = ARMResourceProperties & {
|
||||
/* Properties to create and update Azure Cosmos DB Graph resource. */
|
||||
properties: GraphResourceCreateUpdateProperties;
|
||||
};
|
||||
|
||||
/* Properties to create and update Azure Cosmos DB Graph resource. */
|
||||
export interface GraphResourceCreateUpdateProperties {
|
||||
/* The standard JSON format of a Graph resource */
|
||||
resource: GraphResource;
|
||||
|
||||
/* A key-value pair of options to be applied for the request. This corresponds to the headers sent with the request. */
|
||||
options?: CreateUpdateOptions;
|
||||
}
|
||||
|
||||
/* Cosmos DB Graph resource object */
|
||||
export interface GraphResource {
|
||||
/* Name of the Cosmos DB Graph */
|
||||
id: string;
|
||||
}
|
||||
|
||||
/* Parameters to create and update Cosmos DB SQL database. */
|
||||
export type SqlDatabaseCreateUpdateParameters = ARMResourceProperties & {
|
||||
/* Properties to create and update Azure Cosmos DB SQL database. */
|
||||
@@ -942,6 +1051,21 @@ export interface GremlinGraphCreateUpdateProperties {
|
||||
options?: CreateUpdateOptions;
|
||||
}
|
||||
|
||||
/* Parameters to create and update Cosmos DB Cassandra view. */
|
||||
export type CassandraViewCreateUpdateParameters = ARMResourceProperties & {
|
||||
/* Properties to create and update Azure Cosmos DB Cassandra view. */
|
||||
properties: CassandraViewCreateUpdateProperties;
|
||||
};
|
||||
|
||||
/* Properties to create and update Azure Cosmos DB Cassandra view. */
|
||||
export interface CassandraViewCreateUpdateProperties {
|
||||
/* The standard JSON format of a Cassandra view */
|
||||
resource: CassandraViewResource;
|
||||
|
||||
/* A key-value pair of options to be applied for the request. This corresponds to the headers sent with the request. */
|
||||
options?: CreateUpdateOptions;
|
||||
}
|
||||
|
||||
/* Cosmos DB resource throughput object. Either throughput is required or autoscaleSettings is required, but not both. */
|
||||
export interface ThroughputSettingsResource {
|
||||
/* Value of the Cosmos DB resource throughput. Either throughput is required or autoscaleSettings is required, but not both. */
|
||||
@@ -992,6 +1116,80 @@ export interface OptionsResource {
|
||||
autoscaleSettings?: AutoscaleSettings;
|
||||
}
|
||||
|
||||
/* Cosmos DB redistribute throughput parameters object */
|
||||
export type RedistributeThroughputParameters = ARMResourceProperties & {
|
||||
/* Properties to redistribute throughput parameters object */
|
||||
properties: RedistributeThroughputProperties;
|
||||
};
|
||||
|
||||
/* Properties to redistribute throughput for Azure Cosmos DB resource. */
|
||||
export interface RedistributeThroughputProperties {
|
||||
/* The standard JSON format of a resource throughput */
|
||||
resource: RedistributeThroughputPropertiesResource;
|
||||
}
|
||||
|
||||
/* Resource to redistribute throughput for Azure Cosmos DB resource */
|
||||
export interface RedistributeThroughputPropertiesResource {
|
||||
/* ThroughputPolicy to apply for throughput redistribution */
|
||||
throughputPolicy: "none" | "equal" | "custom";
|
||||
|
||||
/* Array of PhysicalPartitionThroughputInfoResource objects. */
|
||||
targetPhysicalPartitionThroughputInfo: PhysicalPartitionThroughputInfoResource[];
|
||||
|
||||
/* Array of PhysicalPartitionThroughputInfoResource objects. */
|
||||
sourcePhysicalPartitionThroughputInfo: PhysicalPartitionThroughputInfoResource[];
|
||||
}
|
||||
|
||||
/* Cosmos DB retrieve throughput parameters object */
|
||||
export type RetrieveThroughputParameters = ARMResourceProperties & {
|
||||
/* Properties to retrieve throughput parameters object */
|
||||
properties: RetrieveThroughputProperties;
|
||||
};
|
||||
|
||||
/* Properties to retrieve throughput for Azure Cosmos DB resource. */
|
||||
export interface RetrieveThroughputProperties {
|
||||
/* The standard JSON format of a resource throughput */
|
||||
resource: RetrieveThroughputPropertiesResource;
|
||||
}
|
||||
|
||||
/* Resource to retrieve throughput information for Cosmos DB resource */
|
||||
export interface RetrieveThroughputPropertiesResource {
|
||||
/* Array of PhysicalPartitionId objects. */
|
||||
physicalPartitionIds: PhysicalPartitionId[];
|
||||
}
|
||||
|
||||
/* PhysicalPartitionId object */
|
||||
export interface PhysicalPartitionId {
|
||||
/* Id of a physical partition */
|
||||
id: string;
|
||||
}
|
||||
|
||||
/* An Azure Cosmos DB PhysicalPartitionThroughputInfoResult object. */
|
||||
export type PhysicalPartitionThroughputInfoResult = ARMResourceProperties & {
|
||||
/* The properties of an Azure Cosmos DB PhysicalPartitionThroughputInfoResult object */
|
||||
properties?: PhysicalPartitionThroughputInfoResultProperties;
|
||||
};
|
||||
|
||||
/* The properties of an Azure Cosmos DB PhysicalPartitionThroughputInfoResult object */
|
||||
export interface PhysicalPartitionThroughputInfoResultProperties {
|
||||
/* properties of physical partition throughput info */
|
||||
resource?: PhysicalPartitionThroughputInfoProperties;
|
||||
}
|
||||
|
||||
/* The properties of an Azure Cosmos DB PhysicalPartitionThroughputInfoProperties object */
|
||||
export interface PhysicalPartitionThroughputInfoProperties {
|
||||
/* Array of physical partition throughput info objects */
|
||||
physicalPartitionThroughputInfo?: PhysicalPartitionThroughputInfoResource[];
|
||||
}
|
||||
|
||||
/* PhysicalPartitionThroughputInfo object */
|
||||
export interface PhysicalPartitionThroughputInfoResource {
|
||||
/* Id of a physical partition */
|
||||
id: string;
|
||||
/* Throughput of a physical partition */
|
||||
throughput?: number;
|
||||
}
|
||||
|
||||
/* Cosmos DB client encryption key resource object. */
|
||||
export interface ClientEncryptionKeyResource {
|
||||
/* Name of the ClientEncryptionKey */
|
||||
@@ -1020,6 +1218,11 @@ export interface KeyWrapMetadata {
|
||||
export interface SqlDatabaseResource {
|
||||
/* Name of the Cosmos DB SQL database */
|
||||
id: string;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
}
|
||||
|
||||
/* Cosmos DB SQL container resource object */
|
||||
@@ -1045,6 +1248,14 @@ export interface SqlContainerResource {
|
||||
|
||||
/* Analytical TTL. */
|
||||
analyticalStorageTtl?: number;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
|
||||
/* The configuration for defining Materialized Views. This must be specified only for creating a Materialized View container. */
|
||||
materializedViewDefinition?: MaterializedViewDefinition;
|
||||
}
|
||||
|
||||
/* Cosmos DB indexing policy */
|
||||
@@ -1175,6 +1386,16 @@ export interface ClientEncryptionIncludedPath {
|
||||
encryptionAlgorithm: string;
|
||||
}
|
||||
|
||||
/* Materialized View definition for the container. */
|
||||
export interface MaterializedViewDefinition {
|
||||
/* An unique identifier for the source collection. This is a system generated property. */
|
||||
readonly sourceCollectionRid?: string;
|
||||
/* The name of the source container on which the Materialized View will be created. */
|
||||
sourceCollectionId: string;
|
||||
/* The definition should be an SQL query which would be used to fetch data from the source container to populate into the Materialized View container. */
|
||||
definition: string;
|
||||
}
|
||||
|
||||
/* Cosmos DB SQL storedProcedure resource object */
|
||||
export interface SqlStoredProcedureResource {
|
||||
/* Name of the Cosmos DB SQL storedProcedure */
|
||||
@@ -1208,6 +1429,11 @@ export interface SqlTriggerResource {
|
||||
export interface MongoDBDatabaseResource {
|
||||
/* Name of the Cosmos DB MongoDB database */
|
||||
id: string;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
}
|
||||
|
||||
/* Cosmos DB MongoDB collection resource object */
|
||||
@@ -1222,6 +1448,11 @@ export interface MongoDBCollectionResource {
|
||||
|
||||
/* Analytical TTL. */
|
||||
analyticalStorageTtl?: number;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
}
|
||||
|
||||
/* The shard key and partition kind pair, only support "Hash" partition kind */
|
||||
@@ -1257,6 +1488,11 @@ export interface MongoIndexOptions {
|
||||
export interface TableResource {
|
||||
/* Name of the Cosmos DB table */
|
||||
id: string;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
}
|
||||
|
||||
/* Cosmos DB Cassandra keyspace resource object */
|
||||
@@ -1316,6 +1552,11 @@ export interface ClusterKey {
|
||||
export interface GremlinDatabaseResource {
|
||||
/* Name of the Cosmos DB Gremlin database */
|
||||
id: string;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
}
|
||||
|
||||
/* Cosmos DB Gremlin graph resource object */
|
||||
@@ -1338,13 +1579,26 @@ export interface GremlinGraphResource {
|
||||
|
||||
/* Analytical TTL. */
|
||||
analyticalStorageTtl?: number;
|
||||
/* Parameters to indicate the information about the restore */
|
||||
restoreParameters?: ResourceRestoreParameters;
|
||||
|
||||
/* Enum to indicate the mode of resource creation. */
|
||||
createMode?: CreateMode;
|
||||
}
|
||||
|
||||
/* Cosmos DB Cassandra view resource object */
|
||||
export interface CassandraViewResource {
|
||||
/* Name of the Cosmos DB Cassandra view */
|
||||
id: string;
|
||||
/* View Definition of the Cosmos DB Cassandra view */
|
||||
viewDefinition: string;
|
||||
}
|
||||
|
||||
/* CreateUpdateOptions are a list of key-value pairs that describe the resource. Supported keys are "If-Match", "If-None-Match", "Session-Token" and "Throughput" */
|
||||
export interface CreateUpdateOptions {
|
||||
/* Request Units per second. For example, "throughput": 10000. */
|
||||
throughput?: number;
|
||||
/* Specifies the Autoscale settings. */
|
||||
/* Specifies the Autoscale settings. Note: Either throughput or autoscaleSettings is required, but not both. */
|
||||
autoscaleSettings?: AutoscaleSettings;
|
||||
}
|
||||
|
||||
@@ -1426,6 +1680,12 @@ export interface DatabaseAccountKeysMetadata {
|
||||
readonly secondaryReadonlyMasterKey?: AccountKeyMetadata;
|
||||
}
|
||||
|
||||
/* Indicates what diagnostic log settings are to be enabled. */
|
||||
export interface DiagnosticLogSettings {
|
||||
/* Describe the level of detail with which queries are to be logged. */
|
||||
enableFullTextQuery?: "None" | "True" | "False";
|
||||
}
|
||||
|
||||
/* REST API operation */
|
||||
export interface Operation {
|
||||
/* Operation name: {provider}/{resource}/{operation} */
|
||||
@@ -1642,7 +1902,7 @@ export type AnalyticalStorageSchemaType = "WellDefined" | "FullFidelity";
|
||||
export type CreateMode = "Default" | "Restore";
|
||||
|
||||
/* Parameters to indicate the information about the restore. */
|
||||
export interface RestoreParameters {
|
||||
export type RestoreParameters = RestoreParametersBase & {
|
||||
/* Describes the mode of the restore. */
|
||||
restoreMode?: "PointInTime";
|
||||
|
||||
@@ -1658,8 +1918,22 @@ export interface RestoreParameters {
|
||||
|
||||
/* List of specific tables available for restore. */
|
||||
tablesToRestore?: TableName[];
|
||||
|
||||
/* The source backup location for restore. */
|
||||
sourceBackupLocation?: string;
|
||||
};
|
||||
|
||||
/* Parameters to indicate the information about the restore. */
|
||||
export interface RestoreParametersBase {
|
||||
/* The id of the restorable database account from which the restore has to be initiated. For example: /subscriptions/{subscriptionId}/providers/Microsoft.DocumentDB/locations/{location}/restorableDatabaseAccounts/{restorableDatabaseAccountName} */
|
||||
restoreSource?: string;
|
||||
/* Time to which the account has to be restored (ISO-8601 format). */
|
||||
restoreTimestampInUtc?: string;
|
||||
}
|
||||
|
||||
/* Parameters to indicate the information about the restore. */
|
||||
export type ResourceRestoreParameters = RestoreParametersBase;
|
||||
|
||||
/* Specific Databases to restore. */
|
||||
export interface DatabaseRestoreResource {
|
||||
/* The name of the database available for restore. */
|
||||
@@ -1736,10 +2010,30 @@ export interface PeriodicModeProperties {
|
||||
|
||||
/* Configuration values for periodic mode backup */
|
||||
export interface ContinuousModeProperties {
|
||||
/* Enum to indicate type of Continuous backup mode */
|
||||
/* Enum to indicate type of Continuos backup mode */
|
||||
tier?: ContinuousTier;
|
||||
}
|
||||
|
||||
/* The properties of an Azure Cosmos DB merge operations */
|
||||
export interface MergeParameters {
|
||||
/* Specifies whether the operation is a real merge operation or a simulation. */
|
||||
isDryRun?: boolean;
|
||||
}
|
||||
|
||||
/* List of physical partitions and their properties returned by a merge operation. */
|
||||
export interface PhysicalPartitionStorageInfoCollection {
|
||||
/* List of physical partitions and their properties. */
|
||||
readonly physicalPartitionStorageInfoCollection?: physicalPartitionStorageInfo[];
|
||||
}
|
||||
|
||||
/* The storage of a physical partition */
|
||||
export interface physicalPartitionStorageInfo {
|
||||
/* The unique identifier of the partition. */
|
||||
readonly id?: string;
|
||||
/* The storage in KB for the physical partition. */
|
||||
readonly storageInKB?: number;
|
||||
}
|
||||
|
||||
/* The List operation response, that contains Cosmos DB locations and their properties. */
|
||||
export interface LocationListResult {
|
||||
/* List of Cosmos DB locations and their properties. */
|
||||
@@ -1777,3 +2071,20 @@ export type ContinuousTier = "Continuous7Days" | "Continuous30Days";
|
||||
|
||||
/* Indicates the minimum allowed Tls version. The default is Tls 1.0, except for Cassandra and Mongo API's, which only work with Tls 1.2. */
|
||||
export type MinimalTlsVersion = "Tls" | "Tls11" | "Tls12";
|
||||
|
||||
/* Indicates the status of the Customer Managed Key feature on the account. In case there are errors, the property provides troubleshooting guidance. */
|
||||
export type CustomerManagedKeyStatus =
|
||||
| "Access to your account is currently revoked because the Azure Cosmos DB service is unable to obtain the AAD authentication token for the account's default identity; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#azure-active-directory-token-acquisition-error (4000)."
|
||||
| "Access to your account is currently revoked because the Azure Cosmos DB account's key vault key URI does not follow the expected format; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#improper-syntax-detected-on-the-key-vault-uri-property (4006)."
|
||||
| "Access to your account is currently revoked because the current default identity no longer has permission to the associated Key Vault key; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#default-identity-is-unauthorized-to-access-the-azure-key-vault-key (4002)."
|
||||
| "Access to your account is currently revoked because the Azure Key Vault DNS name specified by the account's keyvaultkeyuri property could not be resolved; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#unable-to-resolve-the-key-vaults-dns (4009)."
|
||||
| "Access to your account is currently revoked because the correspondent key is not found on the specified Key Vault; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#azure-key-vault-resource-not-found (4003)."
|
||||
| "Access to your account is currently revoked because the Azure Cosmos DB service is unable to wrap or unwrap the key; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#internal-unwrapping-procedure-error (4005)."
|
||||
| "Access to your account is currently revoked because the Azure Cosmos DB account has an undefined default identity; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#invalid-azure-cosmos-db-default-identity (4015)."
|
||||
| "Access to your account is currently revoked because the access rules are blocking outbound requests to the Azure Key Vault service; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide (4016)."
|
||||
| "Access to your account is currently revoked because the correspondent Azure Key Vault was not found; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide#azure-key-vault-resource-not-found (4017)."
|
||||
| "Access to your account is currently revoked; for more details about this error and how to restore access to your account please visit https://learn.microsoft.com/en-us/azure/cosmos-db/cmk-troubleshooting-guide"
|
||||
| "Access to the configured customer managed key confirmed.";
|
||||
|
||||
/* Enum to indicate default priorityLevel of requests */
|
||||
export type DefaultPriorityLevel = "High" | "Low";
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { createUri } from "Common/UrlUtility";
|
||||
import { FabricMessage } from "Contracts/FabricContract";
|
||||
import Explorer from "Explorer/Explorer";
|
||||
import { useSelectedNode } from "Explorer/useSelectedNode";
|
||||
import { fetchEncryptedToken } from "Platform/Hosted/Components/ConnectExplorer";
|
||||
import { getNetworkSettingsWarningMessage } from "Utils/NetworkUtility";
|
||||
import { fetchAccessData } from "hooks/usePortalAccessToken";
|
||||
@@ -10,7 +12,7 @@ import { AccountKind, Flights } from "../Common/Constants";
|
||||
import { normalizeArmEndpoint } from "../Common/EnvironmentUtility";
|
||||
import { sendMessage, sendReadyMessage } from "../Common/MessageHandler";
|
||||
import { Platform, configContext, updateConfigContext } from "../ConfigContext";
|
||||
import { ActionType, DataExplorerAction } from "../Contracts/ActionContracts";
|
||||
import { ActionType, DataExplorerAction, TabKind } from "../Contracts/ActionContracts";
|
||||
import { MessageTypes } from "../Contracts/ExplorerContracts";
|
||||
import { DataExplorerInputsFrame } from "../Contracts/ViewModels";
|
||||
import { handleOpenAction } from "../Explorer/OpenActions/OpenActions";
|
||||
@@ -63,24 +65,7 @@ export function useKnockoutExplorer(platform: Platform): Explorer {
|
||||
const explorer = await configurePortal();
|
||||
setExplorer(explorer);
|
||||
} else if (platform === Platform.Fabric) {
|
||||
// TODO For now, retrieve info from session storage. Replace with info injected into Data Explorer
|
||||
const connectionString = sessionStorage.getItem("connectionString");
|
||||
if (!connectionString) {
|
||||
console.error("No connection string found in session storage");
|
||||
return;
|
||||
}
|
||||
const encryptedToken = await fetchEncryptedToken(connectionString);
|
||||
// TODO Duplicated from useTokenMetadata
|
||||
const encryptedTokenMetadata = await fetchAccessData(encryptedToken);
|
||||
|
||||
const win = (window as unknown) as HostedExplorerChildFrame;
|
||||
win.hostedConfig = {
|
||||
authType: AuthType.EncryptedToken,
|
||||
encryptedToken,
|
||||
encryptedTokenMetadata,
|
||||
};
|
||||
|
||||
const explorer = await configureHosted();
|
||||
const explorer = await configureFabric();
|
||||
setExplorer(explorer);
|
||||
}
|
||||
}
|
||||
@@ -100,11 +85,104 @@ export function useKnockoutExplorer(platform: Platform): Explorer {
|
||||
return explorer;
|
||||
}
|
||||
|
||||
async function configureFabric(): Promise<Explorer> {
|
||||
let explorer: Explorer;
|
||||
return new Promise<Explorer>((resolve) => {
|
||||
window.addEventListener(
|
||||
"message",
|
||||
async (event) => {
|
||||
if (isInvalidParentFrameOrigin(event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!shouldProcessMessage(event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const data: FabricMessage = event.data?.data;
|
||||
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (data.type) {
|
||||
case "initialize": {
|
||||
// TODO For now, retrieve info from session storage. Replace with info injected into Data Explorer
|
||||
const connectionString = data.connectionString ?? sessionStorage.getItem("connectionString");
|
||||
if (!connectionString) {
|
||||
console.error("No connection string found in session storage");
|
||||
return undefined;
|
||||
}
|
||||
const encryptedToken = await fetchEncryptedToken(connectionString);
|
||||
// TODO Duplicated from useTokenMetadata
|
||||
const encryptedTokenMetadata = await fetchAccessData(encryptedToken);
|
||||
|
||||
const hostedConfig: EncryptedToken = {
|
||||
authType: AuthType.EncryptedToken,
|
||||
encryptedToken,
|
||||
encryptedTokenMetadata,
|
||||
};
|
||||
|
||||
explorer = await configureWithEncryptedToken(hostedConfig);
|
||||
resolve(explorer);
|
||||
break;
|
||||
}
|
||||
case "newContainer":
|
||||
explorer.onNewCollectionClicked();
|
||||
break;
|
||||
case "openTab": {
|
||||
// Expand database first
|
||||
const databaseName = sessionStorage.getItem("openDatabaseName") ?? data.databaseName;
|
||||
const database = useDatabases.getState().databases.find((db) => db.id() === databaseName);
|
||||
if (database) {
|
||||
await database.expandDatabase();
|
||||
useDatabases.getState().updateDatabase(database);
|
||||
useSelectedNode.getState().setSelectedNode(database);
|
||||
|
||||
let collectionResourceId = data.collectionName;
|
||||
if (collectionResourceId === undefined) {
|
||||
// Pick first collection if collectionName not specified in message
|
||||
collectionResourceId = database.collections()[0]?.id();
|
||||
}
|
||||
|
||||
if (collectionResourceId !== undefined) {
|
||||
// Expand collection
|
||||
const collection = database.collections().find((coll) => coll.id() === collectionResourceId);
|
||||
collection.expandCollection();
|
||||
useSelectedNode.getState().setSelectedNode(collection);
|
||||
|
||||
handleOpenAction(
|
||||
{
|
||||
actionType: ActionType.OpenCollectionTab,
|
||||
databaseResourceId: databaseName,
|
||||
collectionResourceId: data.collectionName,
|
||||
tabKind: TabKind.SQLDocuments,
|
||||
} as DataExplorerAction,
|
||||
useDatabases.getState().databases,
|
||||
explorer
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
console.error(`Unknown Fabric message type: ${JSON.stringify(data)}`);
|
||||
break;
|
||||
}
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
sendReadyMessage();
|
||||
});
|
||||
}
|
||||
|
||||
async function configureHosted(): Promise<Explorer> {
|
||||
const win = (window as unknown) as HostedExplorerChildFrame;
|
||||
let explorer: Explorer;
|
||||
if (win.hostedConfig.authType === AuthType.EncryptedToken) {
|
||||
explorer = configureHostedWithEncryptedToken(win.hostedConfig);
|
||||
explorer = configureWithEncryptedToken(win.hostedConfig);
|
||||
} else if (win.hostedConfig.authType === AuthType.ResourceToken) {
|
||||
explorer = configureHostedWithResourceToken(win.hostedConfig);
|
||||
} else if (win.hostedConfig.authType === AuthType.ConnectionString) {
|
||||
@@ -237,7 +315,7 @@ function configureHostedWithResourceToken(config: ResourceToken): Explorer {
|
||||
return explorer;
|
||||
}
|
||||
|
||||
function configureHostedWithEncryptedToken(config: EncryptedToken): Explorer {
|
||||
function configureWithEncryptedToken(config: EncryptedToken): Explorer {
|
||||
const apiExperience = DefaultExperienceUtility.getDefaultExperienceFromApiKind(config.encryptedTokenMetadata.apiKind);
|
||||
updateUserContext({
|
||||
authType: AuthType.EncryptedToken,
|
||||
|
||||
@@ -3,6 +3,7 @@ import * as ViewModels from "../Contracts/ViewModels";
|
||||
import { CollectionTabKind } from "../Contracts/ViewModels";
|
||||
import NotebookTabV2 from "../Explorer/Tabs/NotebookV2Tab";
|
||||
import TabsBase from "../Explorer/Tabs/TabsBase";
|
||||
import { Platform, configContext } from "./../ConfigContext";
|
||||
|
||||
interface TabsState {
|
||||
openedTabs: TabsBase[];
|
||||
@@ -37,11 +38,22 @@ export enum ReactTabKind {
|
||||
QueryCopilot,
|
||||
}
|
||||
|
||||
// HACK: using this const when the configuration context is not initialized yet.
|
||||
// Since Fabric is always setting the url param, use that instead of the regular config.
|
||||
const isPlatformFabric = (() => {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
if (params.has("platform")) {
|
||||
const platform = params.get("platform");
|
||||
return platform === Platform.Fabric;
|
||||
}
|
||||
return false;
|
||||
})();
|
||||
|
||||
export const useTabs: UseStore<TabsState> = create((set, get) => ({
|
||||
openedTabs: [],
|
||||
openedReactTabs: [ReactTabKind.Home],
|
||||
openedReactTabs: !isPlatformFabric ? [ReactTabKind.Home] : [],
|
||||
activeTab: undefined,
|
||||
activeReactTab: ReactTabKind.Home,
|
||||
activeReactTab: !isPlatformFabric ? ReactTabKind.Home : undefined,
|
||||
networkSettingsWarning: "",
|
||||
queryCopilotTabInitialInput: "",
|
||||
isTabExecuting: false,
|
||||
@@ -92,7 +104,7 @@ export const useTabs: UseStore<TabsState> = create((set, get) => ({
|
||||
}
|
||||
return true;
|
||||
});
|
||||
if (updatedTabs.length === 0) {
|
||||
if (updatedTabs.length === 0 && configContext.platform !== Platform.Fabric) {
|
||||
set({ activeTab: undefined, activeReactTab: ReactTabKind.Home });
|
||||
}
|
||||
|
||||
@@ -130,7 +142,7 @@ export const useTabs: UseStore<TabsState> = create((set, get) => ({
|
||||
}
|
||||
});
|
||||
|
||||
if (get().openedTabs.length === 0) {
|
||||
if (get().openedTabs.length === 0 && configContext.platform !== Platform.Fabric) {
|
||||
set({ activeTab: undefined, activeReactTab: ReactTabKind.Home });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ test("Graph CRUD", async () => {
|
||||
|
||||
// Create new database and graph
|
||||
await explorer.click('[data-test="New Graph"]');
|
||||
await explorer.fill('[aria-label="New database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Graph id"]', containerId);
|
||||
await explorer.fill('[aria-label="New database id, Type a new database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Graph id, Example Graph1"]', containerId);
|
||||
await explorer.fill('[aria-label="Partition key"]', "/pk");
|
||||
await explorer.click("#sidePanelOkButton");
|
||||
await explorer.click(`.nodeItem >> text=${databaseId}`);
|
||||
|
||||
@@ -14,8 +14,8 @@ test("Mongo CRUD", async () => {
|
||||
|
||||
// Create new database and collection
|
||||
await explorer.click('[data-test="New Collection"]');
|
||||
await explorer.fill('[aria-label="New database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Collection id"]', containerId);
|
||||
await explorer.fill('[aria-label="New database id, Type a new database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Collection id, Example Collection1"]', containerId);
|
||||
await explorer.fill('[aria-label="Shard key"]', "pk");
|
||||
await explorer.click("#sidePanelOkButton");
|
||||
await explorer.click(`.nodeItem >> text=${databaseId}`);
|
||||
|
||||
@@ -14,8 +14,8 @@ test("Mongo CRUD", async () => {
|
||||
|
||||
// Create new database and collection
|
||||
await explorer.click('[data-test="New Collection"]');
|
||||
await explorer.fill('[aria-label="New database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Collection id"]', containerId);
|
||||
await explorer.fill('[aria-label="New database id, Type a new database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Collection id, Example Collection1"]', containerId);
|
||||
await explorer.fill('[aria-label="Shard key"]', "pk");
|
||||
await explorer.click("#sidePanelOkButton");
|
||||
explorer.click(`.nodeItem >> text=${databaseId}`);
|
||||
|
||||
@@ -13,8 +13,8 @@ test("SQL CRUD", async () => {
|
||||
const explorer = await waitForExplorer();
|
||||
|
||||
await explorer.click('[data-test="New Container"]');
|
||||
await explorer.fill('[aria-label="New database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Container id"]', containerId);
|
||||
await explorer.fill('[aria-label="New database id, Type a new database id"]', databaseId);
|
||||
await explorer.fill('[aria-label="Container id, Example Container1"]', containerId);
|
||||
await explorer.fill('[aria-label="Partition key"]', "/pk");
|
||||
await explorer.click("#sidePanelOkButton");
|
||||
await explorer.click(`.nodeItem >> text=${databaseId}`);
|
||||
|
||||
@@ -14,7 +14,7 @@ test("Tables CRUD", async () => {
|
||||
|
||||
await page.waitForSelector('text="Querying databases"', { state: "detached" });
|
||||
await explorer.click('[data-test="New Table"]');
|
||||
await explorer.fill('[aria-label="Table id"]', tableId);
|
||||
await explorer.fill('[aria-label="Table id, Example Table1"]', tableId);
|
||||
await explorer.click("#sidePanelOkButton");
|
||||
await explorer.click(`[data-test="TablesDB"]`);
|
||||
await explorer.click(`[data-test="${tableId}"] [aria-label="More"]`);
|
||||
|
||||
@@ -135,7 +135,6 @@
|
||||
"./src/quickstart.ts",
|
||||
"./src/setupTests.ts",
|
||||
"./src/userContext.test.ts",
|
||||
"src/Common/EntityValue.tsx",
|
||||
"./src/Platform/Hosted/Components/SwitchAccount.tsx",
|
||||
"./src/Platform/Hosted/Components/SwitchSubscription.tsx"
|
||||
],
|
||||
@@ -163,4 +162,4 @@
|
||||
"src/Terminal/**/*",
|
||||
"src/Utils/arm/**/*"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,14 @@ Results of this file should be checked into the repo.
|
||||
*/
|
||||
|
||||
// CHANGE THESE VALUES TO GENERATE NEW CLIENTS
|
||||
const version = "2023-04-15";
|
||||
const version = "2023-09-15-preview";
|
||||
/* The following are legal options for resourceName but you generally will only use cosmos-db:
|
||||
"cosmos-db" | "managedCassandra" | "mongorbac" | "notebook" | "privateEndpointConnection" | "privateLinkResources" |
|
||||
"rbac" | "restorable" | "services"
|
||||
*/
|
||||
const githubResourceName = "cosmos-db";
|
||||
const deResourceName = "cosmos";
|
||||
const schemaURL = `https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/stable/${version}/${githubResourceName}.json`;
|
||||
const schemaURL = `https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cosmos-db/resource-manager/Microsoft.DocumentDB/preview/${version}/${githubResourceName}.json`;
|
||||
const outputDir = path.join(__dirname, `../../src/Utils/arm/generatedClients/${deResourceName}`);
|
||||
|
||||
// Array of strings to use for eventual output
|
||||
|
||||
Reference in New Issue
Block a user