@finos/legend-application-marketplace
Version:
Legend Marketplace application core
190 lines • 9.52 kB
JavaScript
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { DataProductSearchResult, LakehouseAdHocDataProductSearchResultOrigin, LakehouseDataProductSearchResultDetails, LakehouseSDLCDataProductSearchResultOrigin, LegacyDataProductSearchResultDetails, DataProductDetailsType, LakehouseDataProductSearchResultOriginType, } from '@finos/legend-server-marketplace';
import { generateGAVCoordinates, } from '@finos/legend-storage';
import { generateLakehouseDataProductPath, generateLegacyDataProductPath, generateSdlcDataProductPath, } from '../__lib__/LegendMarketplaceNavigation.js';
import { V1_SdlcDeploymentDataProductOrigin, } from '@finos/legend-graph';
export const getSearchResultProjectGAV = (searchResult) => {
if (searchResult.dataProductDetails instanceof
LakehouseDataProductSearchResultDetails &&
searchResult.dataProductDetails.origin instanceof
LakehouseSDLCDataProductSearchResultOrigin) {
const { groupId, artifactId, versionId } = searchResult.dataProductDetails.origin;
if (groupId === null || artifactId === null || versionId === null) {
return undefined;
}
return { groupId, artifactId, versionId };
}
else if (searchResult.dataProductDetails instanceof
LegacyDataProductSearchResultDetails) {
return {
groupId: searchResult.dataProductDetails.groupId,
artifactId: searchResult.dataProductDetails.artifactId,
versionId: searchResult.dataProductDetails.versionId,
};
}
else {
return undefined;
}
};
const hasNonLegacyDataProductLink = (link) => {
if (!link) {
return false;
}
try {
const url = new URL(link);
return (url.pathname.startsWith('/dataProduct/') &&
!url.pathname.startsWith('/dataProduct/legacy/'));
}
catch {
return false;
}
};
export const generatePathForDataProductSearchResult = (searchResult) => searchResult.dataProductDetails instanceof
LakehouseDataProductSearchResultDetails
? generateLakehouseDataProductPath(searchResult.dataProductDetails.dataProductId, searchResult.dataProductDetails.deploymentId)
: searchResult.dataProductDetails instanceof
LegacyDataProductSearchResultDetails
? hasNonLegacyDataProductLink(searchResult.data_product_link)
? generateSdlcDataProductPath(generateGAVCoordinates(searchResult.dataProductDetails.groupId, searchResult.dataProductDetails.artifactId, searchResult.dataProductDetails.versionId), searchResult.dataProductDetails.path)
: generateLegacyDataProductPath(generateGAVCoordinates(searchResult.dataProductDetails.groupId, searchResult.dataProductDetails.artifactId, searchResult.dataProductDetails.versionId), searchResult.dataProductDetails.path)
: undefined;
export const convertEntitlementsDataProductDetailsToSearchResult = (entitlementsDataProductDetails) => {
const searchResult = new DataProductSearchResult();
searchResult.dataProductTitle = entitlementsDataProductDetails.title
? entitlementsDataProductDetails.title
: entitlementsDataProductDetails.dataProduct.name;
searchResult.dataProductDescription =
entitlementsDataProductDetails.description ?? '';
const details = new LakehouseDataProductSearchResultDetails();
details.dataProductId = entitlementsDataProductDetails.id;
details.deploymentId = entitlementsDataProductDetails.deploymentId;
details.producerEnvironmentName =
entitlementsDataProductDetails.lakehouseEnvironment
?.producerEnvironmentName ?? '';
details.producerEnvironmentType =
entitlementsDataProductDetails.lakehouseEnvironment?.type;
if (entitlementsDataProductDetails.origin instanceof
V1_SdlcDeploymentDataProductOrigin) {
const origin = new LakehouseSDLCDataProductSearchResultOrigin();
origin.groupId = entitlementsDataProductDetails.origin.group;
origin.artifactId = entitlementsDataProductDetails.origin.artifact;
origin.versionId = entitlementsDataProductDetails.origin.version;
origin.path = entitlementsDataProductDetails.dataProduct.name;
details.origin = origin;
}
else {
const origin = new LakehouseAdHocDataProductSearchResultOrigin();
details.origin = origin;
}
searchResult.dataProductDetails = details;
return searchResult;
};
export const convertLegacyDataProductToSearchResult = (legacyDataProduct, groupId, artifactid, versionId) => {
const searchResult = new DataProductSearchResult();
searchResult.dataProductTitle =
legacyDataProduct.title ?? legacyDataProduct.name;
searchResult.dataProductDescription = legacyDataProduct.description ?? '';
const details = new LegacyDataProductSearchResultDetails();
details.groupId = groupId;
details.artifactId = artifactid;
details.versionId = versionId;
details.path = legacyDataProduct.path;
searchResult.dataProductDetails = details;
return searchResult;
};
export const convertAutosuggestResultToSearchResult = (autosuggestResult) => {
const searchResult = new DataProductSearchResult();
searchResult.dataProductTitle = autosuggestResult.dataProductName;
searchResult.dataProductDescription =
autosuggestResult.dataProductDescription;
searchResult.tags1 = [];
searchResult.tags2 = [];
searchResult.tag_score = 0;
searchResult.similarity = 0;
const details = autosuggestResult.dataProductDetails;
if (details._type === DataProductDetailsType.LAKEHOUSE) {
const lakehouseDetails = new LakehouseDataProductSearchResultDetails();
lakehouseDetails.dataProductId = details.dataProductId ?? '';
lakehouseDetails.deploymentId = details.deploymentId ?? 0;
lakehouseDetails.producerEnvironmentName =
details.producerEnvironmentName ?? '';
lakehouseDetails.producerEnvironmentType =
details.producerEnvironmentType;
// Set origin based on whether origin data exists
if (details.origin) {
const sdlcOrigin = new LakehouseSDLCDataProductSearchResultOrigin();
sdlcOrigin.groupId = details.origin.groupId;
sdlcOrigin.artifactId = details.origin.artifactId;
sdlcOrigin.versionId = details.origin.versionId;
sdlcOrigin.path = details.origin.path;
lakehouseDetails.origin = sdlcOrigin;
}
else {
lakehouseDetails.origin =
new LakehouseAdHocDataProductSearchResultOrigin();
}
searchResult.dataProductDetails = lakehouseDetails;
}
else if (details._type === DataProductDetailsType.LEGACY) {
const legacyDetails = new LegacyDataProductSearchResultDetails();
legacyDetails.groupId = details.groupId;
legacyDetails.artifactId = details.artifactId;
legacyDetails.versionId = details.versionId;
legacyDetails.path = details.path;
searchResult.dataProductDetails = legacyDetails;
}
return searchResult;
};
export const convertTrendingEntryToSearchResult = (entry) => {
const searchResult = new DataProductSearchResult();
searchResult.dataProductTitle = entry.dataProductName ?? entry.productName;
searchResult.dataProductDescription = entry.productDescription ?? '';
searchResult.dataProductSource = entry.dataProductSource;
searchResult.licenseTo = entry.licenseTo;
searchResult.tag_score = 0;
searchResult.similarity = 0;
if (entry.dataProductType === DataProductDetailsType.LAKEHOUSE) {
const details = new LakehouseDataProductSearchResultDetails();
details.dataProductId = entry.dataProductId ?? '';
details.deploymentId = Number(entry.deploymentId ?? 0);
details.producerEnvironmentName = entry.producerEnvironmentName ?? '';
details.producerEnvironmentType =
entry.producerEnvironmentType;
if (entry.originType === LakehouseDataProductSearchResultOriginType.SDLC) {
const origin = new LakehouseSDLCDataProductSearchResultOrigin();
origin.groupId = entry.groupId ?? '';
origin.artifactId = entry.artifactId ?? '';
origin.versionId = entry.versionId ?? '';
origin.path = entry.dataProductPath ?? '';
details.origin = origin;
}
else {
details.origin = new LakehouseAdHocDataProductSearchResultOrigin();
}
searchResult.dataProductDetails = details;
}
else {
const details = new LegacyDataProductSearchResultDetails();
details.groupId = entry.groupId ?? '';
details.artifactId = entry.artifactId ?? '';
details.versionId = entry.versionId ?? '';
details.path = entry.dataProductPath ?? '';
searchResult.dataProductDetails = details;
}
return searchResult;
};
//# sourceMappingURL=SearchUtils.js.map