Initial Move from Azure DevOps to GitHub

This commit is contained in:
Steve Faulkner
2020-05-25 21:30:55 -05:00
commit 36581fb6d9
986 changed files with 195242 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
import * as ViewModels from "../../Contracts/ViewModels";
import { ContainerSampleGenerator } from "./ContainerSampleGenerator";
import { NotificationConsoleUtils } from "../../Utils/NotificationConsoleUtils";
import { ConsoleDataType } from "../Menus/NotificationConsole/NotificationConsoleComponent";
export class DataSamplesUtil {
private static readonly DialogTitle = "Create Sample Container";
constructor(private container: ViewModels.Explorer) {}
/**
* Check if Database/Container is already there: if so, show modal to delete
* If not, create and show modal to confirm.
*/
public async createSampleContainerAsync(): Promise<void> {
const generator = await this.createGeneratorAsync();
const databaseName = generator.getDatabaseId();
const containerName = generator.getCollectionId();
if (this.hasContainer(databaseName, containerName, this.container.nonSystemDatabases())) {
const msg = `The container ${containerName} in database ${databaseName} already exists. Please delete it and retry.`;
this.container.showOkModalDialog(DataSamplesUtil.DialogTitle, msg);
NotificationConsoleUtils.logConsoleMessage(ConsoleDataType.Error, msg);
return;
}
await generator
.createSampleContainerAsync()
.catch(error =>
NotificationConsoleUtils.logConsoleMessage(ConsoleDataType.Error, `Error creating sample container: ${error}`)
);
const msg = `The sample ${containerName} in database ${databaseName} has been successfully created.`;
this.container.showOkModalDialog(DataSamplesUtil.DialogTitle, msg);
NotificationConsoleUtils.logConsoleMessage(ConsoleDataType.Info, msg);
}
/**
* Public for unit tests
*/
public async createGeneratorAsync(): Promise<ContainerSampleGenerator> {
return await ContainerSampleGenerator.createSampleGeneratorAsync(this.container);
}
/**
* Public for unit tests
* @param databaseName
* @param containerName
* @param containerDatabases
*/
public hasContainer(databaseName: string, containerName: string, containerDatabases: ViewModels.Database[]): boolean {
const filteredDatabases = containerDatabases.filter(database => database.id() === databaseName);
return (
filteredDatabases.length > 0 &&
filteredDatabases[0].collections().filter(collection => collection.id() === containerName).length > 0
);
}
public isSampleContainerCreationSupported(): boolean {
return this.container.isPreferredApiDocumentDB() || this.container.isPreferredApiGraph();
}
}