@finos/legend-server-marketplace
Version:
Legend Marketplace server client
233 lines (209 loc) • 7.35 kB
text/typescript
/**
* 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 type { V1_EntitlementsLakehouseEnvironmentType } from '@finos/legend-graph';
import {
customListWithSchema,
SerializationFactory,
usingConstantValueSchema,
usingModelSchema,
} from '@finos/legend-shared';
import {
createModelSchema,
custom,
list,
optional,
primitive,
raw,
} from 'serializr';
import {
deserializeDataProductSearchResultDetails,
deserializeLakehouseDataProductSearchResultOrigin,
serializeDataProductSearchResultDetails,
serializeLakehouseDataProductSearchResultOrigin,
} from '../serializationHelpers/DataProductSerializationHelper.js';
import type { TaxonomyNode } from './Taxonomy.js';
export enum DataProductSearchResultDetailsType {
LAKEHOUSE = 'lakehouse',
LEGACY = 'legacy',
ERROR = 'error',
}
export enum LakehouseDataProductSearchResultOriginType {
SDLC = 'SdlcDeployment',
AD_HOC = 'AdHocDeployment',
}
export abstract class LakehouseDataProductSearchResultOrigin {}
export class LakehouseSDLCDataProductSearchResultOrigin extends LakehouseDataProductSearchResultOrigin {
groupId!: string | null;
artifactId!: string | null;
versionId!: string | null;
path!: string | null;
static readonly serialization = new SerializationFactory(
createModelSchema(LakehouseSDLCDataProductSearchResultOrigin, {
_type: usingConstantValueSchema(
LakehouseDataProductSearchResultOriginType.SDLC,
),
groupId: primitive(),
artifactId: primitive(),
versionId: primitive(),
path: primitive(),
}),
);
}
export class LakehouseAdHocDataProductSearchResultOrigin extends LakehouseDataProductSearchResultOrigin {
static readonly serialization = new SerializationFactory(
createModelSchema(LakehouseAdHocDataProductSearchResultOrigin, {
_type: usingConstantValueSchema(
LakehouseDataProductSearchResultOriginType.AD_HOC,
),
}),
);
}
export abstract class DataProductSearchResultDetails {}
export class LakehouseDataProductSearchResultDetails extends DataProductSearchResultDetails {
dataProductId!: string;
deploymentId!: number;
producerEnvironmentName!: string;
producerEnvironmentType!: V1_EntitlementsLakehouseEnvironmentType | undefined;
origin!: LakehouseDataProductSearchResultOrigin | null;
static readonly serialization = new SerializationFactory(
createModelSchema(LakehouseDataProductSearchResultDetails, {
_type: usingConstantValueSchema(
DataProductSearchResultDetailsType.LAKEHOUSE,
),
dataProductId: primitive(),
deploymentId: primitive(),
producerEnvironmentName: primitive(),
producerEnvironmentType: optional(primitive()),
origin: custom(
serializeLakehouseDataProductSearchResultOrigin,
deserializeLakehouseDataProductSearchResultOrigin,
),
}),
);
}
export class LegacyDataProductSearchResultDetails extends DataProductSearchResultDetails {
groupId!: string;
artifactId!: string;
versionId!: string;
path!: string;
static readonly serialization = new SerializationFactory(
createModelSchema(LegacyDataProductSearchResultDetails, {
_type: usingConstantValueSchema(
DataProductSearchResultDetailsType.LEGACY,
),
groupId: primitive(),
artifactId: primitive(),
versionId: primitive(),
path: primitive(),
}),
);
}
export class ErrorDataProductSearchResultDetails extends DataProductSearchResultDetails {
message?: string;
static readonly serialization = new SerializationFactory(
createModelSchema(ErrorDataProductSearchResultDetails, {
_type: usingConstantValueSchema(DataProductSearchResultDetailsType.ERROR),
message: optional(primitive()),
}),
);
}
export class DataProductSearchResultMetadata {
next_page_number!: number | null;
num_pages!: number;
page_number!: number;
page_size!: number;
prev_page_number!: number | null;
total_count!: number;
lakehouse_count: number | undefined;
legacy_count: number | undefined;
external_source_count: number | undefined;
has_filtered_products: boolean | undefined;
static readonly serialization = new SerializationFactory(
createModelSchema(DataProductSearchResultMetadata, {
next_page_number: optional(primitive()),
num_pages: primitive(),
page_number: primitive(),
page_size: primitive(),
prev_page_number: optional(primitive()),
total_count: primitive(),
lakehouse_count: optional(primitive()),
legacy_count: optional(primitive()),
external_source_count: optional(primitive()),
has_filtered_products: optional(primitive()),
}),
);
}
export class DataProductSearchResult {
dataProductTitle!: string | null;
dataProductDescription!: string | null;
tags1!: string[];
tags2!: string[];
tag_score!: number;
similarity!: number;
dataProductDetails!: DataProductSearchResultDetails;
dataProductSource!: string | undefined;
licenseTo!: string | undefined;
hygiene_score: number | null | undefined;
meets_hygiene_threshold: boolean | undefined;
static readonly serialization = new SerializationFactory(
createModelSchema(DataProductSearchResult, {
dataProductTitle: optional(primitive()),
dataProductDescription: optional(primitive()),
embedding_type: primitive(),
vendor_name: primitive(),
tags1: list(primitive()),
tags2: list(primitive()),
tag_score: primitive(),
similarity: primitive(),
dataProductDetails: custom(
serializeDataProductSearchResultDetails,
deserializeDataProductSearchResultDetails,
),
dataProductSource: optional(primitive()),
licenseTo: optional(primitive()),
hygiene_score: optional(primitive()),
meets_hygiene_threshold: optional(primitive()),
}),
);
}
export class DataProductSearchFiltersMetadata {
taxonomy_tree!: TaxonomyNode[];
static readonly serialization = new SerializationFactory(
createModelSchema(DataProductSearchFiltersMetadata, {
taxonomy_tree: list(raw()),
}),
);
}
export class DataProductSearchResponse {
results!: DataProductSearchResult[];
as_of_time!: string;
metadata!: DataProductSearchResultMetadata;
filters_metadata?: DataProductSearchFiltersMetadata;
static readonly serialization = new SerializationFactory(
createModelSchema(DataProductSearchResponse, {
results: customListWithSchema(
DataProductSearchResult.serialization.schema,
),
as_of_time: primitive(),
metadata: usingModelSchema(
DataProductSearchResultMetadata.serialization.schema,
),
filters_metadata: optional(
usingModelSchema(DataProductSearchFiltersMetadata.serialization.schema),
),
}),
);
}