darcsden-1.1: src/DarcsDen/State/Schema.hs
module DarcsDen.State.Schema
where
import Text.JSON
repoDesigns, userDesigns, issueDesigns, commentDesigns :: [JSValue]
repoDesigns =
[ jsobj
[ ("_id", jsstr "_design/repositories")
, ("language", jsstr "javascript")
, ("views", jsobj
[ ("by_owner_and_name", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.owner && doc.name && !doc.is_private)\n emit([doc.owner, doc.name], doc);\n}")
])
, ("by_owner", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.owner && !doc.is_private)\n emit(doc.owner, doc);\n}")
])
, ("by_fork", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.fork_of.Just && !doc.is_private)\n emit(doc.fork_of.Just, doc);\n}")
])
, ("by_member", jsobj
[ ("map", jsstr "function(doc) {\n if (!doc.is_private)\n for (member in doc.members)\n emit(doc.members[member], doc._id);\n}")
])
])
]
, jsobj
[ ("_id", jsstr "_design/private")
, ("language", jsstr "javascript")
, ("views", jsobj
[ ("by_owner", jsobj
[ ("map", jsstr "function(doc) {\n emit(doc.owner, doc);\n}\n")
])
, ("by_owner_and_name", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.owner && doc.name)\n emit([doc.owner, doc.name], doc);\n}")
])
, ("by_member", jsobj
[ ("map", jsstr "function(doc) {\n for (member in doc.members)\n emit(doc.members[member], [doc.owner, doc.name]);\n}")
])
])
]
]
userDesigns =
[ jsobj
[ ("_id", jsstr "_design/users")
, ("language", jsstr "javascript")
, ("views", jsobj
[ ("by_email", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.email)\n emit(doc.email, doc);\n}")
])
, ("by_name", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.name)\n emit(doc.name, doc);\n}")
])
, ("by_gid", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.gid)\n emit (doc.gid, doc);\n}")
])
, ("by_gsub", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.gsub)\n emit (doc.gsub, doc);\n}")
])
])
]
]
issueDesigns =
[ jsobj
[ ("_id", jsstr "_design/issues")
, ("language", jsstr "javascript")
, ("views", jsobj
[ ("by_repository_and_number", jsobj
[ ("map", jsstr "function(doc) {\n emit([doc.repository, doc.number], doc);\n}")
])
, ("by_repository", jsobj
[ ("map", jsstr "function(doc) {\n emit(doc.repository, doc);\n}")
])
, ("by_repository_open", jsobj
[ ("map", jsstr "function(doc) {\n if (!doc.is_closed)\n emit(doc.repository, doc);\n}")
])
, ("by_repository_closed", jsobj
[ ("map", jsstr "function(doc) {\n if (doc.is_closed)\n emit(doc.repository, doc);\n}")
])
, ("by_repository_and_tag", jsobj
[ ("map", jsstr "function(doc) {\n for(var i in doc.tags)\n emit([doc.repository, doc.tags[i]], doc);\n}")
])
])
]
]
commentDesigns =
[ jsobj
[ ("_id", jsstr "_design/comments")
, ("language", jsstr "javascript")
, ("views", jsobj
[ ("by_issue", jsobj
[ ("map", jsstr "function(doc) {\n emit(doc.issue, doc);\n}")
])
])
]
]
jsstr :: String -> JSValue
jsstr = JSString . toJSString
jsobj :: [(String, JSValue)] -> JSValue
jsobj = JSObject . toJSObject