package mapobjectdb import ( "mapserver/coords" "time" ) /* sqlite perf: https://stackoverflow.com/questions/1711631/improve-insert-per-second-performance-of-sqlite?rq=1 PRAGMA synchronous = OFF PRAGMA journal_mode = MEMORY */ type Tile struct { Pos *coords.TileCoords Data []byte Mtime int64 } type MapObject struct { //mapblock position MBPos *coords.MapBlockCoords `json:"mapblock"` //block position X int `json:"x"` Y int `json:"y"` Z int `json:"z"` Type string `json:"type"` Mtime int64 `json:"mtime"` Attributes map[string]string `json:"attributes"` } func NewMapObject(MBPos *coords.MapBlockCoords, x int, y int, z int, _type string) *MapObject { o := MapObject{ MBPos: MBPos, Type: _type, X: MBPos.X + x, Y: MBPos.Y + y, Z: MBPos.Z + z, Mtime: time.Now().Unix(), Attributes: make(map[string]string), } return &o } type SearchQuery struct { //mapblock position Pos1 coords.MapBlockCoords `json:"pos1"` Pos2 coords.MapBlockCoords `json:"pos2"` Type string `json:"type"` } type DBAccessor interface { Migrate() error //Generic map objects (poi, etc) GetMapData(q SearchQuery) ([]*MapObject, error) RemoveMapData(pos *coords.MapBlockCoords) error AddMapData(data *MapObject) error //tile data GetTile(pos *coords.TileCoords) (*Tile, error) SetTile(tile *Tile) error RemoveTile(pos *coords.TileCoords) error }