forked from MTSR/mapserver
102 lines
2.0 KiB
Go
102 lines
2.0 KiB
Go
package sqlite
|
|
|
|
const migrateScript = `
|
|
PRAGMA foreign_keys = ON;
|
|
|
|
create table if not exists objects(
|
|
id integer primary key autoincrement,
|
|
x int,
|
|
y int,
|
|
z int,
|
|
posx int,
|
|
posy int,
|
|
posz int,
|
|
type varchar,
|
|
mtime bigint
|
|
);
|
|
|
|
create index if not exists objects_pos on objects(posx,posy,posz);
|
|
create index if not exists objects_pos_type on objects(posx,posy,posz,type);
|
|
|
|
create table if not exists object_attributes(
|
|
objectid integer not null,
|
|
key varchar not null,
|
|
value varchar not null,
|
|
FOREIGN KEY (objectid) references objects(id) ON DELETE CASCADE
|
|
primary key(objectid, key)
|
|
);
|
|
|
|
create index if not exists object_attributes_key_value on object_attributes(key, value);
|
|
|
|
create table if not exists tiles(
|
|
data blob,
|
|
mtime bigint,
|
|
layerid int,
|
|
x int,
|
|
y int,
|
|
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 = `
|
|
select o.id, o.type, o.mtime,
|
|
o.x, o.y, o.z,
|
|
o.posx, o.posy, o.posz,
|
|
oa.key, oa.value
|
|
from objects o
|
|
left join object_attributes oa on o.id = oa.objectid
|
|
where o.type = ?
|
|
and o.posx >= ? and o.posy >= ? and o.posz >= ?
|
|
and o.posx <= ? and o.posy <= ? and o.posz <= ?
|
|
order by o.id
|
|
`
|
|
|
|
const removeMapDataQuery = `
|
|
delete from objects where posx = ? and posy = ? and posz = ?
|
|
`
|
|
|
|
const addMapDataQuery = `
|
|
insert into
|
|
objects(x,y,z,posx,posy,posz,type,mtime)
|
|
values(?, ?, ?, ?, ?, ?, ?, ?)
|
|
`
|
|
|
|
const addMapDataAttributeQuery = `
|
|
insert into
|
|
object_attributes(objectid, key, value)
|
|
values(?, ?, ?)
|
|
`
|
|
|
|
const getTileQuery = `
|
|
select data,mtime from tiles t
|
|
where t.layerid = ?
|
|
and t.x = ?
|
|
and t.y = ?
|
|
and t.zoom = ?
|
|
`
|
|
|
|
const setTileQuery = `
|
|
insert or replace into tiles(x,y,zoom,layerid,data,mtime)
|
|
values(?, ?, ?, ?, ?, ?)
|
|
`
|
|
|
|
const removeTileQuery = `
|
|
delete from tiles
|
|
where x = ? and y = ? and zoom = ? and layerid = ?
|
|
`
|
|
|
|
const getSettingQuery = `
|
|
select value from settings where key = ?
|
|
`
|
|
|
|
const setSettingQuery = `
|
|
insert or replace into settings(key, value)
|
|
values(?, ?)
|
|
`
|