Partition Key Change with Container Copy (#1734)

* initial commit

* Add change partition key logic

* Update snapshot

* Update snapshot

* Update snapshot

* Update snapshot

* Cleanup code

* Disable Change on progress job

* add the database information in the panel

* add the database information in the panel

* clear in progress message and remove large partition key row

* hide from national cloud

* hide from national cloud

* Add check for public cloud
This commit is contained in:
sunghyunkang1111
2024-02-13 14:00:27 -06:00
committed by GitHub
parent e43b4eee5c
commit a914fd020c
12 changed files with 1219 additions and 19 deletions

View File

@@ -0,0 +1,60 @@
import { getDataTransferJobs } from "Common/dataAccess/dataTransfers";
import { DataTransferJobGetResults } from "Utils/arm/generatedClients/dataTransferService/types";
import create, { UseStore } from "zustand";
export interface DataTransferJobsState {
dataTransferJobs: DataTransferJobGetResults[];
pollingDataTransferJobs: Set<string>;
setDataTransferJobs: (dataTransferJobs: DataTransferJobGetResults[]) => void;
setPollingDataTransferJobs: (pollingDataTransferJobs: Set<string>) => void;
}
type DataTransferJobStore = UseStore<DataTransferJobsState>;
export const useDataTransferJobs: DataTransferJobStore = create((set) => ({
dataTransferJobs: [],
pollingDataTransferJobs: new Set<string>(),
setDataTransferJobs: (dataTransferJobs: DataTransferJobGetResults[]) => set({ dataTransferJobs }),
setPollingDataTransferJobs: (pollingDataTransferJobs: Set<string>) => set({ pollingDataTransferJobs }),
}));
export const refreshDataTransferJobs = async (
subscriptionId: string,
resourceGroup: string,
accountName: string,
): Promise<DataTransferJobGetResults[]> => {
const dataTransferJobs: DataTransferJobGetResults[] = await getDataTransferJobs(
subscriptionId,
resourceGroup,
accountName,
);
const jobRegex = /^Portal_(.+)_(\d{10,})$/;
const sortedJobs: DataTransferJobGetResults[] = dataTransferJobs?.sort(
(a, b) =>
new Date(b?.properties?.lastUpdatedUtcTime).getTime() - new Date(a?.properties?.lastUpdatedUtcTime).getTime(),
);
const filteredJobs = sortedJobs.filter((job) => jobRegex.test(job?.properties?.jobName));
useDataTransferJobs.getState().setDataTransferJobs(filteredJobs);
return filteredJobs;
};
export const updateDataTransferJob = (updateJob: DataTransferJobGetResults) => {
const updatedDataTransferJobs = useDataTransferJobs
.getState()
.dataTransferJobs.map((job: DataTransferJobGetResults) =>
job?.properties?.jobName === updateJob?.properties?.jobName ? updateJob : job,
);
useDataTransferJobs.getState().setDataTransferJobs(updatedDataTransferJobs);
};
export const addToPolling = (addJob: string) => {
const pollingJobs = useDataTransferJobs.getState().pollingDataTransferJobs;
pollingJobs.add(addJob);
useDataTransferJobs.getState().setPollingDataTransferJobs(pollingJobs);
};
export const removeFromPolling = (removeJob: string) => {
const pollingJobs = useDataTransferJobs.getState().pollingDataTransferJobs;
pollingJobs.delete(removeJob);
useDataTransferJobs.getState().setPollingDataTransferJobs(pollingJobs);
};