-
-
Notifications
You must be signed in to change notification settings - Fork 158
/
Copy pathConstellationDefinition.cs
33 lines (26 loc) · 1.65 KB
/
ConstellationDefinition.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using JetBrains.Annotations;
using JsonApiDotNetCore.Configuration;
using JsonApiDotNetCore.Queries.Expressions;
using JsonApiDotNetCore.Resources.Annotations;
namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading;
[UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)]
public sealed class ConstellationDefinition(
IResourceGraph resourceGraph, IClientSettingsProvider clientSettingsProvider, ResourceDefinitionHitCounter hitCounter)
: HitCountingResourceDefinition<Constellation, int>(resourceGraph, hitCounter)
{
private readonly IClientSettingsProvider _clientSettingsProvider = clientSettingsProvider;
protected override ResourceDefinitionExtensibilityPoints ExtensibilityPointsToTrack => ResourceDefinitionExtensibilityPoints.Reading;
public override FilterExpression? OnApplyFilter(FilterExpression? existingFilter)
{
FilterExpression? baseFilter = base.OnApplyFilter(existingFilter);
if (_clientSettingsProvider.AreConstellationsVisibleDuringWinterHidden)
{
AttrAttribute visibleDuringAttribute = ResourceType.GetAttributeByPropertyName(nameof(Constellation.VisibleDuring));
var visibleDuringChain = new ResourceFieldChainExpression(visibleDuringAttribute);
var visibleDuringComparison = new ComparisonExpression(ComparisonOperator.Equals, visibleDuringChain, new LiteralConstantExpression(Season.Winter));
var notVisibleDuringComparison = new NotExpression(visibleDuringComparison);
return LogicalExpression.Compose(LogicalOperator.And, baseFilter, notVisibleDuringComparison);
}
return baseFilter;
}
}