Skip to content

Commit 3915996

Browse files
feat(CREATE): add configuration option to enable/disable database writes
1 parent e0594ba commit 3915996

File tree

6 files changed

+19
-2
lines changed

6 files changed

+19
-2
lines changed

config/pg_featureserv.toml.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ WriteTimeoutSec = 30
6868
# Publish functions from these schemas (default is publish postgisftw)
6969
# FunctionIncludes = [ "postgisftw", "schema2" ]
7070

71+
# Allow write changes to database. Default is to read only.
72+
# AllowWrite = false
73+
7174
[Paging]
7275
# The default number of features in a response
7376
LimitDefault = 20

hugo/content/installation/configuration.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ WriteTimeoutSec = 30
118118
# Publish functions from these schemas (default is publish postgisftw)
119119
# FunctionIncludes = [ "postgisftw", "schema2" ]
120120

121+
# Allow write changes to database. Default is to read only.
122+
# AllowWrite = false
123+
121124
[Paging]
122125
# The default number of features in a response
123126
LimitDefault = 20

internal/conf/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func setDefaultConfig() {
4444
viper.SetDefault("Database.TableIncludes", []string{})
4545
viper.SetDefault("Database.TableExcludes", []string{})
4646
viper.SetDefault("Database.FunctionIncludes", []string{"postgisftw"})
47+
viper.SetDefault("Database.AllowWrite", false)
4748

4849
viper.SetDefault("Paging.LimitDefault", 10)
4950
viper.SetDefault("Paging.LimitMax", 1000)
@@ -94,6 +95,7 @@ type Database struct {
9495
TableIncludes []string
9596
TableExcludes []string
9697
FunctionIncludes []string
98+
AllowWrite bool
9799
}
98100

99101
// Metadata config

internal/service/db_test/handler_db_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"testing"
1313

1414
"github.com/CrunchyData/pg_featureserv/internal/api"
15+
"github.com/CrunchyData/pg_featureserv/internal/conf"
1516
"github.com/CrunchyData/pg_featureserv/internal/data"
1617
"github.com/CrunchyData/pg_featureserv/internal/service"
1718
"github.com/CrunchyData/pg_featureserv/util"
@@ -23,6 +24,8 @@ var db *pgxpool.Pool
2324
var cat data.Catalog
2425

2526
func TestMain(m *testing.M) {
27+
conf.Configuration.Database.AllowWrite = true
28+
2629
db = util.CreateTestDb()
2730
defer util.CloseTestDb(db)
2831

internal/service/handler.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,12 @@ func InitRouter(basePath string) *mux.Router {
6161

6262
addRoute(router, "/collections/{id}/items", handleCollectionItems)
6363
addRoute(router, "/collections/{id}/items.{fmt}", handleCollectionItems)
64-
addRouteWithMethod(router, "/collections/{id}/items", handleCreateCollectionItem, "POST")
6564

66-
addRoute(router, "/collections/{id}/schema", handleCollectionSchemas)
65+
if conf.Configuration.Database.AllowWrite {
66+
addRouteWithMethod(router, "/collections/{id}/items", handleCreateCollectionItem, "POST")
67+
68+
addRoute(router, "/collections/{id}/schema", handleCollectionSchemas)
69+
}
6770

6871
addRoute(router, "/collections/{id}/items/{fid}", handleItem)
6972
addRoute(router, "/collections/{id}/items/{fid}.{fmt}", handleItem)

internal/service/handler_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"testing"
2525

2626
"github.com/CrunchyData/pg_featureserv/internal/api"
27+
"github.com/CrunchyData/pg_featureserv/internal/conf"
2728
"github.com/CrunchyData/pg_featureserv/internal/data"
2829
"github.com/CrunchyData/pg_featureserv/util"
2930
)
@@ -33,6 +34,8 @@ var hTest util.HttpTesting
3334
var catalogMock *data.CatalogMock
3435

3536
func TestMain(m *testing.M) {
37+
conf.Configuration.Database.AllowWrite = true
38+
3639
catalogMock = data.CatMockInstance()
3740
catalogInstance = catalogMock
3841

0 commit comments

Comments
 (0)