Sha256: b6705de3c9948816c2c04c4cc0f57a4332f48ac9b6658b597574874c30053f43

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 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(class_name, &block)
    table_name = class_name.tableize
    puts "adding entity #{table_name} to schema"
    @table_name = table_name
    @current_schema[@table_name] = {}
    block.call
    $current_schema = @current_schema
    DataStore.current_schema = @current_schema
  end

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

  %w(boolean float double integer datetime).each do |type|
    define_method(type) do |column_name|
      add_column column_name.to_s, type.upcase
    end
  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

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
swiss_db-0.7.2 lib/swiss_db/db.rb
swiss_db-0.7.1 lib/swiss_db/db.rb
swiss_db-0.7.0 lib/swiss_db/db.rb