Skip to content

Commit 8119171

Browse files
committed
Setup mapfile generator config
1 parent 3eb69e3 commit 8119171

File tree

11 files changed

+254
-75
lines changed

11 files changed

+254
-75
lines changed

api/v2beta1/shared_conversion.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ func ConverseResources(src corev1.ResourceRequirements) *corev1.PodSpec {
8383
}
8484
}
8585

86-
func ConverseColumnAndAliasesV2ToColumnsWithAliasV3(columns []string, aliases map[string]string) []pdoknlv3.Columns {
87-
v3Columns := make([]pdoknlv3.Columns, 0)
86+
func ConverseColumnAndAliasesV2ToColumnsWithAliasV3(columns []string, aliases map[string]string) []pdoknlv3.Column {
87+
v3Columns := make([]pdoknlv3.Column, 0)
8888
for _, column := range columns {
89-
col := pdoknlv3.Columns{
89+
col := pdoknlv3.Column{
9090
Name: column,
9191
}
9292

@@ -101,7 +101,7 @@ func ConverseColumnAndAliasesV2ToColumnsWithAliasV3(columns []string, aliases ma
101101
return v3Columns
102102
}
103103

104-
func ConverseColumnsWithAliasV3ToColumnsAndAliasesV2(columns []pdoknlv3.Columns) ([]string, map[string]string) {
104+
func ConverseColumnsWithAliasV3ToColumnsAndAliasesV2(columns []pdoknlv3.Column) ([]string, map[string]string) {
105105
v2Columns := make([]string, 0)
106106
v2Aliases := make(map[string]string)
107107

api/v3/shared_types.go

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@ type Data struct {
4848
}
4949

5050
type Gpkg struct {
51-
BlobKey string `json:"blobKey"`
52-
TableName string `json:"tableName"`
53-
GeometryType string `json:"geometryType"`
54-
Columns []Columns `json:"columns"`
51+
BlobKey string `json:"blobKey"`
52+
TableName string `json:"tableName"`
53+
GeometryType string `json:"geometryType"`
54+
Columns []Column `json:"columns"`
5555
}
5656

5757
// Postgis - reference to table in a Postgres database
5858
type Postgis struct {
59-
TableName string `json:"tableName"`
60-
GeometryType string `json:"geometryType"`
61-
Columns []Columns `json:"columns"`
59+
TableName string `json:"tableName"`
60+
GeometryType string `json:"geometryType"`
61+
Columns []Column `json:"columns"`
6262
}
6363

6464
type TIF struct {
@@ -68,7 +68,7 @@ type TIF struct {
6868
GetFeatureInfoIncludesClass *bool `json:"getFeatureInfoIncludesClass,omitempty"`
6969
}
7070

71-
type Columns struct {
71+
type Column struct {
7272
Name string `json:"name"`
7373
Alias *string `json:"alias,omitempty"`
7474
}
@@ -80,3 +80,36 @@ func SetBaseURL(url string) {
8080
func GetBaseURL() string {
8181
return baseURL
8282
}
83+
84+
func (d *Data) GetColumns() *[]Column {
85+
switch {
86+
case d.Gpkg != nil:
87+
return &d.Gpkg.Columns
88+
case d.Postgis != nil:
89+
return &d.Postgis.Columns
90+
default:
91+
return nil
92+
}
93+
}
94+
95+
func (d *Data) GetTableName() *string {
96+
switch {
97+
case d.Gpkg != nil:
98+
return &d.Gpkg.TableName
99+
case d.Postgis != nil:
100+
return &d.Postgis.TableName
101+
default:
102+
return nil
103+
}
104+
}
105+
106+
func (d *Data) GetGeometryType() *string {
107+
switch {
108+
case d.Gpkg != nil:
109+
return &d.Gpkg.GeometryType
110+
case d.Postgis != nil:
111+
return &d.Postgis.GeometryType
112+
default:
113+
return nil
114+
}
115+
}

api/v3/wfs_types.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,12 @@ type FeatureBbox struct {
117117
DefaultCRS shared_model.BBox `json:"defaultCRS"`
118118
WGS84 *shared_model.BBox `json:"wgs84,omitempty"`
119119
}
120+
121+
func (wfs *WFS) HasPostgisData() bool {
122+
for _, featureType := range wfs.Spec.Service.FeatureTypes {
123+
if featureType.Data.Postgis != nil {
124+
return true
125+
}
126+
}
127+
return false
128+
}

api/v3/zz_generated.deepcopy.go

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
sigs.k8s.io/yaml v1.4.0
1515
)
1616

17-
require github.com/pdok/smooth-operator v0.0.5
17+
require github.com/pdok/smooth-operator v0.0.6
1818

1919
require (
2020
cel.dev/expr v0.18.0 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM
9999
github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
100100
github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
101101
github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
102-
github.com/pdok/smooth-operator v0.0.5 h1:7tgMeAEG34JlW6GlfxfHH+RV7c6uE6621FXv+vzfDGo=
103-
github.com/pdok/smooth-operator v0.0.5/go.mod h1:oZWFuIKJGjN/C6ocgMNfMZ7SbLQi+N0qaWj7j95Wdec=
102+
github.com/pdok/smooth-operator v0.0.6 h1:IwgY3X2zYA2XLw0eKmBBN1Md6gNWnoVl0i1R8/wFHvs=
103+
github.com/pdok/smooth-operator v0.0.6/go.mod h1:oZWFuIKJGjN/C6ocgMNfMZ7SbLQi+N0qaWj7j95Wdec=
104104
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
105105
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
106106
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

internal/controller/mapfilegenerator/mapfile_generator.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,14 @@ func GetConfig[W *pdoknlv3.WFS | *pdoknlv3.WMS](webservice W, ownerInfo *smootho
2525
}
2626

2727
func createConfigForWFS(wfs *pdoknlv3.WFS, ownerInfo *smoothoperatorv1.OwnerInfo) (config string, err error) {
28-
2928
input, err := MapWFSToMapfileGeneratorInput(wfs, ownerInfo)
3029
if err != nil {
3130
return "", err
3231
}
3332

34-
u, err := json.MarshalIndent(input, "", " ")
33+
jsonConfig, err := json.MarshalIndent(input, "", " ")
3534
if err != nil {
3635
return "", err
3736
}
38-
return string(u), nil
39-
37+
return string(jsonConfig), nil
4038
}

internal/controller/mapfilegenerator/mapfile_generator_test.go

Lines changed: 102 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import (
44
pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
55
smoothoperatorv1 "github.com/pdok/smooth-operator/api/v1"
66
shared_model "github.com/pdok/smooth-operator/model"
7+
smoothoperatorutils "github.com/pdok/smooth-operator/pkg/util"
78
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
89
"testing"
910
)
1011

1112
const (
1213
WFSConfig = `{
1314
"service_title": "some Service title",
14-
"service_abstract": "some \"Service\" abstract",
15+
"service_abstract": "some \\\"Service\\\" abstract",
1516
"service_keywords": "service-keyword-1,service-keyword-2,infoFeatureAccessService",
1617
"service_accessconstraints": "http://creativecommons.org/publicdomain/zero/1.0/deed.nl",
1718
"service_extent": "0.0 2.0 1.0 3.0",
@@ -21,8 +22,6 @@ const (
2122
"service_onlineresource": "http://localhost",
2223
"service_path": "/datasetOwner/dataset/theme/wfs/v1_0",
2324
"service_metadata_id": "metameta-meta-meta-meta-metametameta",
24-
"dataset_owner": "",
25-
"authority_url": "",
2625
"automatic_casing": true,
2726
"data_epsg": "EPSG:28992",
2827
"epsg_list": [
@@ -37,17 +36,49 @@ const (
3736
],
3837
"layers": [
3938
{
40-
"name": "",
41-
"title": "",
42-
"abstract": "",
43-
"keywords": "",
44-
"layer_extent": "",
45-
"dataset_metadata_id": "",
46-
"dataset_source_id": "",
47-
"columns": null,
48-
"geometry_type": "",
49-
"gpkg_path": "",
50-
"tablename": ""
39+
"name": "featuretype-1-name",
40+
"title": "featuretype-1-title",
41+
"abstract": "feature \\\"1\\\" abstract",
42+
"keywords": "featuretype-1-keyword-1,featuretype-1-keyword-2",
43+
"layer_extent": "0.0 2.0 1.0 3.0",
44+
"dataset_metadata_id": "datadata-data-data-data-datadatadata",
45+
"columns": [
46+
{
47+
"name": "fuuid"
48+
},
49+
{
50+
"name": "featuretype-1-column-1"
51+
},
52+
{
53+
"name": "featuretype-1-column-2"
54+
}
55+
],
56+
"geometry_type": "Point",
57+
"gpkg_path": "/srv/data/gpkg/file-1.gpkg",
58+
"tablename": "featuretype-1"
59+
},
60+
{
61+
"name": "featuretype-2-name",
62+
"title": "featuretype-2-title",
63+
"abstract": "feature \\\"2\\\" abstract",
64+
"keywords": "featuretype-2-keyword-1,featuretype-2-keyword-2",
65+
"layer_extent": "0.0 2.0 1.0 3.0",
66+
"dataset_metadata_id": "datadata-data-data-data-datadatadata",
67+
"columns": [
68+
{
69+
"name": "fuuid"
70+
},
71+
{
72+
"name": "featuretype-2-column-1",
73+
"alias": "alias_featuretype-2-column-1"
74+
},
75+
{
76+
"name": "featuretype-2-column-2"
77+
}
78+
],
79+
"geometry_type": "MultiLine",
80+
"tablename": "featuretype-2",
81+
"postgis": true
5182
}
5283
]
5384
}`
@@ -114,7 +145,63 @@ func TestGetConfigForWFS(t *testing.T) {
114145
},
115146
FeatureTypes: []pdoknlv3.FeatureType{
116147
{
117-
Title: "featuretype-1-name",
148+
Name: "featuretype-1-name",
149+
Title: "featuretype-1-title",
150+
Abstract: "feature \"1\" abstract",
151+
Keywords: []string{"featuretype-1-keyword-1", "featuretype-1-keyword-2"},
152+
DatasetMetadataURL: pdoknlv3.MetadataURL{
153+
CSW: &pdoknlv3.Metadata{
154+
MetadataIdentifier: "datadata-data-data-data-datadatadata",
155+
},
156+
},
157+
Bbox: &pdoknlv3.FeatureBbox{
158+
DefaultCRS: shared_model.BBox{
159+
MinX: "0.0",
160+
MaxX: "1.0",
161+
MinY: "2.0",
162+
MaxY: "3.0",
163+
},
164+
},
165+
Data: pdoknlv3.Data{
166+
Gpkg: &pdoknlv3.Gpkg{
167+
TableName: "featuretype-1",
168+
GeometryType: "Point",
169+
BlobKey: "public/testme/gpkg/file-1.gpkg",
170+
Columns: []pdoknlv3.Column{
171+
{Name: "featuretype-1-column-1"},
172+
{Name: "featuretype-1-column-2"},
173+
},
174+
},
175+
},
176+
},
177+
{
178+
Name: "featuretype-2-name",
179+
Title: "featuretype-2-title",
180+
Abstract: "feature \"2\" abstract",
181+
Keywords: []string{"featuretype-2-keyword-1", "featuretype-2-keyword-2"},
182+
DatasetMetadataURL: pdoknlv3.MetadataURL{
183+
CSW: &pdoknlv3.Metadata{
184+
MetadataIdentifier: "datadata-data-data-data-datadatadata",
185+
},
186+
},
187+
Bbox: &pdoknlv3.FeatureBbox{
188+
DefaultCRS: shared_model.BBox{
189+
MinX: "0.0",
190+
MaxX: "1.0",
191+
MinY: "2.0",
192+
MaxY: "3.0",
193+
},
194+
},
195+
Data: pdoknlv3.Data{
196+
Postgis: &pdoknlv3.Postgis{
197+
TableName: "featuretype-2",
198+
GeometryType: "MultiLine",
199+
Columns: []pdoknlv3.Column{
200+
{Name: "featuretype-2-column-1", Alias: smoothoperatorutils.Pointer("alias_featuretype-2-column-1")},
201+
{Name: "featuretype-2-column-2"},
202+
},
203+
},
204+
},
118205
},
119206
},
120207
Prefix: "prefix",

0 commit comments

Comments
 (0)