UNPKG

dynopromise-client

Version:

A client for dynamodb using promises.

2 lines (1 loc) 1.19 kB
const AWS=require("aws-sdk");const methodsToOverride=["batchGet","batchWrite","createSet","delete","get","put","query","scan","update"];module.exports=options=>{const realOptions=options||{};if(!realOptions.region&&process.env.DYNOPROMISE_AWS_REGION){realOptions.region=process.env.DYNOPROMISE_AWS_REGION}if(!realOptions.endpoint&&process.env.DYNOPROMISE_DYNAMODB_ENDPOINT){realOptions.endpoint=process.env.DYNOPROMISE_DYNAMODB_ENDPOINT}if(!realOptions.accessKeyId&&!realOptions.secretAccessKey&&process.env.DYNOPROMISE_AWS_ACCESS_KEY_ID&&process.env.DYNOPROMISE_AWS_SECRET_ACCESS_KEY){realOptions.accessKeyId=process.env.DYNOPROMISE_AWS_ACCESS_KEY_ID;realOptions.secretAccessKey=process.env.DYNOPROMISE_AWS_SECRET_ACCESS_KEY}const client=new AWS.DynamoDB.DocumentClient(realOptions);const db={};const callDb=(method,params)=>new Promise((resolve,reject)=>{client[method](params,(err,data)=>{if(err){return reject(err)}return resolve(data)})});for(let method in client){if(methodsToOverride.indexOf(method)>=0){Object.defineProperty(db,method,{enumerable:true,value:params=>callDb(method,params)})}}Object.defineProperty(db,"getDocumentClient",{enumerable:true,value:()=>client});return db};