mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-09 20:49:12 +00:00
* 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
61 lines
2.5 KiB
TypeScript
61 lines
2.5 KiB
TypeScript
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);
|
|
};
|