public void Delete(Coord coord, string Format)
{
int z = coord.Z;
int x = coord.X;
int y = coord.Y;
if (Format.Equals(this._format, StringComparison.OrdinalIgnoreCase))
{
if (this._isCompressed)
{
using (SQLiteConnection con = new SQLiteConnection((string.Format("Data Source={0}", this.Database))))
{
con.Open();
using (SQLiteCommand cmd = new SQLiteCommand(con))
{
using (SQLiteTransaction tran = con.BeginTransaction())
{
string uuid = null;
//get uuid
cmd.CommandText = "SELECT tile_id FROM map WHERE zoom_level=@z AND tile_column=@x AND tile_row=@y";
cmd.Parameters.AddWithValue("@z", z);
cmd.Parameters.AddWithValue("@x", x);
cmd.Parameters.AddWithValue("@y", y);
using (SQLiteDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
uuid = dr.GetString(0);
}
}
if (uuid != null)
{
//Delete from map table
cmd.Parameters.Clear();
cmd.CommandText = "DELETE FROM map WHERE zoom_level=@z AND tile_column=@x AND tile_row=@y";
cmd.Parameters.AddWithValue("@z", z);
cmd.Parameters.AddWithValue("@x", x);
cmd.Parameters.AddWithValue("@y", y);
cmd.ExecuteNonQuery();
//Clean up images table?
cmd.Parameters.Clear();
cmd.CommandText = "SELECT 1 FROM map WHERE tile_id=@uuid";
cmd.Parameters.AddWithValue("@uuid", uuid);
var response = cmd.ExecuteScalar();
if (response == null)
{
cmd.Parameters.Clear();
cmd.CommandText = "DELETE FROM images WHERE tile_id=@uuid";
cmd.Parameters.AddWithValue("@uuid", uuid);
cmd.ExecuteNonQuery();
}
}
tran.Commit();
}
}
}
}
else
{
using (SQLiteConnection con = new SQLiteConnection((string.Format("Data Source={0}", this.Database))))
{
con.Open();
string query = "DELETE FROM tiles WHERE zoom_level=@z AND tile_column=@x AND tile_row=@y";
using (SQLiteCommand cmd = new SQLiteCommand(query, con))
{
cmd.Parameters.AddWithValue("@z", z);
cmd.Parameters.AddWithValue("@x", x);
cmd.Parameters.AddWithValue("@y", y);
cmd.ExecuteNonQuery();
}
}
}
}
}