forked from MTSR/mapserver
59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
|
package tiledb
|
||
|
|
||
|
import (
|
||
|
"database/sql"
|
||
|
_ "github.com/mattn/go-sqlite3"
|
||
|
"github.com/sirupsen/logrus"
|
||
|
"mapserver/coords"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
const migrateScript = `
|
||
|
create table if not exists tiles(
|
||
|
data blob,
|
||
|
mtime bigint,
|
||
|
layer int,
|
||
|
x int,
|
||
|
y int,
|
||
|
zoom int,
|
||
|
primary key(x,y,zoom,layer)
|
||
|
);
|
||
|
`
|
||
|
|
||
|
type Sqlite3Accessor struct {
|
||
|
db *sql.DB
|
||
|
filename string
|
||
|
}
|
||
|
|
||
|
func (db *Sqlite3Accessor) Migrate() error {
|
||
|
log.WithFields(logrus.Fields{"filename": db.filename}).Info("Migrating database")
|
||
|
start := time.Now()
|
||
|
_, err := db.db.Exec(migrateScript)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
t := time.Now()
|
||
|
elapsed := t.Sub(start)
|
||
|
log.WithFields(logrus.Fields{"elapsed": elapsed}).Info("Migration completed")
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (db *Sqlite3Accessor) GetTile(pos coords.TileCoords) (*Tile, error) {
|
||
|
return nil, nil
|
||
|
}
|
||
|
|
||
|
func (db *Sqlite3Accessor) SetTile(pos coords.TileCoords, tile *Tile) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func NewSqliteAccessor(filename string) (*Sqlite3Accessor, error) {
|
||
|
db, err := sql.Open("sqlite3", filename)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
sq := &Sqlite3Accessor{db: db, filename: filename}
|
||
|
return sq, nil
|
||
|
}
|