Skip to content

Commit

Permalink
add github auth basics
Browse files Browse the repository at this point in the history
  • Loading branch information
lipp committed Jan 4, 2016
1 parent 4d9a398 commit 4e50c4c
Show file tree
Hide file tree
Showing 8 changed files with 304 additions and 27 deletions.
87 changes: 74 additions & 13 deletions lib/db.js
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
/* global emit */
var cradle = require('cradle')
var db
var doclets
var users
var repos

var initDesignDocuments = function () {
db.save('_design/packages', {
doclets.save('_design/packages', {
byUserAndRepo: {
map: function (doc) {
if (doc.event) {
Expand Down Expand Up @@ -31,6 +33,33 @@ var initDesignDocuments = function () {
})
}

var initUsers = function (connection) {
users = connection.database('users')
users.exists(function (err, exists) {
if (!err && !exists) {
users.create()
}
})
}

var initRepos = function (connection) {
repos = connection.database('repos')
repos.exists(function (err, exists) {
if (!err && !exists) {
repos.create()
repos.save('_design/repos', {
byUser: {
map: function (doc) {
if (doc.full_name) {
emit(doc.owner.login || doc.owner.name, doc)
}
}
}
})
}
})
}

var failCount = 0

var init = function (done) {
Expand All @@ -46,11 +75,12 @@ var init = function (done) {
couchhost = 'http://couchdb'
}
console.log('connect', couchhost, couchport)
db = new (cradle.Connection)(couchhost, couchport, {
var connection = new (cradle.Connection)(couchhost, couchport, {
retries: 10,
retryTimeout: 1000
}).database('doclets')
db.exists(function (err, exists) {
})
doclets = connection.database('doclets')
doclets.exists(function (err, exists) {
if (err) {
console.log('not connected, error', failCount, err)
++failCount
Expand All @@ -64,22 +94,48 @@ var init = function (done) {
}
} else if (exists) {
initDesignDocuments()
initUsers(connection)
initRepos(connection)
done()
} else {
db.create()
doclets.create()
initDesignDocuments()
initRepos(connection)
done()
/* populate design documents */
}
})
}

var put = function (key, branch, data, done) {
db.save(key + branch, data, done)
doclets.save(key + branch, data, done)
}

var get = function (key, branch, done) {
db.get(key + branch, done)
doclets.get(key + branch, done)
}

var putUser = function (id, data, done) {
users.save(id, data, done)
}

var getUser = function (id, done) {
users.get(id, done)
}

var getRepo = function (fullname, done) {
repos.get(fullname, done)
}

var putRepo = function (fullname, repo, done) {
repos.save(fullname, repo, done)
}

var getReposByUser = function (user, done) {
repos.view('repos/byUser', {
startkey: user,
endkey: user
}, forwardValues(done))
}

var forwardValues = function (done) {
Expand All @@ -97,32 +153,32 @@ var forwardValues = function (done) {
}

var getVersionsByUserAndRepo = function (user, repo, done) {
db.view('packages/byUserAndRepo', {
doclets.view('packages/byUserAndRepo', {
startkey: [user, repo],
endkey: [user, repo]
}, forwardValues(done))
}

var getModulesByUser = function (user, done) {
db.view('packages/byUserAndRepo', {
doclets.view('packages/byUserAndRepo', {
startkey: [user],
endkey: [user, '\u9999']
}, forwardValues(done))
}

var getAllModules = function (done) {
db.view('packages/byRepo', {}, forwardValues(done))
doclets.view('packages/byRepo', {}, forwardValues(done))
}

var searchAllModules = function (matchStr, done) {
db.view('packages/byRepo', {
doclets.view('packages/byRepo', {
startkey: matchStr,
endkey: matchStr + '\u9999'
}, forwardValues(done))
}

var getNewestModules = function (limit, done) {
db.view('packages/byDate', {
doclets.view('packages/byDate', {
descending: true,
limit: limit
}, forwardValues(done))
Expand All @@ -132,6 +188,11 @@ module.exports = {
init: init,
put: put,
get: get,
putUser: putUser,
getUser: getUser,
putRepo: putRepo,
getRepo: getRepo,
getReposByUser: getReposByUser,
getVersionsByUserAndRepo: getVersionsByUserAndRepo,
getModulesByUser: getModulesByUser,
getAllModules: getAllModules,
Expand Down
Loading

0 comments on commit 4e50c4c

Please sign in to comment.