From 1ee78ee106d4f8be9f22ba303a565b6238f39d64 Mon Sep 17 00:00:00 2001 From: NatureFreshMilk Date: Thu, 7 Feb 2019 08:21:19 +0100 Subject: [PATCH] settings table --- server/mapobjectdb/accessor.go | 4 ++++ server/mapobjectdb/sqlite/settings.go | 30 +++++++++++++++++++++++++++ server/mapobjectdb/sqlite/sql.go | 13 ++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 server/mapobjectdb/sqlite/settings.go diff --git a/server/mapobjectdb/accessor.go b/server/mapobjectdb/accessor.go index c78c292..d106300 100644 --- a/server/mapobjectdb/accessor.go +++ b/server/mapobjectdb/accessor.go @@ -80,4 +80,8 @@ type DBAccessor interface { GetTile(pos *coords.TileCoords) (*Tile, error) SetTile(tile *Tile) error RemoveTile(pos *coords.TileCoords) error + + //Settings + GetSetting(key string, defaultvalue string) (string, error) + SetSetting(key string, value string) error } diff --git a/server/mapobjectdb/sqlite/settings.go b/server/mapobjectdb/sqlite/settings.go new file mode 100644 index 0000000..f93f239 --- /dev/null +++ b/server/mapobjectdb/sqlite/settings.go @@ -0,0 +1,30 @@ +package sqlite + + + +func (db *Sqlite3Accessor) GetSetting(key string, defaultvalue string) (string, error) { + rows, err := db.db.Query(getSettingQuery, key) + if err != nil { + return "", err + } + + defer rows.Close() + + value := defaultvalue + + if rows.Next() { + + err = rows.Scan(&value) + if err != nil { + return "", err + } + } + + return value, nil + +} + +func (db *Sqlite3Accessor) SetSetting(key string, value string) error { + _, err := db.db.Exec(setSettingQuery, value, key) + return err +} diff --git a/server/mapobjectdb/sqlite/sql.go b/server/mapobjectdb/sqlite/sql.go index ee4c29e..4fb35d8 100644 --- a/server/mapobjectdb/sqlite/sql.go +++ b/server/mapobjectdb/sqlite/sql.go @@ -37,6 +37,11 @@ create table if not exists tiles( zoom int, primary key(x,y,zoom,layerid) ); + +create table if not exists settings( + key varchar primary key not null, + value varchar not null +); ` const getMapDataPosQuery = ` @@ -85,3 +90,11 @@ const removeTileQuery = ` delete from tiles where x = ? and y = ? and zoom = ? and layerid = ? ` + +const getSettingQuery = ` +select value from settings where key = ? +` + +const setSettingQuery = ` +update settings set value = ? where key = ? +`