From c8695c8df6db2629a4325dd3305d052c5f1b7300 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <code@dgerhardt.net> Date: Fri, 14 Jul 2017 22:04:17 +0200 Subject: [PATCH] Update CouchDB design docs --- .../{answer.design.js => Answer.design.js} | 37 +++++++++---------- .../{comment.design.js => Comment.design.js} | 33 ++++++++--------- src/main/resources/couchdb/Content.design.js | 22 +++++++++++ .../{user.design.js => DbUser.design.js} | 14 +++---- ...logged_in.design.js => LoggedIn.design.js} | 16 ++++---- .../{motd.design.js => Motd.design.js} | 20 +++++----- ...{motdlist.design.js => MotdList.design.js} | 2 +- .../{session.design.js => Session.design.js} | 26 ++++++------- src/main/resources/couchdb/content.design.js | 31 ---------------- 9 files changed, 94 insertions(+), 107 deletions(-) rename src/main/resources/couchdb/{answer.design.js => Answer.design.js} (72%) rename src/main/resources/couchdb/{comment.design.js => Comment.design.js} (61%) create mode 100644 src/main/resources/couchdb/Content.design.js rename src/main/resources/couchdb/{user.design.js => DbUser.design.js} (69%) rename src/main/resources/couchdb/{logged_in.design.js => LoggedIn.design.js} (94%) rename src/main/resources/couchdb/{motd.design.js => Motd.design.js} (63%) rename src/main/resources/couchdb/{motdlist.design.js => MotdList.design.js} (87%) rename src/main/resources/couchdb/{session.design.js => Session.design.js} (76%) delete mode 100644 src/main/resources/couchdb/content.design.js diff --git a/src/main/resources/couchdb/answer.design.js b/src/main/resources/couchdb/Answer.design.js similarity index 72% rename from src/main/resources/couchdb/answer.design.js rename to src/main/resources/couchdb/Answer.design.js index a79ac0a40..44d0a92f3 100644 --- a/src/main/resources/couchdb/answer.design.js +++ b/src/main/resources/couchdb/Answer.design.js @@ -1,59 +1,58 @@ var designDoc = { - "_id": "_design/answer", + "_id": "_design/Answer", "language": "javascript", "views": { - "doc_by_questionid_user_piround": { + "by_questionid": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit([doc.questionId, doc.user, doc.piRound], doc); + emit(doc.questionId, {_rev: doc._rev}); } } }, - "doc_by_questionid_timestamp": { + "by_questionid_piround_text_subject": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit([doc.questionId, doc.timestamp], doc); + emit([doc.questionId, doc.piRound, doc.abstention, doc.answerText, doc.answerSubject, doc.successfulFreeTextAnswer], {_rev: doc._rev}); } - } + }, + "reduce": "_count" }, - "doc_by_user_sessionid": { + "by_questionid_timestamp": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit([doc.user, doc.sessionId], doc); + emit([doc.questionId, doc.timestamp], {_rev: doc._rev}); } } }, - "by_questionid": { + "by_questionid_user_piround": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit(doc.questionId, null); + emit([doc.questionId, doc.user, doc.piRound], {_rev: doc._rev}); } } }, - "by_questionid_piround_text_subject": { + "by_sessionid": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit([doc.questionId, doc.piRound, doc.abstention, doc.answerText, doc.answerSubject, doc.successfulFreeTextAnswer], null); + emit(doc.sessionId, {_rev: doc._rev}); } }, "reduce": "_count" }, - "by_sessionid": { - /* Redundant view but kept for now to allow simpler queries. */ + "by_sessionid_variant": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit(doc.sessionId, null); + emit([doc.sessionId, doc.questionVariant], {_rev: doc._rev}); } }, "reduce": "_count" }, - "by_sessionid_variant": { + "by_user_sessionid": { "map": function (doc) { if (doc.type === "skill_question_answer") { - emit([doc.sessionId, doc.questionVariant], null); + emit([doc.user, doc.sessionId], {_rev: doc._rev}); } - }, - "reduce": "_count" + } }, "questionid_by_user_sessionid_variant": { "map": function (doc) { diff --git a/src/main/resources/couchdb/comment.design.js b/src/main/resources/couchdb/Comment.design.js similarity index 61% rename from src/main/resources/couchdb/comment.design.js rename to src/main/resources/couchdb/Comment.design.js index 23936b94e..c407a2eb5 100644 --- a/src/main/resources/couchdb/comment.design.js +++ b/src/main/resources/couchdb/Comment.design.js @@ -1,45 +1,44 @@ var designDoc = { - "_id": "_design/comment", + "_id": "_design/Comment", "language": "javascript", "views": { - "doc_by_sessionid_creator_timestamp": { + "by_sessionid": { "map": function (doc) { if (doc.type === "interposed_question") { - emit([doc.sessionId, doc.creator, doc.timestamp], doc); + emit(doc.sessionId, {_rev: doc._rev}); } - } + }, + "reduce": "_count" }, - "doc_by_sessionid_timestamp": { + "by_sessionid_creator_read": { "map": function (doc) { if (doc.type === "interposed_question") { - emit([doc.sessionId, doc.timestamp], doc); + emit([doc.sessionId, doc.creator, doc.read], {_rev: doc._rev}) } - } + }, + "reduce": "_count" }, - "by_sessionid": { - /* Redundant view but kept for now to allow simpler queries. */ + "by_sessionid_creator_timestamp": { "map": function (doc) { if (doc.type === "interposed_question") { - emit(doc.sessionId, null); + emit([doc.sessionId, doc.creator, doc.timestamp], {_rev: doc._rev}); } - }, - "reduce": "_count" + } }, "by_sessionid_read": { "map": function (doc) { if (doc.type === "interposed_question") { - emit([doc.sessionId, doc.read], null); + emit([doc.sessionId, doc.read], {_rev: doc._rev}); } }, "reduce": "_count" }, - "by_sessionid_creator_read": { + "by_sessionid_timestamp": { "map": function (doc) { if (doc.type === "interposed_question") { - emit([doc.sessionId, doc.creator, doc.read], null); + emit([doc.sessionId, doc.timestamp], {_rev: doc._rev}); } - }, - "reduce": "_count" + } } } }; diff --git a/src/main/resources/couchdb/Content.design.js b/src/main/resources/couchdb/Content.design.js new file mode 100644 index 000000000..cb3f2f982 --- /dev/null +++ b/src/main/resources/couchdb/Content.design.js @@ -0,0 +1,22 @@ +var designDoc = { + "_id": "_design/Content", + "language": "javascript", + "views": { + "by_sessionid": { + "map": function (doc) { + if (doc.type === "skill_question") { + emit(doc.sessionId, {_rev: doc._rev}); + } + }, + "reduce": "_count" + }, + "by_sessionid_variant_active": { + "map": function (doc) { + if (doc.type === "skill_question") { + emit([doc.sessionId, doc.questionVariant, doc.active, doc.subject, doc.text.substr(0, 16)], {_rev: doc._rev}); + } + }, + "reduce": "_count" + } + } +}; diff --git a/src/main/resources/couchdb/user.design.js b/src/main/resources/couchdb/DbUser.design.js similarity index 69% rename from src/main/resources/couchdb/user.design.js rename to src/main/resources/couchdb/DbUser.design.js index 9299516f8..aa63058d1 100644 --- a/src/main/resources/couchdb/user.design.js +++ b/src/main/resources/couchdb/DbUser.design.js @@ -1,20 +1,18 @@ var designDoc = { - "_id": "_design/user", + "_id": "_design/DbUser", "language": "javascript", "views": { - "doc_by_username": { - "map": function (doc) { - if (doc.type === "userdetails") { - emit(doc.username, doc); - } - } - }, "by_creation_for_inactive": { "map": function (doc) { if (doc.type === "userdetails" && doc.activationKey) { emit(doc.creation, {_rev: doc._rev}); } } + }, + "by_username": { + "map": function (doc) { + if (doc.type === "userdetails") emit(doc.username, {_rev: doc._rev}); + } } } }; diff --git a/src/main/resources/couchdb/logged_in.design.js b/src/main/resources/couchdb/LoggedIn.design.js similarity index 94% rename from src/main/resources/couchdb/logged_in.design.js rename to src/main/resources/couchdb/LoggedIn.design.js index 1b196b4f5..aadec2d1e 100644 --- a/src/main/resources/couchdb/logged_in.design.js +++ b/src/main/resources/couchdb/LoggedIn.design.js @@ -1,14 +1,7 @@ var designDoc = { - "_id": "_design/logged_in", + "_id": "_design/LoggedIn", "language": "javascript", "views": { - "visited_sessions_by_user": { - "map": function (doc) { - if (doc.type === "logged_in") { - emit(doc.user, doc.visitedSessions); - } - } - }, "all": { "map": function (doc) { if (doc.type === "logged_in"){ @@ -22,6 +15,13 @@ var designDoc = { emit(doc.timestamp || 0, {_rev: doc._rev}); } } + }, + "visited_sessions_by_user": { + "map": function (doc) { + if (doc.type === "logged_in") { + emit(doc.user, doc.visitedSessions); + } + } } } }; diff --git a/src/main/resources/couchdb/motd.design.js b/src/main/resources/couchdb/Motd.design.js similarity index 63% rename from src/main/resources/couchdb/motd.design.js rename to src/main/resources/couchdb/Motd.design.js index 33b111ee3..8e932510d 100644 --- a/src/main/resources/couchdb/motd.design.js +++ b/src/main/resources/couchdb/Motd.design.js @@ -1,25 +1,25 @@ var designDoc = { - "_id": "_design/motd", + "_id": "_design/Motd", "language": "javascript", "views": { - "doc_by_sessionkey": { + "by_audience_for_global": { "map": function (doc) { - if (doc.type === "motd" && doc.audience === "session") { - emit(doc.sessionkey, doc); + if (doc.type === "motd" && doc.audience !== "session") { + emit(doc.audience, {_rev: doc._rev}); } } }, - "doc_by_audience_for_global": { + "by_motdkey": { "map": function (doc) { - if (doc.type === "motd" && doc.audience !== "session") { - emit(doc.audience, doc); + if (doc.type === "motd") { + emit(doc.motdkey, {_rev: doc._rev}); } } }, - "by_motdkey": { + "by_sessionkey": { "map": function (doc) { - if (doc.type === "motd") { - emit(doc.motdkey, doc); + if (doc.type === "motd" && doc.audience === "session") { + emit(doc.sessionkey, {_rev: doc._rev}); } } } diff --git a/src/main/resources/couchdb/motdlist.design.js b/src/main/resources/couchdb/MotdList.design.js similarity index 87% rename from src/main/resources/couchdb/motdlist.design.js rename to src/main/resources/couchdb/MotdList.design.js index 37712e4ea..e7ddbe762 100644 --- a/src/main/resources/couchdb/motdlist.design.js +++ b/src/main/resources/couchdb/MotdList.design.js @@ -1,5 +1,5 @@ var designDoc = { - "_id": "_design/motdlist", + "_id": "_design/MotdList", "language": "javascript", "views": { "doc_by_username": { diff --git a/src/main/resources/couchdb/session.design.js b/src/main/resources/couchdb/Session.design.js similarity index 76% rename from src/main/resources/couchdb/session.design.js rename to src/main/resources/couchdb/Session.design.js index b8b1346b0..790e3af6a 100644 --- a/src/main/resources/couchdb/session.design.js +++ b/src/main/resources/couchdb/Session.design.js @@ -1,18 +1,25 @@ var designDoc = { - "_id": "_design/session", + "_id": "_design/Session", "language": "javascript", "views": { "by_courseid": { "map": function (doc) { - if (doc.type === "session" && doc.courseId && doc.sessionType !== "public_pool") { - emit(doc.courseId, null); + if (doc.type === "session" && doc.courseId && doc.sessionType !== "public_pool") { + emit(doc.courseId, {_rev: doc._rev}); } } }, "by_keyword": { "map": function (doc) { if (doc.type === "session") { - emit(doc.keyword, null); + emit(doc.keyword, {_rev: doc._rev}); + } + } + }, + "by_lastactivity_for_guests": { + "map": function (doc) { + if (doc.type === "session" && doc.sessionType !== "public_pool" && doc.creator.indexOf("Guest") === 0) { + emit(doc.lastOwnerActivity || doc.creationTime, {_rev: doc._rev}); } } }, @@ -29,9 +36,9 @@ var designDoc = { } } }, - "partial_by_ppsubject_name_for_publicpool": { + "partial_by_subject_name_for_publicpool": { "map": function (doc) { - if (doc.type === "session" && doc.sessionType === "public_pool") { + if (doc.type === "session" && doc.sessiontype === "public_pool") { emit([doc.ppSubject, doc.name], { ppSubject: doc.ppSubject, name: doc.name, @@ -40,13 +47,6 @@ var designDoc = { }); } } - }, - "by_lastactivity_for_guests": { - "map": function (doc) { - if (doc.type === "session" && doc.sessionType !== "public_pool" && doc.creator.indexOf("Guest") === 0) { - emit(doc.lastOwnerActivity || doc.creationTime, {_rev: doc._rev}); - } - } } } }; diff --git a/src/main/resources/couchdb/content.design.js b/src/main/resources/couchdb/content.design.js deleted file mode 100644 index 74518a473..000000000 --- a/src/main/resources/couchdb/content.design.js +++ /dev/null @@ -1,31 +0,0 @@ -var designDoc = { - "_id": "_design/content", - "language": "javascript", - "views": { - "doc_by_sessionid_variant_active": { - "map": function (doc) { - if (doc.type === "skill_question") { - emit([doc.sessionId, doc.questionVariant, doc.active, doc.subject, doc.text.substr(0, 16)], doc); - } - }, - "reduce": "_count" - }, - "by_sessionid": { - /* Redundant view but kept for now to allow simpler queries. */ - "map": function (doc) { - if (doc.type === "skill_question") { - emit(doc.sessionId, null); - } - }, - "reduce": "_count" - }, - "by_sessionid_variant_active": { - "map": function (doc) { - if (doc.type === "skill_question") { - emit([doc.sessionId, doc.questionVariant, doc.active, doc.subject, doc.text.substr(0, 16)], null); - } - }, - "reduce": "_count" - } - } -}; -- GitLab