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