From cc1666d9832415058bf0b22bb5912e432261af4f Mon Sep 17 00:00:00 2001 From: Azul Date: Mon, 7 Jul 2014 10:12:53 +0200 Subject: Identity view cert_fingerprints_by_expiry Also move complex identity views into js designs. Includes test. Here's how you would query it from outside rails: ``` $ curl 'localhost:5984/identities/_design/Identity/_view/cert_fingerprints_by_expiry?startkey="2014-07-05"' {"total_rows":4,"offset":1,"rows":[ {"id":"6c9091d4f13eaeaa6062c9d0528fd34d","key":"2014-07-05","value":"fingerprint"}, {"id":"6f3aa93828b4f6978d551f2623b9d103","key":"2014-07-05","value":"fingerprint"}, {"id":"b6cafacfa65042679691cd5065fb19e3","key":"2014-07-07","value":"fp"} ]} ``` Note that the expiry will be used as the key. So you should use the current data (or yesterday) as the startkey to get all fingerprints that have not expired yet. The fingerprint itself is in the value. No need to include docs. --- app/designs/identity/cert_fingerprints_by_expiry.js | 12 ++++++++++++ app/designs/identity/disabled.js | 8 ++++++++ app/designs/identity/pgp_key_by_email.js | 8 ++++++++ 3 files changed, 28 insertions(+) create mode 100644 app/designs/identity/cert_fingerprints_by_expiry.js create mode 100644 app/designs/identity/disabled.js create mode 100644 app/designs/identity/pgp_key_by_email.js (limited to 'app/designs/identity') diff --git a/app/designs/identity/cert_fingerprints_by_expiry.js b/app/designs/identity/cert_fingerprints_by_expiry.js new file mode 100644 index 0000000..995219b --- /dev/null +++ b/app/designs/identity/cert_fingerprints_by_expiry.js @@ -0,0 +1,12 @@ +function(doc) { + if (doc.type != 'Identity') { + return; + } + if (typeof doc.cert_fingerprints === "object") { + for (fp in doc.cert_fingerprints) { + if (doc.cert_fingerprints.hasOwnProperty(fp)) { + emit(doc.cert_fingerprints[fp], fp); + } + } + } +} diff --git a/app/designs/identity/disabled.js b/app/designs/identity/disabled.js new file mode 100644 index 0000000..5509575 --- /dev/null +++ b/app/designs/identity/disabled.js @@ -0,0 +1,8 @@ +function(doc) { + if (doc.type != 'Identity') { + return; + } + if (typeof doc.user_id === "undefined") { + emit(doc._id, 1); + } +} diff --git a/app/designs/identity/pgp_key_by_email.js b/app/designs/identity/pgp_key_by_email.js new file mode 100644 index 0000000..f783908 --- /dev/null +++ b/app/designs/identity/pgp_key_by_email.js @@ -0,0 +1,8 @@ +function(doc) { + if (doc.type != 'Identity') { + return; + } + if (typeof doc.keys === "object") { + emit(doc.address, doc.keys["pgp"]); + } +} -- cgit v1.2.3 From 3bbfdf29bbc40432c21e34fe84060cf9ae70273f Mon Sep 17 00:00:00 2001 From: Azul Date: Sat, 12 Jul 2014 09:55:26 +0200 Subject: allow querying for the expiry of a particular fingerprint --- app/designs/identity/cert_expiry_by_fingerprint.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 app/designs/identity/cert_expiry_by_fingerprint.js (limited to 'app/designs/identity') diff --git a/app/designs/identity/cert_expiry_by_fingerprint.js b/app/designs/identity/cert_expiry_by_fingerprint.js new file mode 100644 index 0000000..0636da5 --- /dev/null +++ b/app/designs/identity/cert_expiry_by_fingerprint.js @@ -0,0 +1,12 @@ +function(doc) { + if (doc.type != 'Identity') { + return; + } + if (typeof doc.cert_fingerprints === "object") { + for (fp in doc.cert_fingerprints) { + if (doc.cert_fingerprints.hasOwnProperty(fp)) { + emit(fp, doc.cert_fingerprints[fp]); + } + } + } +} -- cgit v1.2.3