Current section
Files
Jump to
Current section
Files
lib/queries.ex
defmodule Queries do
import Ecto.Query
@doc """
Selects a single tile from database.
"""
def get_tile(zoom, x, y) do
from("tiles",
where: [zoom_level: ^zoom, tile_column: ^y, tile_row: ^x],
select: [:tile_data]
)
|> Mbtiles.Repo.one()
end
@doc """
Gets all of metadata.
"""
def get_metadata() do
from("metadata",
select: [:name, :value]
)
|> Mbtiles.Repo.all()
|> Enum.map(fn %{name: name, value: value} -> {String.to_atom(name), value} end)
|> Enum.into(%{})
end
def get_all_zoom_levels do
from("tiles",
distinct: true,
select: [:zoom_level]
)
|> Mbtiles.Repo.all()
|> Enum.map(& &1.zoom_level)
end
def process_zoom(zoom) do
from("tiles",
select: [:tile_column],
where: [zoom_level: ^zoom],
distinct: true
)
|> Mbtiles.Repo.all()
|> Enum.map(& &1.tile_column)
end
def dump_tiles(zoom, column) do
from("tiles",
distinct: true,
select: [:zoom_level, :tile_column, :tile_row, :tile_data],
where: [zoom_level: ^zoom, tile_column: ^column]
)
|> Mbtiles.Repo.all()
end
end