no message

This commit is contained in:
Chris-MS-896
2021-01-05 21:26:42 -06:00
parent 30e0001b7f
commit e28b6cd44a
3 changed files with 32 additions and 19 deletions

View File

@@ -2,33 +2,42 @@ import * as Constants from "../../../Common/Constants";
import * as DataModels from "../../../Contracts/DataModels"; import * as DataModels from "../../../Contracts/DataModels";
export class ConnectionStringParser { export class ConnectionStringParser {
public static parseConnectionString(connectionString: string): DataModels.AccessInputMetadata { public static parseConnectionString(connectionString: string): DataModels.AccessInputMetadata | undefined {
if (!!connectionString) { if (!!connectionString) {
try { try {
const accessInput: DataModels.AccessInputMetadata = {} as DataModels.AccessInputMetadata; const accessInput: DataModels.AccessInputMetadata = {} as DataModels.AccessInputMetadata;
const connectionStringParts = connectionString.split(";"); const connectionStringParts = connectionString.split(";");
connectionStringParts.forEach((connectionStringPart: string) => { connectionStringParts.forEach((connectionStringPart: string) => {
if (RegExp(Constants.EndpointsRegex.sql).test(connectionStringPart)) { const sqlMatchResult = connectionStringPart.match(Constants.EndpointsRegex.sql);
accessInput.accountName = connectionStringPart.match(Constants.EndpointsRegex.sql)[1]; const mongoMatchResult = connectionStringPart.match(Constants.EndpointsRegex.mongo);
const mongoComputeMatchResult = connectionStringPart.match(Constants.EndpointsRegex.mongoCompute);
const tableMatchResult = connectionStringPart.match(Constants.EndpointsRegex.table);
if (sqlMatchResult && sqlMatchResult.length > 1) {
accessInput.accountName = sqlMatchResult[1];
accessInput.apiKind = DataModels.ApiKind.SQL; accessInput.apiKind = DataModels.ApiKind.SQL;
} else if (RegExp(Constants.EndpointsRegex.mongo).test(connectionStringPart)) { } else if (mongoMatchResult && mongoMatchResult.length > 2) {
const matches: string[] = connectionStringPart.match(Constants.EndpointsRegex.mongo); accessInput.accountName = mongoMatchResult[2];
accessInput.accountName = matches && matches.length > 1 && matches[2];
accessInput.apiKind = DataModels.ApiKind.MongoDB; accessInput.apiKind = DataModels.ApiKind.MongoDB;
} else if (RegExp(Constants.EndpointsRegex.mongoCompute).test(connectionStringPart)) { } else if (mongoComputeMatchResult && mongoComputeMatchResult.length > 2) {
const matches: string[] = connectionStringPart.match(Constants.EndpointsRegex.mongoCompute); accessInput.accountName = mongoComputeMatchResult[2];
accessInput.accountName = matches && matches.length > 1 && matches[2];
accessInput.apiKind = DataModels.ApiKind.MongoDBCompute; accessInput.apiKind = DataModels.ApiKind.MongoDBCompute;
} else if (Constants.EndpointsRegex.cassandra.some(regex => RegExp(regex).test(connectionStringPart))) { } else if (
Constants.EndpointsRegex.cassandra &&
Constants.EndpointsRegex.cassandra.some(regex => RegExp(regex).test(connectionStringPart))
) {
Constants.EndpointsRegex.cassandra.forEach(regex => { Constants.EndpointsRegex.cassandra.forEach(regex => {
if (RegExp(regex).test(connectionStringPart)) { if (RegExp(regex).test(connectionStringPart)) {
accessInput.accountName = connectionStringPart.match(regex)[1]; const connectionMatch = connectionStringPart.match(regex);
accessInput.apiKind = DataModels.ApiKind.Cassandra; if (connectionMatch && connectionMatch.length > 1) {
accessInput.accountName = connectionMatch[1];
accessInput.apiKind = DataModels.ApiKind.Cassandra;
}
} }
}); });
} else if (RegExp(Constants.EndpointsRegex.table).test(connectionStringPart)) { } else if (tableMatchResult && tableMatchResult.length > 1) {
accessInput.accountName = connectionStringPart.match(Constants.EndpointsRegex.table)[1]; accessInput.accountName = tableMatchResult[1];
accessInput.apiKind = DataModels.ApiKind.Table; accessInput.apiKind = DataModels.ApiKind.Table;
} else if (connectionStringPart.indexOf("ApiKind=Gremlin") >= 0) { } else if (connectionStringPart.indexOf("ApiKind=Gremlin") >= 0) {
accessInput.apiKind = DataModels.ApiKind.Graph; accessInput.apiKind = DataModels.ApiKind.Graph;

View File

@@ -4,7 +4,7 @@ import * as DataModels from "../Contracts/DataModels";
import { DefaultAccountExperienceType } from "../DefaultAccountExperienceType"; import { DefaultAccountExperienceType } from "../DefaultAccountExperienceType";
export class DefaultExperienceUtility { export class DefaultExperienceUtility {
public static getDefaultExperienceFromDatabaseAccount(databaseAccount: DataModels.DatabaseAccount): string { public static getDefaultExperienceFromDatabaseAccount(databaseAccount: DataModels.DatabaseAccount): string | null {
if (!databaseAccount) { if (!databaseAccount) {
return null; return null;
} }
@@ -81,10 +81,12 @@ export class DefaultExperienceUtility {
private static _getDefaultExperience(kind: string, capabilities: DataModels.Capability[]): string { private static _getDefaultExperience(kind: string, capabilities: DataModels.Capability[]): string {
const defaultDefaultExperience: string = Constants.DefaultAccountExperience.DocumentDB; const defaultDefaultExperience: string = Constants.DefaultAccountExperience.DocumentDB;
const defaultExperienceFromKind: string = DefaultExperienceUtility._getDefaultExperienceFromAccountKind(kind); const defaultExperienceFromKindCheck = DefaultExperienceUtility._getDefaultExperienceFromAccountKind(kind);
const defaultExperienceFromCapabilities: string = DefaultExperienceUtility._getDefaultExperienceFromAccountCapabilities( const defaultExperienceFromKind: string = !defaultExperienceFromKindCheck ? "" : defaultExperienceFromKindCheck;
const defaultCheckforCapabilities = DefaultExperienceUtility._getDefaultExperienceFromAccountCapabilities(
capabilities capabilities
); );
const defaultExperienceFromCapabilities: string = !defaultCheckforCapabilities ? "" : defaultCheckforCapabilities;
if (!!defaultExperienceFromKind) { if (!!defaultExperienceFromKind) {
return defaultExperienceFromKind; return defaultExperienceFromKind;
@@ -97,7 +99,7 @@ export class DefaultExperienceUtility {
return defaultDefaultExperience; return defaultDefaultExperience;
} }
private static _getDefaultExperienceFromAccountKind(kind: string): string { private static _getDefaultExperienceFromAccountKind(kind: string): string | null {
if (!kind) { if (!kind) {
return null; return null;
} }
@@ -113,7 +115,7 @@ export class DefaultExperienceUtility {
return null; return null;
} }
private static _getDefaultExperienceFromAccountCapabilities(capabilities: DataModels.Capability[]): string { private static _getDefaultExperienceFromAccountCapabilities(capabilities: DataModels.Capability[]): string | null {
if (!capabilities) { if (!capabilities) {
return null; return null;
} }

View File

@@ -61,6 +61,8 @@
"./src/GitHub/GitHubConnector.ts", "./src/GitHub/GitHubConnector.ts",
"./src/Index.ts", "./src/Index.ts",
"./src/NotebookWorkspaceManager/NotebookWorkspaceResourceProviderMockClients.ts", "./src/NotebookWorkspaceManager/NotebookWorkspaceResourceProviderMockClients.ts",
"./src/Platform/Hosted/Helpers/ConnectionStringParser.ts",
"./src/Platform/Hosted/HostedUtils.ts",
"./src/ReactDevTools.ts", "./src/ReactDevTools.ts",
"./src/ResourceProvider/IResourceProviderClient.ts", "./src/ResourceProvider/IResourceProviderClient.ts",
"./src/Shared/Constants.ts", "./src/Shared/Constants.ts",