Skip to content

MemunaHaruna/tango_orm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TangoOrm

Tango is a lightweight object-relational mapper for small Ruby applications.

Status

Tango is still in active development and not to be used in production applications.

Installation

Add this line to your application's Gemfile:

gem 'tango_orm'

And then execute:

$ bundle

Or install it yourself as:

$ gem install tango_orm

Usage

Tango assumes there is a database.yml file in the root of your project. This file is used to setup your database connection. Currently, only development environment credentials are considered.

Example database.yml file:

development:
  database: school_development
  username:
  password:
  host: localhost
  port: 5432

Afterwards, you can add ORM capabilities to your models by inheriting from TangoOrm::Model::Base e.g:

Example model:

require 'tango_orm'

class Student < TangoOrm::Model::Base
end

Creating the corresponding table for each model is a manual process. I recommend creating makeshift migration files for this.

# create table: students

Student.create_table(first_name: "text, not_null", last_name: "text, not_null", age: "integer", start_date: "date", graduation_date: "date", identification_number: "text, unique, not_null")

pp Student.columns

Managing records

student = Student.new(first_name: "Chinedu", last_name: "Daniel", identification_number: "OPPOPG001", age: 28)
pp student.save

student = Student.create(first_name: "Iron", last_name: "Bars", start_date: Date.today, identification_number: "XOXO007")
pp student.id
pp student.first_name
pp student.last_name
pp Student.all

# student = Student.find_by_id(2)
# pp student

# student.first_name = "Baby"
# pp student.update

Limitations

  • Tango is still in active development and not to be used in production applications.
  • Currently only supports Postgres databases.
  • There is no support for migrations.
  • Several helpful query methods such as where, find, find_by, first etc have not been implemented.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment. Alternatively, run bundler console.

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/MemunaHaruna/tango_orm.

To do

  • Write tests
  • Helpful methods (destroy, where, find, find_by, first, last, order, limit, destroy, update_or_create, update_all, destroy_all, changed?, valid?, persisted? save!, find!)
  • associations
  • migrations
  • support for other DBs other than Postgres
  • eager loading
  • lazy loading
  • automatically saved created_at & updated_at fields
  • concurrency & thread safety
  • connection pooling
  • transactions
  • dirty tracking (only save the fields that actually changed)
  • prepared statements, stored procedures, two-phase commit, transaction isolation, master/slave configurations, and database sharding
  • validations

License

The gem is available as open source under the terms of the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published