Skip to content

myobie/dm-json-search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Search your models with JSON!
=============================

How to use
----------

gem install gemcutter          # unless you already have
gem tumble                     # unless you already have
gem install dm-json-search

Wala:

Book.all_from_json('[{"eql":{"Book.title":"Psycho"}}]')
# Should this be mixed in automagically to every model?


Another example query and it's json
-----------------------------------

puts Ticket.select { |t| 
  t.title == "foo" || (t.user_id == 6 && t.account_id == 9) 
}.query.to_json

Becomes:

{
    "model": "Ticket",
    "repository": "default",
    "conditions": {
        "and": [{
            "or": [{
                "eql": { "Ticket.title": "foo" }
            },
            {
                "and": [{
                    "eql": { "Ticket.user_id": 6 }
                },
                {
                    "eql": { "Ticket.account_id": 9 }
                }]
            }]
        }]
    },
    "reload": false,
    "order": ["Ticket.id.asc"],
    "fields": [...],
    "links": [], // these don't work yet
    "unique": false,
    "limit": null,
    "offset": 0
}


Explanation
-----------

Operations are objects with a key for the Operation#slug and an array of operands. Comparisons are object with a key for the Comparison#slug and an object with a property key and a value for the comparison.

So, you can send in a huge json string like the above, or you can just send in the conditions part: { "and": [...] }. Or, if you just send in an array, it will wrap that array in an "and" hash.

All DM Operations and Conditions are permitted on any Property of any Model. This probably needs to be changed to only search some fields.


TODO
----

* Spec it out and make sure there are no vectors for destructive actions
* Make links work
* Make it better?

About

Search your models by creating queries in json or hashes! Great for complex search forms.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages