class FBTiles::Database

Attributes

path[R]

Public Class Methods

driver() click to toggle source
# File lib/fbtiles/database.rb, line 18
def self.driver
  @driver ||= RUBY_PLATFORM == 'java' ? 'jdbc:sqlite' : 'sqlite'
end
new(path = nil) click to toggle source
# File lib/fbtiles/database.rb, line 9
def initialize(path = nil)
  storage_type = path ? "//#{path}" : ':memory:'

  @path = path
  @db = Sequel.connect("#{self.class.driver}:#{storage_type}")

  create_schema!
end

Public Instance Methods

adapter() click to toggle source
# File lib/fbtiles/database.rb, line 22
def adapter
  @db
end
create_schema!() click to toggle source
# File lib/fbtiles/database.rb, line 38
def create_schema!
  @db.create_table :bounds do
    Integer :zoom
    Integer :collared
    Integer :maxX
    Integer :maxY
    Integer :minX
    Integer :minY

    primary_key [:zoom, :collared]
  end

  @db.create_table :datatypes do
    Integer :id, :primary_key => true
    Text :datatype # PNG or JPG only!

    index :datatype, unique: true, name: 'datatypes_idx'
  end

  @db.create_table :tiles do
    Integer :tilekey, :primary_key => true
    Integer :zoom_level
    Integer :tile_row
    Integer :tile_column
    Blob    :tile_data
    Integer :tile_datatypes_id
    Blob    :tile_collar_data
    Integer :tile_collar_datatypes_id

    index [:zoom_level, :tile_row, :tile_column], name: 'tiles_idx'        
  end
end
insert_bounds(records) click to toggle source
# File lib/fbtiles/database.rb, line 26
def insert_bounds(records)
  @db[:bounds].multi_insert(records)
end
insert_datatypes(records) click to toggle source
# File lib/fbtiles/database.rb, line 30
def insert_datatypes(records)
  @db[:datatypes].multi_insert(records)
end
insert_tiles(records) click to toggle source
# File lib/fbtiles/database.rb, line 34
def insert_tiles(records)
  @db[:tiles].multi_insert(records)
end