export function toServiceDataFeedSource()

in sdk/metricsadvisor/ai-metrics-advisor/src/transforms.ts [363:608]


export function toServiceDataFeedSource(source: DataFeedSource): {
  dataSourceType:
    | "AzureApplicationInsights"
    | "AzureBlob"
    | "AzureCosmosDB"
    | "AzureDataExplorer"
    | "AzureDataLakeStorageGen2"
    | "AzureTable"
    | "InfluxDB"
    | "MySql"
    | "PostgreSql"
    | "SqlServer"
    | "MongoDB"
    | "AzureLogAnalytics"
    | "AzureEventHubs";
  dataSourceParameter:
    | AzureApplicationInsightsParameter
    | AzureCosmosDBParameter
    | MongoDBParameter
    | AzureBlobParameter
    | SqlSourceParameter
    | InfluxDBParameter
    | AzureDataLakeStorageGen2Parameter
    | AzureTableParameter
    | AzureLogAnalyticsParameter
    | AzureEventHubsParameter;
  authenticationType?: AuthenticationTypeEnum;
  credentialId?: string;
} {
  switch (source.dataSourceType) {
    case "MongoDB":
      return {
        dataSourceType: "MongoDB",
        dataSourceParameter: {
          command: source.command,
          database: source.database,
          connectionString: source.connectionString,
        },
        authenticationType: source.authenticationType,
      };
    case "AzureApplicationInsights": {
      return {
        dataSourceType: "AzureApplicationInsights",
        dataSourceParameter: {
          azureCloud: source.azureCloud,
          applicationId: source.applicationId,
          apiKey: source.apiKey,
          query: source.query,
        },
        authenticationType: source.authenticationType,
      };
    }
    case "AzureBlob":
      return {
        dataSourceType: "AzureBlob",
        dataSourceParameter: {
          connectionString: source.connectionString,
          container: source.container,
          blobTemplate: source.blobTemplate,
        },
        authenticationType: source.authenticationType,
      };

    case "AzureCosmosDB":
      return {
        dataSourceType: "AzureCosmosDB",
        dataSourceParameter: {
          connectionString: source.connectionString!,
          database: source.database,
          collectionId: source.collectionId,
          sqlQuery: source.sqlQuery,
        },
        authenticationType: source.authenticationType,
      };
    case "SqlServer":
      if (source.authenticationType === "AzureSQLConnectionString") {
        return {
          dataSourceType: "SqlServer",
          dataSourceParameter: {
            query: source.query,
          },
          authenticationType: source.authenticationType,
          credentialId: source.credentialId,
        };
      } else if (
        source.authenticationType === "Basic" ||
        source.authenticationType === "ManagedIdentity"
      ) {
        return {
          dataSourceType: "SqlServer",
          dataSourceParameter: {
            query: source.query,
            connectionString: source.connectionString,
          },
          authenticationType: source.authenticationType,
        };
      } else {
        return {
          dataSourceType: "SqlServer",
          dataSourceParameter: {
            query: source.query,
            connectionString: source.connectionString,
          },
          authenticationType: source.authenticationType,
          credentialId: source.credentialId,
        };
      }
    case "AzureDataExplorer":
      if (
        source.authenticationType === "ServicePrincipal" ||
        source.authenticationType === "ServicePrincipalInKV"
      ) {
        return {
          dataSourceType: "AzureDataExplorer",
          dataSourceParameter: {
            connectionString: source.connectionString,
            query: source.query,
          },
          authenticationType: source.authenticationType,
          credentialId: source.credentialId,
        };
      } else {
        return {
          dataSourceType: "AzureDataExplorer",
          dataSourceParameter: {
            connectionString: source.connectionString,
            query: source.query,
          },
          authenticationType: source.authenticationType,
        };
      }
    case "AzureDataLakeStorageGen2":
      if (source.authenticationType === "Basic") {
        return {
          dataSourceType: "AzureDataLakeStorageGen2",
          dataSourceParameter: {
            accountName: source.accountName,
            directoryTemplate: source.directoryTemplate,
            fileTemplate: source.fileTemplate,
            fileSystemName: source.fileSystemName,
            accountKey: source.accountKey,
          },
          authenticationType: source.authenticationType,
        };
      } else if (source.authenticationType === "ManagedIdentity") {
        return {
          dataSourceType: "AzureDataLakeStorageGen2",
          dataSourceParameter: {
            accountName: source.accountName,
            directoryTemplate: source.directoryTemplate,
            fileTemplate: source.fileTemplate,
            fileSystemName: source.fileSystemName,
          },
          authenticationType: source.authenticationType,
        };
      } else {
        return {
          dataSourceType: "AzureDataLakeStorageGen2",
          dataSourceParameter: {
            accountName: source.accountName,
            directoryTemplate: source.directoryTemplate,
            fileTemplate: source.fileTemplate,
            fileSystemName: source.fileSystemName,
          },
          authenticationType: source.authenticationType,
          credentialId: source.credentialId,
        };
      }
    case "AzureEventHubs":
      return {
        dataSourceType: "AzureEventHubs",
        dataSourceParameter: {
          connectionString: source.connectionString!,
          consumerGroup: source.consumerGroup,
        },
        authenticationType: source.authenticationType,
      };
    case "AzureLogAnalytics":
      if (source.authenticationType === "Basic") {
        return {
          dataSourceType: "AzureLogAnalytics",
          dataSourceParameter: {
            tenantId: source.tenantId,
            clientId: source.clientId,
            clientSecret: source.clientSecret!,
            workspaceId: source.workspaceId,
            query: source.query,
          },
          authenticationType: source.authenticationType,
        };
      } else {
        return {
          dataSourceType: "AzureLogAnalytics",
          dataSourceParameter: {
            workspaceId: source.workspaceId,
            query: source.query,
          },
          authenticationType: source.authenticationType,
          credentialId: source.credentialId,
        };
      }

    case "AzureTable":
      return {
        dataSourceType: "AzureTable",
        dataSourceParameter: {
          query: source.query,
          connectionString: source.connectionString,
          table: source.table,
        },
        authenticationType: source.authenticationType,
      };
    case "InfluxDB":
      return {
        dataSourceType: "InfluxDB",
        dataSourceParameter: {
          query: source.query,
          connectionString: source.connectionString,
          database: source.database,
          userName: source.userName,
          password: source.password,
        },
        authenticationType: source.authenticationType,
      };
    case "MySql":
      return {
        dataSourceType: "MySql",
        dataSourceParameter: {
          query: source.query,
          connectionString: source.connectionString,
        },
        authenticationType: source.authenticationType,
      };
    case "PostgreSql":
      return {
        dataSourceType: "PostgreSql",
        dataSourceParameter: {
          query: source.query,
          connectionString: source.connectionString,
        },
        authenticationType: source.authenticationType,
      };
    default:
      throw new Error(`Unexpected datafeed source type: '${source.dataSourceType}'`);
  }
}