SwissDb
RubyMotion Android ActiveRecord-like ORM for SQLite
Installation
Add this line to your application's Gemfile:
gem 'swiss_db'
And then execute:
$ bundle
Or install it yourself as:
$ gem install swiss_db
Usage
Schemas
Schemas are the exact same from CoreDataQuery and go in the same place. (schemas/)
schema "0001" do
entity "Car" do
boolean :is_red
string :model
integer32 :tire_size
integer32 :tire_weight
integer32 :mileage
end
entity "Boat" do
string :name
integer32 :weight
double :worth_in_millions
end
end
Schema name (the "0001") does nothing.
Models
Models are as such:
class Model < SwissModel
set_class_name "Model" # there are currently no hacks to automatically get this. sorry.
set_primary_key "primary_key_name" # if not set, will default to "id"
end
Set the context
Set the context in your bluepotion_application.rb.
class BluePotionApplication < PMApplication
home_screen HomeScreen
def on_create
DataStore.context = self
end
end
Examples
Model.first.name
Model.all.last.name
Model.all.count
m = Model.first
m.name = "Sam"
m.save # will persist the data
m.update_attribute("name", "chucky")
That's it! #all, #last, #first, #count, #save, #update_attribute and the usual are now available!
As of 0.7.1 all returned objects are SwissModel instances. Model methods will now work properly.
Planned
update_attributes support
destroy just one object support
detect class names of models for tableize
KNOWN LIMITATION: This ORM compiles in the database name and the database version as a constant. Unfortunately I don't know of a way around this yet. This means no DB migrations yet by doing the simple version bump that is supported by Android. If we get a way to configure these from outside the gem, it will open up possibilities such as multiple schemas and migrations. To get around this simply delete your local database when you need to migrate. You can delete the app from the simulator/device (probably) or use my convenience command:
DataStore.drop_db #=> true if the DB was dropped, false if not
Contributors
Development
After checking out the repo, run bin/setup
to install dependencies.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/jsilverMDX/swissDB.
License
The gem is available as open source under the terms of the MIT License.