f-me/carma-models — pull request #1 by cvb (2013-09-24 17:24:14+00:00)
Title: add CaseSearch model and some search stuff

Собсно вот, тут я добавил в `Carma.Search.Condition` все что вроде бы нужно для поиска, сама моделька, которая ищеи лежит в `Carma.Model.CaseSearch`, хотелось бы услышать мысли и критику по такой реализации

строит оно вот такие штуки
```
"casetbl.id = 123 AND (casetbl.phone1 ilike '%1123%' OR casetbl.phone2 ilike '%1123%' OR casetbl.phone3 ilike '%1123%' OR casetbl.phone4 ilike '%1123%') AND casetbl.city = ANY (ARRAY['1','2']) AND (casetbl.comment ilike '%qweqwe%' OR casetbl.comment ilike '%zzz%')"
```

минимальный пример использования

```
module Main where

import System.Exit (exitFailure)

import Data.Maybe

import Data.Aeson
import Database.PostgreSQL.Simple

import Carma.Search.Condition
import Carma.Search.Patch
import Carma.Model.CaseSearch

ss = "{ \"id\" : 123, \"phone\" : \"1123\", \"car_platenum\" : \"a123aq\", \"contact\" : \"zxc\", \"city\": [\"1\",\"2\"], \"qqqq\": 123, \"callDate\" : \"2012-02-12\", \"comment\" : [\"qweqwe\", \"zzz\"] }"

main = do
conn <- connect defaultConnectInfo{connectUser = "cvb" }
print =<< buildCondition conn caseConditions (fromJust (decode ss :: Maybe (Patch CaseSearch))) CaseSearch
exitFailure
```