diff --git a/api/v3/wms_types.go b/api/v3/wms_types.go index a6024ab..3b19f20 100644 --- a/api/v3/wms_types.go +++ b/api/v3/wms_types.go @@ -244,6 +244,12 @@ type Layer struct { // +kubebuilder:validation:Pattern:=`^[1-9][0-9]*(.[0-9]+)?$` MaxScaleDenominator *string `json:"maxscaledenominator,omitempty"` + // The column where the data needs to get filtered + FilterColumn *string `json:"filterColumn,omitempty"` + + // The value where the data needs to get filtered + FilterValue *string `json:"filterValue,omitempty"` + // List of styles used by the layer // +kubebuilder:validation:MinItems:=1 Styles []Style `json:"styles,omitempty"` diff --git a/api/v3/zz_generated.deepcopy.go b/api/v3/zz_generated.deepcopy.go index 0f1ccdd..f6738ae 100644 --- a/api/v3/zz_generated.deepcopy.go +++ b/api/v3/zz_generated.deepcopy.go @@ -626,6 +626,16 @@ func (in *Layer) DeepCopyInto(out *Layer) { *out = new(string) **out = **in } + if in.FilterColumn != nil { + in, out := &in.FilterColumn, &out.FilterColumn + *out = new(string) + **out = **in + } + if in.FilterValue != nil { + in, out := &in.FilterValue, &out.FilterValue + *out = new(string) + **out = **in + } if in.Styles != nil { in, out := &in.Styles, &out.Styles *out = make([]Style, len(*in)) diff --git a/config/crd/bases/pdok.nl_wms.yaml b/config/crd/bases/pdok.nl_wms.yaml index 0fa86d8..2d08b00 100644 --- a/config/crd/bases/pdok.nl_wms.yaml +++ b/config/crd/bases/pdok.nl_wms.yaml @@ -911,6 +911,12 @@ spec: x-kubernetes-validations: - message: metadataUrl should have exactly 1 of csw or custom rule: (has(self.csw) || has(self.custom)) && !(has(self.csw) && has(self.custom)) + filterColumn: + description: The column where the data needs to get filtered + type: string + filterValue: + description: The value where the data needs to get filtered + type: string keywords: description: Keywords of the layer, required if the layer is visible items: @@ -1120,6 +1126,12 @@ spec: x-kubernetes-validations: - message: metadataUrl should have exactly 1 of csw or custom rule: (has(self.csw) || has(self.custom)) && !(has(self.csw) && has(self.custom)) + filterColumn: + description: The column where the data needs to get filtered + type: string + filterValue: + description: The value where the data needs to get filtered + type: string keywords: description: Keywords of the layer, required if the layer is visible items: @@ -1332,6 +1344,12 @@ spec: x-kubernetes-validations: - message: metadataUrl should have exactly 1 of csw or custom rule: (has(self.csw) || has(self.custom)) && !(has(self.csw) && has(self.custom)) + filterColumn: + description: The column where the data needs to get filtered + type: string + filterValue: + description: The value where the data needs to get filtered + type: string keywords: description: Keywords of the layer, required if the layer is visible items: diff --git a/internal/controller/mapfilegenerator/mapper.go b/internal/controller/mapfilegenerator/mapper.go index c2efde9..199cd43 100644 --- a/internal/controller/mapfilegenerator/mapper.go +++ b/internal/controller/mapfilegenerator/mapper.go @@ -291,6 +291,8 @@ func getWMSLayer(serviceLayer pdoknlv3.Layer, serviceExtent string, wms *pdoknlv Postgis: nil, MinScale: serviceLayer.MinScaleDenominator, MaxScale: serviceLayer.MaxScaleDenominator, + FilterColumn: serviceLayer.FilterColumn, + FilterValue: serviceLayer.FilterValue, LabelNoClip: serviceLayer.LabelNoClip, }, GroupName: groupName, diff --git a/internal/controller/mapfilegenerator/test_data/expected/wms_group.json b/internal/controller/mapfilegenerator/test_data/expected/wms_group.json index 57a00d4..98aff93 100644 --- a/internal/controller/mapfilegenerator/test_data/expected/wms_group.json +++ b/internal/controller/mapfilegenerator/test_data/expected/wms_group.json @@ -86,7 +86,9 @@ "keywords": "Hydroobject,Waterbody,Watercourse,River,Stream,Lake,Reservoir", "layer_extent": "-59188.44333693248 304984.64144318487 308126.88473339565 858328.516489961", "maxscale": "50000", - "minscale": "1", + "minscale": "2", + "filtercolumn": "gml_id", + "filtervalue": "1", "name": "HY.PhysicalWaters.Waterbodies", "styles": [ { diff --git a/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml b/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml index 20e2937..df69805 100644 --- a/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml +++ b/internal/controller/mapfilegenerator/test_data/input/wms_group.yaml @@ -171,7 +171,9 @@ spec: - Lake - Reservoir maxscaledenominator: "50000" - minscaledenominator: "1" + minscaledenominator: "2" + filter_column: "gml_id" + filter_value: "1" name: HY.PhysicalWaters.Waterbodies styles: - name: HY.PhysicalWaters.Waterbodies.Default diff --git a/internal/controller/mapfilegenerator/types.go b/internal/controller/mapfilegenerator/types.go index 084cb4a..ccc02e0 100644 --- a/internal/controller/mapfilegenerator/types.go +++ b/internal/controller/mapfilegenerator/types.go @@ -66,6 +66,8 @@ type BaseLayer struct { Postgis *bool `json:"postgis,omitempty"` MinScale *string `json:"minscale,omitempty"` MaxScale *string `json:"maxscale,omitempty"` + FilterColumn *string `json:"filter_column,omitempty"` + FilterValue *string `json:"filter_value,omitempty"` TifPath *string `json:"tif_path,omitempty"` Resample *string `json:"resample,omitempty"` OversampleRatio *string `json:"oversample_ratio,omitempty"`