add index.js

This commit is contained in:
nyaundi brian 2019-10-27 20:36:50 +03:00
parent f874de542e
commit 4fc2bee726

116
lib/index.js Normal file
View File

@ -0,0 +1,116 @@
'use strict';
var Client = require('pg').Client;
var promisify = require('util').promisify;
var defaults = {
tableName: 'acme_challenge'
};
module.exports.create = function(config) {
var tableName = config.tableName || defaults.tableName;
var databaseUrl = config.databaseUrl;
var client;
return {
init: function(opts) {
console.log('init');
client = new Client({
connectionString: databaseUrl
});
var dropTableQuery = 'DROP TABLE IF EXISTS "' + tableName + '" CASCADE;';
var createTableQuery = 'CREATE TABLE IF NOT EXISTS "' + tableName + '" (' +
'"id" SERIAL , ' +
'"domain" VARCHAR(255) NOT NULL, ' +
'"tokenName" VARCHAR(255), ' +
'"keyAuthorization" VARCHAR(255), PRIMARY KEY ("id"));';
return client.connect().then(function() {
return client.query(dropTableQuery + createTableQuery)
.then(function(res) {
// console.log(res);
return null;
}).catch(function(err) {
console.error(err.stack);
throw err;
});
}).catch(function(err) {
console.error('Unable to connect to the database:', err);
throw err;
});
},
set: function(data) {
// console.log('Add Key Auth URL', data);
var ch = data.challenge;
var setQuery = 'INSERT INTO "'+tableName+'" ("id","domain","tokenName","keyAuthorization") VALUES (DEFAULT,$1,$2,$3) RETURNING *;';
var setValues = [ch.identifier.value,ch.token,ch.keyAuthorization];
return client.query(setQuery,setValues)
.then(function(res) {
// console.log(res);
console.log(
'acmeChallenge auto-generated ID:',
res.rows[0].id
);
return true;
}).catch(function(err) {
console.error(err.stack);
throw err;
});
},
get: function(data) {
// console.log('List Key Auth URL', data);
var ch = data.challenge;
var getQuery = 'SELECT "id", "domain", "tokenName", "keyAuthorization" FROM "'+tableName+'" AS "acme_challenge" WHERE "acme_challenge"."domain" = $1 AND "acme_challenge"."tokenName" = $2 LIMIT 1;';
var getValues = [ch.identifier.value,ch.token];
return client.query(getQuery,getValues)
.then(function(res) {
// console.log(res);
var acmeChallenge = res.rows[0];
if (acmeChallenge) {
return {
keyAuthorization: acmeChallenge.keyAuthorization
};
}
return null;
}).catch(function(err) {
console.error(err.stack);
throw err;
});
},
remove: function(data) {
var ch = data.challenge;
var deleteQuery = 'DELETE FROM "'+tableName+'" WHERE "domain" = $1 AND "tokenName" = $2';
var deleteValues = [ch.identifier.value,ch.token];
return client.query(deleteQuery,deleteValues)
.then(function(res) {
// console.log(res);
return null;
}).catch(function(err) {
console.error(err.stack);
throw err;
});
}
};
};
// close connection
// client.end();