Sha256: bfe3fb40fffdc7bd0335c1008e038e7fba3a9405997402ee8f87131c0bdb9168

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

# "Swiss", RubyMotion Android SQLite by VirtualQ


# schema loader stuff
# i know it's rough but it works

class Object

  attr_accessor :current_schema

  # convenience methods

  def log(tag, str)
    Android::Util::Log.d(tag, str)
  end

  def puts(str)
    log "general", str
  end

  def current_schema
    @current_schema
  end

  def schema(schema_name, &block)
    puts "running schema for #{schema_name}"
    @current_schema = {}
    @database_name = schema_name
    block.call
    puts @current_schema.inspect
  end

  def entity(table_name, &block)
    puts "adding entity #{table_name} to schema"
    @table_name = table_name
    @current_schema[@table_name] = {}
    block.call
    $current_schema = @current_schema # there was no other way. I couldn't get context to create the model here.
  end

  def add_column(name, type)
    @current_schema[@table_name][name] = type
  end

  def boolean(column_name)
    add_column column_name.to_s, "BOOLEAN"
  end

  def string(column_name)
    add_column column_name.to_s, "VARCHAR"
  end

  def integer32(column_name)
    add_column column_name.to_s, "INTEGER"
  end

  def double(column_name)
    add_column column_name.to_s, "DOUBLE"
  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
swiss_db-0.6.0 lib/swiss_db/db.rb
swiss_db-0.4.3 lib/swiss_db/db.rb
swiss_db-0.3.6 lib/swiss_db/db.rb
swiss_db-0.3.5 lib/swiss_db/db.rb
swiss_db-0.3.4 lib/swiss_db/db.rb
swiss_db-0.3.3 lib/swiss_db/db.rb