SkillAgentSearch skills...

DocumentMapper

Generic mapper for document oriented database (such as CouchDB, MongoDB)

Install / Use

/learn @renoke/DocumentMapper
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

= DocumentMapper

Simple mapper to document oriented databases. Two adapters has been implemented unil now :

*couchdb (using couchrest gem) *mongodb (using mongodb-mongo gem)

More adapters will come in a future.

== Config require 'documentmapper'

#couchdb adapter DocumentMapper.setup(:adapter => 'couchrest', :database=>"http://127.0.0.1:5984/my_db")

#mondodb adapter DocumentMapper.setup(:adapter => 'mongodb', :database=>"my_db")

== Mash

#model creation class Customer < DocumentMapper::Base end

customer = Customer.new(:last_name => 'Duck', :first_name=> 'Donald') customer.phone = {:mobile=> 123456, :home=> 654321} customer.email = ['donald@disney.com', 'kwack@gmail.com'] customer.save

result = Customer.first result.phone[:office => '848789'] result.save

DocumentMapper is a Mash (http://github.com/mbleigh/mash/tree/master), which his a special kind of Hash where you access and attributes with dot notation instead of bracket notation.

That means you don't to specify key, attribute or schema. No migration. Nothing. Just use the attribute you need, when you need, where you need.

== CRUD

You have the usual methods for create, read, update and delete objects. The arguments may depend the database used.

#some class methods id = Customer.create(:last_name=>'Woodywood', :first_name=>'Pecker') Customer.get(id) Customer.all(:location=>'in the wild') #mongodb Customer.first('couchdb/view', :key=>['value1','value2']) #couchdb

#some instance methods customer.save customer.destroy

== Validation

DocumentMapper implements Jay Field's validatable library (validatable.rubyforge.org).

class Ocean < DocumentMapper::Base validates_acceptance_of :water validates_numericality_of :temperature end

class Script < DocumentMapper::Base validates_format_of :language, :with => /P(erl|ython)/ end

class User < DocumentMapper::Base validates_length_of :password, :maximum => 10 validates_confirmation_of :password end

class Life < DocumentMapper::Base validates_presence_of :god end

== Aggregation

A document can aggregate other document. It's like a parent document stores one or more child documents. It's different from Association (not yet implemented) where the associate document is stored in a different database.

class Command < DocumentMapper::Base aggregate n, :products end

class Product < DocumentMapper::Base def total quantity * prixe end end

command = Command.new command.products << (:name=> 'awesome', :price=>10, :quantity=>1)

== Copyright

Copyright (c) 2009 Renaud Kern (renoke). See LICENSE for details.

View on GitHub
GitHub Stars9
CategoryData
Updated6y ago
Forks0

Languages

Ruby

Security Score

70/100

Audited on Aug 13, 2019

No findings