Skip to content

Commit

Permalink
Adding filter field on master record definition resolution query (#2961)
Browse files Browse the repository at this point in the history
* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query

* feat: adding filter field to resolution query
  • Loading branch information
sahil37 authored Feb 23, 2024
1 parent 75d25e4 commit e024416
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .changeset/wicked-rice-hear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@finos/legend-extension-dsl-mastery': patch
---

feat: adding filter field to resolution key
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,42 @@ export const TEST_DATA__roundtrip = [
],
},
],
filter: {
_type: 'lambda',
body: [
{
_type: 'func',
function: 'equal',
parameters: [
{
_type: 'property',
parameters: [
{
_type: 'var',
name: 'input',
},
],
property: 'name',
},
{
_type: 'string',
value: 'Bob',
},
],
},
],
parameters: [
{
_type: 'var',
class: 'mastery::test::model::Person',
multiplicity: {
lowerBound: 1,
upperBound: 1,
},
name: 'input',
},
],
},
},
],
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,13 @@ export class V1_ResolutionQuery implements Hashable {
queries!: V1_RawLambda[];
keyType?: string | undefined;
optional?: boolean | undefined;
filter?: V1_RawLambda | undefined;
precedence!: number;

get hashCode(): string {
return hashArray([
MASTERY_HASH_STRUCTURE.RESOLUTION_QUERY,
this.filter ?? '',
this.keyType ?? '',
this.optional?.toString() ?? '',
this.precedence.toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,9 @@ export const V1_transformResolutionQuery = (
context: V1_GraphTransformerContext,
): V1_ResolutionQuery => {
const resolutionQuery = new V1_ResolutionQuery();
resolutionQuery.filter = element.filter
? V1_transformRawLambda(element.filter, context)
: undefined;
resolutionQuery.keyType = element.keyType;
resolutionQuery.optional = element.optional;
resolutionQuery.precedence = element.precedence;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,13 @@ export const V1_buildResolutionQuery = (
context: V1_GraphBuilderContext,
): ResolutionQuery => {
const resolutionQuery = new ResolutionQuery();
resolutionQuery.filter = protocol.filter
? V1_buildRawLambdaWithResolvedPaths(
protocol.filter.parameters,
protocol.filter.body,
context,
)
: undefined;
resolutionQuery.keyType = protocol.keyType;
resolutionQuery.optional = protocol.optional;
resolutionQuery.precedence = protocol.precedence;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -667,6 +667,7 @@ const V1_recordSourceSchema = (
**********/

const V1_resolutionQuerySchema = createModelSchema(V1_ResolutionQuery, {
filter: optional(usingModelSchema(V1_rawLambdaModelSchema)),
keyType: optional(primitive()),
optional: optional(primitive()),
precedence: primitive(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ export class IdentityResolution implements Hashable {
}

export class ResolutionQuery implements Hashable {
filter?: RawLambda | undefined;
keyType?: string | undefined;
optional?: boolean | undefined;
precedence!: number;
Expand All @@ -45,6 +46,7 @@ export class ResolutionQuery implements Hashable {
get hashCode(): string {
return hashArray([
MASTERY_HASH_STRUCTURE.RESOLUTION_QUERY,
this.filter ?? '',
this.keyType ?? '',
this.optional?.toString() ?? '',
this.precedence.toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ MasterRecordDefinition alloy::mastery::WidgetMasterRecord
];
keyType: AlternateKey;
precedence: 2;
filter: {input: org::dataeng::Widget[1]|$input.widgetId == 'Test'};
}
]
}
Expand Down

0 comments on commit e024416

Please sign in to comment.