Skip to content

Commit

Permalink
chore: initialize repository
Browse files Browse the repository at this point in the history
  • Loading branch information
Franco Méndez committed Oct 20, 2019
0 parents commit 3a6fe37
Show file tree
Hide file tree
Showing 14 changed files with 988 additions and 0 deletions.
27 changes: 27 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module.exports = {
env: {
browser: true,
commonjs: true,
es6: true
},
extends: [
"prettier"
],
globals: {
Atomics: "readonly",
SharedArrayBuffer: "readonly"
},
parserOptions: {
ecmaVersion: 2018
},
plugins: [
"prettier"
],
rules: {
"prettier/prettier": ["error", {
trailingComma: "none",
semi: true,
singleQuote: true,
}]
}
};
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
23 changes: 23 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
var AWS = require('aws-sdk');
var dynamoDb = new AWS.DynamoDB.DocumentClient();

var { handleUser } = require('./resources');

exports.handler = function(event, context, callback) {
console.log('EVENT: \n' + JSON.stringify(event, null, 2));

if (
!event.TableName ||
!event.payload ||
!event.payload.resource ||
!event.payload.operation ||
!event.payload.Item
) {
return callback(null, { statusCode: 400 });
}

switch (event.resource) {
case 'user':
return handleUser(event, callback);
}
};
18 changes: 18 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "salgode-api",
"version": "0.0.0",
"main": "index.js",
"scripts": {
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"predeploy": "zip -r artifact.zip *",
"deploy": "aws lambda update-function-code --function-name SalgodeCore --zip-file fileb://artifact.zip --region us-east-1"
},
"private": true,
"devDependencies": {
"eslint": "^6.5.1",
"eslint-config-prettier": "^6.4.0",
"eslint-plugin-prettier": "^3.1.1",
"prettier": "^1.18.2"
}
}
3 changes: 3 additions & 0 deletions resources/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
handleUser: require('./user')
};
30 changes: 30 additions & 0 deletions resources/user/create.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
var { uuid } = require('../../utils');

module.exports = function(event, callback) {
var timestamp = new Date().getTime();

var params = {
TableName: event.TableName,
Item: {
id: uuid(),
...event.payload.Item,
createdAt: timestamp,
updatedAt: timestamp
},
ConditionExpression: 'attribute_not_exists(email)'
};

dynamoDb.put(params, error => {
if (error) {
console.error(error);
callback(null, { statusCode: 501 });
return;
}

var response = {
statusCode: 200,
body: params.Item
};
return callback(null, response);
});
};
Empty file added resources/user/destroy.js
Empty file.
20 changes: 20 additions & 0 deletions resources/user/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
var create = require('./create');
var destroy = require('./destroy');
var list = require('./list');
var read = require('./read');
var update = require('./update');

module.exports = function(event, callback) {
switch (event.operation) {
case 'create':
return create(event, callback);
case 'destroy':
return destroy(event, callback);
case 'list':
return list(event, callback);
case 'read':
return read(event, callback);
case 'update':
return update(event, callback);
}
};
Empty file added resources/user/list.js
Empty file.
Empty file added resources/user/read.js
Empty file.
Empty file added resources/user/update.js
Empty file.
3 changes: 3 additions & 0 deletions utils/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
uuid: require('./uuid')
};
11 changes: 11 additions & 0 deletions utils/uuid.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = function uuid() {
var dt = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(
c
) {
var r = (dt + Math.random() * 16) % 16 | 0;
dt = Math.floor(dt / 16);
return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
});
return uuid;
};
Loading

0 comments on commit 3a6fe37

Please sign in to comment.