database tile cache
parent
f7d7d736af
commit
ce950e0598
19
pom.xml
19
pom.xml
|
@ -100,6 +100,25 @@
|
|||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- xml bind -->
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.xml.bind</groupId>
|
||||
<artifactId>jaxb-api</artifactId>
|
||||
<version>2.2.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.xml.bind</groupId>
|
||||
<artifactId>jaxb-core</artifactId>
|
||||
<version>2.2.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sun.xml.bind</groupId>
|
||||
<artifactId>jaxb-impl</artifactId>
|
||||
<version>2.2.11</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
@ -8,6 +8,7 @@ import io.rudin.minetest.tileserver.blockdb.tables.Blocks;
|
|||
import io.rudin.minetest.tileserver.blockdb.tables.Player;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockChanges;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockDepth;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
@ -33,7 +34,7 @@ import org.jooq.impl.SchemaImpl;
|
|||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class DefaultSchema extends SchemaImpl {
|
||||
|
||||
private static final long serialVersionUID = -76175788;
|
||||
private static final long serialVersionUID = 1582418477;
|
||||
|
||||
/**
|
||||
* The reference instance of <code></code>
|
||||
|
@ -60,6 +61,11 @@ public class DefaultSchema extends SchemaImpl {
|
|||
*/
|
||||
public final TileserverBlockDepth TILESERVER_BLOCK_DEPTH = io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockDepth.TILESERVER_BLOCK_DEPTH;
|
||||
|
||||
/**
|
||||
* The table <code>tileserver_tiles</code>.
|
||||
*/
|
||||
public final TileserverTiles TILESERVER_TILES = io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles.TILESERVER_TILES;
|
||||
|
||||
/**
|
||||
* No further instances allowed
|
||||
*/
|
||||
|
@ -88,6 +94,7 @@ public class DefaultSchema extends SchemaImpl {
|
|||
Blocks.BLOCKS,
|
||||
Player.PLAYER,
|
||||
TileserverBlockChanges.TILESERVER_BLOCK_CHANGES,
|
||||
TileserverBlockDepth.TILESERVER_BLOCK_DEPTH);
|
||||
TileserverBlockDepth.TILESERVER_BLOCK_DEPTH,
|
||||
TileserverTiles.TILESERVER_TILES);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import io.rudin.minetest.tileserver.blockdb.tables.Blocks;
|
|||
import io.rudin.minetest.tileserver.blockdb.tables.Player;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockChanges;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockDepth;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
|
@ -37,6 +38,7 @@ public class Indexes {
|
|||
public static final Index PLAYER_PKEY = Indexes0.PLAYER_PKEY;
|
||||
public static final Index TILESERVER_BLOCK_CHANGES_PKEY = Indexes0.TILESERVER_BLOCK_CHANGES_PKEY;
|
||||
public static final Index TILESERVER_BLOCK_DEPTH_PKEY = Indexes0.TILESERVER_BLOCK_DEPTH_PKEY;
|
||||
public static final Index TILESERVER_TILES_PKEY = Indexes0.TILESERVER_TILES_PKEY;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// [#1459] distribute members to avoid static initialisers > 64kb
|
||||
|
@ -47,5 +49,6 @@ public class Indexes {
|
|||
public static Index PLAYER_PKEY = Internal.createIndex("player_pkey", Player.PLAYER, new OrderField[] { Player.PLAYER.NAME }, true);
|
||||
public static Index TILESERVER_BLOCK_CHANGES_PKEY = Internal.createIndex("tileserver_block_changes_pkey", TileserverBlockChanges.TILESERVER_BLOCK_CHANGES, new OrderField[] { TileserverBlockChanges.TILESERVER_BLOCK_CHANGES.POSX, TileserverBlockChanges.TILESERVER_BLOCK_CHANGES.POSY, TileserverBlockChanges.TILESERVER_BLOCK_CHANGES.POSZ }, true);
|
||||
public static Index TILESERVER_BLOCK_DEPTH_PKEY = Internal.createIndex("tileserver_block_depth_pkey", TileserverBlockDepth.TILESERVER_BLOCK_DEPTH, new OrderField[] { TileserverBlockDepth.TILESERVER_BLOCK_DEPTH.POSX, TileserverBlockDepth.TILESERVER_BLOCK_DEPTH.POSZ }, true);
|
||||
public static Index TILESERVER_TILES_PKEY = Internal.createIndex("tileserver_tiles_pkey", TileserverTiles.TILESERVER_TILES, new OrderField[] { TileserverTiles.TILESERVER_TILES.X, TileserverTiles.TILESERVER_TILES.Y, TileserverTiles.TILESERVER_TILES.Z }, true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,10 +8,12 @@ import io.rudin.minetest.tileserver.blockdb.tables.Blocks;
|
|||
import io.rudin.minetest.tileserver.blockdb.tables.Player;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockChanges;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockDepth;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.BlocksRecord;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.PlayerRecord;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.TileserverBlockChangesRecord;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.TileserverBlockDepthRecord;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.TileserverTilesRecord;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
|
@ -46,6 +48,7 @@ public class Keys {
|
|||
public static final UniqueKey<PlayerRecord> PLAYER_PKEY = UniqueKeys0.PLAYER_PKEY;
|
||||
public static final UniqueKey<TileserverBlockChangesRecord> TILESERVER_BLOCK_CHANGES_PKEY = UniqueKeys0.TILESERVER_BLOCK_CHANGES_PKEY;
|
||||
public static final UniqueKey<TileserverBlockDepthRecord> TILESERVER_BLOCK_DEPTH_PKEY = UniqueKeys0.TILESERVER_BLOCK_DEPTH_PKEY;
|
||||
public static final UniqueKey<TileserverTilesRecord> TILESERVER_TILES_PKEY = UniqueKeys0.TILESERVER_TILES_PKEY;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// FOREIGN KEY definitions
|
||||
|
@ -61,5 +64,6 @@ public class Keys {
|
|||
public static final UniqueKey<PlayerRecord> PLAYER_PKEY = Internal.createUniqueKey(Player.PLAYER, "player_pkey", Player.PLAYER.NAME);
|
||||
public static final UniqueKey<TileserverBlockChangesRecord> TILESERVER_BLOCK_CHANGES_PKEY = Internal.createUniqueKey(TileserverBlockChanges.TILESERVER_BLOCK_CHANGES, "tileserver_block_changes_pkey", TileserverBlockChanges.TILESERVER_BLOCK_CHANGES.POSX, TileserverBlockChanges.TILESERVER_BLOCK_CHANGES.POSY, TileserverBlockChanges.TILESERVER_BLOCK_CHANGES.POSZ);
|
||||
public static final UniqueKey<TileserverBlockDepthRecord> TILESERVER_BLOCK_DEPTH_PKEY = Internal.createUniqueKey(TileserverBlockDepth.TILESERVER_BLOCK_DEPTH, "tileserver_block_depth_pkey", TileserverBlockDepth.TILESERVER_BLOCK_DEPTH.POSX, TileserverBlockDepth.TILESERVER_BLOCK_DEPTH.POSZ);
|
||||
public static final UniqueKey<TileserverTilesRecord> TILESERVER_TILES_PKEY = Internal.createUniqueKey(TileserverTiles.TILESERVER_TILES, "tileserver_tiles_pkey", TileserverTiles.TILESERVER_TILES.X, TileserverTiles.TILESERVER_TILES.Y, TileserverTiles.TILESERVER_TILES.Z);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import io.rudin.minetest.tileserver.blockdb.tables.Blocks;
|
|||
import io.rudin.minetest.tileserver.blockdb.tables.Player;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockChanges;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockDepth;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
|
@ -44,4 +45,9 @@ public class Tables {
|
|||
* The table <code>tileserver_block_depth</code>.
|
||||
*/
|
||||
public static final TileserverBlockDepth TILESERVER_BLOCK_DEPTH = io.rudin.minetest.tileserver.blockdb.tables.TileserverBlockDepth.TILESERVER_BLOCK_DEPTH;
|
||||
|
||||
/**
|
||||
* The table <code>tileserver_tiles</code>.
|
||||
*/
|
||||
public static final TileserverTiles TILESERVER_TILES = io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles.TILESERVER_TILES;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
* This file is generated by jOOQ.
|
||||
*/
|
||||
package io.rudin.minetest.tileserver.blockdb.tables;
|
||||
|
||||
|
||||
import io.rudin.minetest.tileserver.blockdb.DefaultSchema;
|
||||
import io.rudin.minetest.tileserver.blockdb.Indexes;
|
||||
import io.rudin.minetest.tileserver.blockdb.Keys;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.TileserverTilesRecord;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Index;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.Schema;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.TableImpl;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.10.5"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class TileserverTiles extends TableImpl<TileserverTilesRecord> {
|
||||
|
||||
private static final long serialVersionUID = -916322810;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>tileserver_tiles</code>
|
||||
*/
|
||||
public static final TileserverTiles TILESERVER_TILES = new TileserverTiles();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<TileserverTilesRecord> getRecordType() {
|
||||
return TileserverTilesRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>tileserver_tiles.x</code>.
|
||||
*/
|
||||
public final TableField<TileserverTilesRecord, Integer> X = createField("x", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>tileserver_tiles.y</code>.
|
||||
*/
|
||||
public final TableField<TileserverTilesRecord, Integer> Y = createField("y", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>tileserver_tiles.z</code>.
|
||||
*/
|
||||
public final TableField<TileserverTilesRecord, Integer> Z = createField("z", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>tileserver_tiles.mtime</code>.
|
||||
*/
|
||||
public final TableField<TileserverTilesRecord, Long> MTIME = createField("mtime", org.jooq.impl.SQLDataType.BIGINT.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>tileserver_tiles.tile</code>.
|
||||
*/
|
||||
public final TableField<TileserverTilesRecord, byte[]> TILE = createField("tile", org.jooq.impl.SQLDataType.BLOB, this, "");
|
||||
|
||||
/**
|
||||
* Create a <code>tileserver_tiles</code> table reference
|
||||
*/
|
||||
public TileserverTiles() {
|
||||
this(DSL.name("tileserver_tiles"), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>tileserver_tiles</code> table reference
|
||||
*/
|
||||
public TileserverTiles(String alias) {
|
||||
this(DSL.name(alias), TILESERVER_TILES);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>tileserver_tiles</code> table reference
|
||||
*/
|
||||
public TileserverTiles(Name alias) {
|
||||
this(alias, TILESERVER_TILES);
|
||||
}
|
||||
|
||||
private TileserverTiles(Name alias, Table<TileserverTilesRecord> aliased) {
|
||||
this(alias, aliased, null);
|
||||
}
|
||||
|
||||
private TileserverTiles(Name alias, Table<TileserverTilesRecord> aliased, Field<?>[] parameters) {
|
||||
super(alias, null, aliased, parameters, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Schema getSchema() {
|
||||
return DefaultSchema.DEFAULT_SCHEMA;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<Index> getIndexes() {
|
||||
return Arrays.<Index>asList(Indexes.TILESERVER_TILES_PKEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public UniqueKey<TileserverTilesRecord> getPrimaryKey() {
|
||||
return Keys.TILESERVER_TILES_PKEY;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<UniqueKey<TileserverTilesRecord>> getKeys() {
|
||||
return Arrays.<UniqueKey<TileserverTilesRecord>>asList(Keys.TILESERVER_TILES_PKEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTiles as(String alias) {
|
||||
return new TileserverTiles(DSL.name(alias), this);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTiles as(Name alias) {
|
||||
return new TileserverTiles(alias, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
@Override
|
||||
public TileserverTiles rename(String name) {
|
||||
return new TileserverTiles(DSL.name(name), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
@Override
|
||||
public TileserverTiles rename(Name name) {
|
||||
return new TileserverTiles(name, null);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* This file is generated by jOOQ.
|
||||
*/
|
||||
package io.rudin.minetest.tileserver.blockdb.tables.daos;
|
||||
|
||||
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles;
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.TileserverTilesRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.Record3;
|
||||
import org.jooq.impl.DAOImpl;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.10.5"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class TileserverTilesDao extends DAOImpl<TileserverTilesRecord, io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles, Record3<Integer, Integer, Integer>> {
|
||||
|
||||
/**
|
||||
* Create a new TileserverTilesDao without any configuration
|
||||
*/
|
||||
public TileserverTilesDao() {
|
||||
super(TileserverTiles.TILESERVER_TILES, io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new TileserverTilesDao with an attached configuration
|
||||
*/
|
||||
public TileserverTilesDao(Configuration configuration) {
|
||||
super(TileserverTiles.TILESERVER_TILES, io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles.class, configuration);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
protected Record3<Integer, Integer, Integer> getId(io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles object) {
|
||||
return compositeKeyRecord(object.getX(), object.getY(), object.getZ());
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch records that have <code>x IN (values)</code>
|
||||
*/
|
||||
public List<io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles> fetchByX(Integer... values) {
|
||||
return fetch(TileserverTiles.TILESERVER_TILES.X, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch records that have <code>y IN (values)</code>
|
||||
*/
|
||||
public List<io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles> fetchByY(Integer... values) {
|
||||
return fetch(TileserverTiles.TILESERVER_TILES.Y, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch records that have <code>z IN (values)</code>
|
||||
*/
|
||||
public List<io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles> fetchByZ(Integer... values) {
|
||||
return fetch(TileserverTiles.TILESERVER_TILES.Z, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch records that have <code>mtime IN (values)</code>
|
||||
*/
|
||||
public List<io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles> fetchByMtime(Long... values) {
|
||||
return fetch(TileserverTiles.TILESERVER_TILES.MTIME, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch records that have <code>tile IN (values)</code>
|
||||
*/
|
||||
public List<io.rudin.minetest.tileserver.blockdb.tables.pojos.TileserverTiles> fetchByTile(byte[]... values) {
|
||||
return fetch(TileserverTiles.TILESERVER_TILES.TILE, values);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* This file is generated by jOOQ.
|
||||
*/
|
||||
package io.rudin.minetest.tileserver.blockdb.tables.pojos;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.10.5"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class TileserverTiles implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1480737257;
|
||||
|
||||
private Integer x;
|
||||
private Integer y;
|
||||
private Integer z;
|
||||
private Long mtime;
|
||||
private byte[] tile;
|
||||
|
||||
public TileserverTiles() {}
|
||||
|
||||
public TileserverTiles(TileserverTiles value) {
|
||||
this.x = value.x;
|
||||
this.y = value.y;
|
||||
this.z = value.z;
|
||||
this.mtime = value.mtime;
|
||||
this.tile = value.tile;
|
||||
}
|
||||
|
||||
public TileserverTiles(
|
||||
Integer x,
|
||||
Integer y,
|
||||
Integer z,
|
||||
Long mtime,
|
||||
byte[] tile
|
||||
) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
this.mtime = mtime;
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
public Integer getX() {
|
||||
return this.x;
|
||||
}
|
||||
|
||||
public void setX(Integer x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public Integer getY() {
|
||||
return this.y;
|
||||
}
|
||||
|
||||
public void setY(Integer y) {
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public Integer getZ() {
|
||||
return this.z;
|
||||
}
|
||||
|
||||
public void setZ(Integer z) {
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public Long getMtime() {
|
||||
return this.mtime;
|
||||
}
|
||||
|
||||
public void setMtime(Long mtime) {
|
||||
this.mtime = mtime;
|
||||
}
|
||||
|
||||
public byte[] getTile() {
|
||||
return this.tile;
|
||||
}
|
||||
|
||||
public void setTile(byte... tile) {
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder("TileserverTiles (");
|
||||
|
||||
sb.append(x);
|
||||
sb.append(", ").append(y);
|
||||
sb.append(", ").append(z);
|
||||
sb.append(", ").append(mtime);
|
||||
sb.append(", ").append("[binary...]");
|
||||
|
||||
sb.append(")");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,336 @@
|
|||
/*
|
||||
* This file is generated by jOOQ.
|
||||
*/
|
||||
package io.rudin.minetest.tileserver.blockdb.tables.records;
|
||||
|
||||
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Record3;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Row5;
|
||||
import org.jooq.impl.UpdatableRecordImpl;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.10.5"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class TileserverTilesRecord extends UpdatableRecordImpl<TileserverTilesRecord> implements Record5<Integer, Integer, Integer, Long, byte[]> {
|
||||
|
||||
private static final long serialVersionUID = -899694994;
|
||||
|
||||
/**
|
||||
* Setter for <code>tileserver_tiles.x</code>.
|
||||
*/
|
||||
public void setX(Integer value) {
|
||||
set(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>tileserver_tiles.x</code>.
|
||||
*/
|
||||
public Integer getX() {
|
||||
return (Integer) get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>tileserver_tiles.y</code>.
|
||||
*/
|
||||
public void setY(Integer value) {
|
||||
set(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>tileserver_tiles.y</code>.
|
||||
*/
|
||||
public Integer getY() {
|
||||
return (Integer) get(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>tileserver_tiles.z</code>.
|
||||
*/
|
||||
public void setZ(Integer value) {
|
||||
set(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>tileserver_tiles.z</code>.
|
||||
*/
|
||||
public Integer getZ() {
|
||||
return (Integer) get(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>tileserver_tiles.mtime</code>.
|
||||
*/
|
||||
public void setMtime(Long value) {
|
||||
set(3, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>tileserver_tiles.mtime</code>.
|
||||
*/
|
||||
public Long getMtime() {
|
||||
return (Long) get(3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>tileserver_tiles.tile</code>.
|
||||
*/
|
||||
public void setTile(byte... value) {
|
||||
set(4, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>tileserver_tiles.tile</code>.
|
||||
*/
|
||||
public byte[] getTile() {
|
||||
return (byte[]) get(4);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Record3<Integer, Integer, Integer> key() {
|
||||
return (Record3) super.key();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Record5 type implementation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row5<Integer, Integer, Integer, Long, byte[]> fieldsRow() {
|
||||
return (Row5) super.fieldsRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row5<Integer, Integer, Integer, Long, byte[]> valuesRow() {
|
||||
return (Row5) super.valuesRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field1() {
|
||||
return TileserverTiles.TILESERVER_TILES.X;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field2() {
|
||||
return TileserverTiles.TILESERVER_TILES.Y;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field3() {
|
||||
return TileserverTiles.TILESERVER_TILES.Z;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Long> field4() {
|
||||
return TileserverTiles.TILESERVER_TILES.MTIME;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<byte[]> field5() {
|
||||
return TileserverTiles.TILESERVER_TILES.TILE;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer component1() {
|
||||
return getX();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer component2() {
|
||||
return getY();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer component3() {
|
||||
return getZ();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Long component4() {
|
||||
return getMtime();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public byte[] component5() {
|
||||
return getTile();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value1() {
|
||||
return getX();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value2() {
|
||||
return getY();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value3() {
|
||||
return getZ();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Long value4() {
|
||||
return getMtime();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public byte[] value5() {
|
||||
return getTile();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTilesRecord value1(Integer value) {
|
||||
setX(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTilesRecord value2(Integer value) {
|
||||
setY(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTilesRecord value3(Integer value) {
|
||||
setZ(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTilesRecord value4(Long value) {
|
||||
setMtime(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTilesRecord value5(byte... value) {
|
||||
setTile(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public TileserverTilesRecord values(Integer value1, Integer value2, Integer value3, Long value4, byte[] value5) {
|
||||
value1(value1);
|
||||
value2(value2);
|
||||
value3(value3);
|
||||
value4(value4);
|
||||
value5(value5);
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached TileserverTilesRecord
|
||||
*/
|
||||
public TileserverTilesRecord() {
|
||||
super(TileserverTiles.TILESERVER_TILES);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised TileserverTilesRecord
|
||||
*/
|
||||
public TileserverTilesRecord(Integer x, Integer y, Integer z, Long mtime, byte[] tile) {
|
||||
super(TileserverTiles.TILESERVER_TILES);
|
||||
|
||||
set(0, x);
|
||||
set(1, y);
|
||||
set(2, z);
|
||||
set(3, mtime);
|
||||
set(4, tile);
|
||||
}
|
||||
}
|
|
@ -9,13 +9,14 @@ import io.rudin.minetest.tileserver.ColorTable;
|
|||
import io.rudin.minetest.tileserver.provider.ColorTableProvider;
|
||||
import io.rudin.minetest.tileserver.provider.ExecutorProvider;
|
||||
import io.rudin.minetest.tileserver.service.TileCache;
|
||||
import io.rudin.minetest.tileserver.service.impl.FileTileCache;
|
||||
import io.rudin.minetest.tileserver.service.impl.DatabaseTileCache;
|
||||
|
||||
public class ServiceModule extends AbstractModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(TileCache.class).to(FileTileCache.class);
|
||||
bind(TileCache.class).to(DatabaseTileCache.class);
|
||||
//bind(TileCache.class).to(FileTileCache.class);
|
||||
bind(ColorTable.class).toProvider(ColorTableProvider.class);
|
||||
bind(ExecutorService.class).toProvider(ExecutorProvider.class);
|
||||
bind(ScheduledExecutorService.class).toProvider(ExecutorProvider.class);
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
package io.rudin.minetest.tileserver.service.impl;
|
||||
|
||||
import io.rudin.minetest.tileserver.blockdb.tables.records.TileserverTilesRecord;
|
||||
import io.rudin.minetest.tileserver.service.TileCache;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.impl.DSL;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import java.io.IOException;
|
||||
|
||||
import static io.rudin.minetest.tileserver.blockdb.tables.TileserverTiles.TILESERVER_TILES;
|
||||
|
||||
@Singleton
|
||||
public class DatabaseTileCache implements TileCache {
|
||||
|
||||
@Inject
|
||||
public DatabaseTileCache(DSLContext ctx){
|
||||
this.ctx = ctx;
|
||||
}
|
||||
|
||||
private final DSLContext ctx;
|
||||
|
||||
@Override
|
||||
public void put(int x, int y, int z, byte[] data) throws IOException {
|
||||
TileserverTilesRecord record = ctx.newRecord(TILESERVER_TILES);
|
||||
record.setTile(data);
|
||||
record.setX(x);
|
||||
record.setY(y);
|
||||
record.setZ(z);
|
||||
record.setMtime(System.currentTimeMillis());
|
||||
record.insert();
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] get(int x, int y, int z) throws IOException {
|
||||
return ctx
|
||||
.select(TILESERVER_TILES.TILE)
|
||||
.from(TILESERVER_TILES)
|
||||
.where(TILESERVER_TILES.X.eq(x))
|
||||
.and(TILESERVER_TILES.Y.eq(y))
|
||||
.and(TILESERVER_TILES.Z.eq(z))
|
||||
.fetchOne(TILESERVER_TILES.TILE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean has(int x, int y, int z) {
|
||||
Integer count = ctx
|
||||
.select(DSL.count())
|
||||
.from(TILESERVER_TILES)
|
||||
.where(TILESERVER_TILES.X.eq(x))
|
||||
.and(TILESERVER_TILES.Y.eq(y))
|
||||
.and(TILESERVER_TILES.Z.eq(z))
|
||||
.fetchOne(DSL.count());
|
||||
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(int x, int y, int z) {
|
||||
ctx.delete(TILESERVER_TILES)
|
||||
.where(TILESERVER_TILES.X.eq(x))
|
||||
.and(TILESERVER_TILES.Y.eq(y))
|
||||
.and(TILESERVER_TILES.Z.eq(z))
|
||||
.execute();
|
||||
}
|
||||
}
|
|
@ -20,6 +20,15 @@ create table tileserver_block_depth (
|
|||
PRIMARY KEY (posX,posZ)
|
||||
);
|
||||
|
||||
create table tileserver_tiles (
|
||||
x int not null,
|
||||
y int not null,
|
||||
z int not null,
|
||||
mtime bigint not null,
|
||||
tile bytea,
|
||||
|
||||
PRIMARY KEY(x,y,z)
|
||||
);
|
||||
|
||||
create or replace function on_blocks_change() returns trigger as
|
||||
$BODY$
|
||||
|
|
|
@ -17,7 +17,7 @@ public class CodeGen {
|
|||
jdbc.setDriver("org.postgresql.Driver");
|
||||
jdbc.setPassword("enter");
|
||||
jdbc.setUsername("postgres");
|
||||
jdbc.setUrl("jdbc:postgresql://10.0.0.144:5432/minetest");
|
||||
jdbc.setUrl("jdbc:postgresql://10.0.0.147:5432/minetest");
|
||||
cfg.setJdbc(jdbc);
|
||||
|
||||
Generator generator = new Generator();
|
||||
|
@ -25,7 +25,7 @@ public class CodeGen {
|
|||
|
||||
Database database = new Database();
|
||||
database.setName("org.jooq.util.postgres.PostgresDatabase");
|
||||
database.setIncludes("blocks|player|tileserver_block_changes|tileserver_block_depth");
|
||||
database.setIncludes("blocks|player|tileserver_block_changes|tileserver_block_depth|tileserver_tiles");
|
||||
database.setInputSchema("public");
|
||||
database.setOutputSchemaToDefault(true);
|
||||
generator.setDatabase(database);
|
||||
|
|
Loading…
Reference in New Issue