Skip to content

Feature/api enhancements #49

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Mar 6, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
config/local.js
config/sample.local.js
node_modules
dist
.ebextensions
.elasticbeanstalk
coverage
27 changes: 27 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"extends": "airbnb-base",
"parser": "babel-eslint",
"env": {
"browser": false,
"node": true,
"es6": true,
"mocha": true
},
"rules": {
"import/no-extraneous-dependencies": ["error", {"devDependencies": ["**/*.test.js", "**/*.spec.js", "**/serviceMocks.js"]}],
"max-len": ["error", { "ignoreComments": true, "code": 120 }],
"valid-jsdoc": ["error", {
"requireReturn": true,
"requireReturnType": true,
"requireParamDescription": true,
"requireReturnDescription": true
}],
"require-jsdoc": ["error", {
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
"ClassDeclaration": true
}
}]
}
}
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ Microservice to manage CRUD operations for all things Projects.

### Local Development
* We use docker-compose for running dependencies locally. Instructions for Docker compose setup - https://docs.docker.com/compose/install/
* Nodejs 5.10.1 - consider using [nvm](https://github.com/creationix/nvm) or equivalent to manage your node version
* Nodejs 6.9.4 - consider using [nvm](https://github.com/creationix/nvm) or equivalent to manage your node version
* Install [libpg](https://www.npmjs.com/package/pg-native)
* Install node dependencies
`npm install | ./node_modules/.bin/bunyan`
`npm install`

* Start local services
```~/Projects/tc-projects-service
Expand All @@ -21,8 +21,7 @@ Copy config/sample.local.js as config/local.js, update the properties and accord
Once you start your PostgreSQL database through docker, it will create a projectsDB.
*To create tables - note this will drop tables if they already exist*
```
npm run -s build
> NODE_ENV=development node -e "require('./dist/models').default.sequelize.sync({force: true}).then((res)=> console.log('Success: ', res)).catch((err)=> console.log('Failed: ', err));"
NODE_ENV=local npm run sync
```

#### Redis
Expand Down Expand Up @@ -51,5 +50,5 @@ You may replace 172.17.0.1 with your docker0 IP.

You can paste **swagger.yaml** to [swagger editor](http://editor.swagger.io/) or import **postman.json** to verify endpoints.

### Deployment
Using awsebcli - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html
#### Deploying without docker
If you don't want to use docker to deploy to localhost. You can simply run `npm run start` from root of project. This should start the server on default port `3000`.
56 changes: 28 additions & 28 deletions config/sample.local.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
// force using test.json for unit tests

var config
let config;
if (process.env.NODE_ENV === 'test') {
config = require('./test.json')
config = require('./test.json');
} else {
config = {
"authSecret": "secret",
"logLevel": "debug",
"captureLogs": "false",
"logentriesToken": "",
"rabbitmqURL": "amqp://dockerhost:5672",
"fileServiceEndpoint": "https://api.topcoder-dev.com/v3/files/",
"topicServiceEndpoint": "https://api.topcoder-dev.com/v4/topics/",
"directProjectServiceEndpoint": "https://api.topcoder-dev.com/v3/direct",
"userServiceUrl": "https://api.topcoder-dev.com/v3/users",
"connectProjectsUrl": "https://connect.topcoder-dev.com/projects/",
"salesforceLead" : {
"webToLeadUrl": 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8',
"orgId": "00D2C0000000dO6",
"projectNameFieldId": "title",
"projectDescFieldId": "description",
"projectLinkFieldId": "URL",
"projectIdFieldId" : "00N2C000000Vxxx"
},
"dbConfig": {
"masterUrl": "postgres://coder:mysecretpassword@dockerhost:5432/projectsdb",
"maxPoolSize": 50,
"minPoolSize": 4,
"idleTimeout": 1000
}
}
authSecret: 'secret',
logLevel: 'debug',
captureLogs: 'false',
logentriesToken: '',
rabbitmqURL: 'amqp://dockerhost:5672',
fileServiceEndpoint: 'https://api.topcoder-dev.com/v3/files/',
topicServiceEndpoint: 'https://api.topcoder-dev.com/v4/topics/',
directProjectServiceEndpoint: 'https://api.topcoder-dev.com/v3/direct',
userServiceUrl: 'https://api.topcoder-dev.com/v3/users',
connectProjectsUrl: 'https://connect.topcoder-dev.com/projects/',
salesforceLead: {
webToLeadUrl: 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8',
orgId: '00D2C0000000dO6',
projectNameFieldId: 'title',
projectDescFieldId: 'description',
projectLinkFieldId: 'URL',
projectIdFieldId: '00N2C000000Vxxx',
},
dbConfig: {
masterUrl: 'postgres://coder:mysecretpassword@dockerhost:5432/projectsdb',
maxPoolSize: 50,
minPoolSize: 4,
idleTimeout: 1000,
},
};
}
module.exports = config
module.exports = config;
21 changes: 21 additions & 0 deletions migrations/sync.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@


/* eslint-disable no-console */
/**
* Sync the database models to db tables.
*/

/**
* Make sure we are in development mode
* @type {String}
*/
// process.env.NODE_ENV = 'development'

require('../src/models').default.sequelize.sync({ force: true })
.then(() => {
console.log('Database synced successfully');
process.exit();
}).catch((err) => {
console.error('Error syncing database', err);
process.exit(1);
});
35 changes: 0 additions & 35 deletions newrelic.js

This file was deleted.

41 changes: 12 additions & 29 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,16 @@
"node": ">=6.9"
},
"scripts": {
"test": "NODE_ENV=test ./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- --compilers js:babel-core/register $(find src -path '*spec.js*')",
"live-test": "NODE_ENV=test ./node_modules/.bin/mocha -w --compilers js:babel-core/register $(find src -path '*spec.js*')",
"dev": "NODE_ENV=local PORT=8001 nodemon -w src --exec \"babel-node src --presets es2015\" | ./node_modules/.bin/bunyan",
"lint": "./node_modules/.bin/eslint .",
"lint:fix": "./node_modules/.bin/eslint . --fix || true",
"build": "babel src -d dist --presets es2015",
"start": "node dist",
"sync": "node migrations/sync.js",
"prestart": "npm run -s build",
"seed": "babel-node src/tests/seed.js --presets es2015",
"direct": "babel-node src/mocks/direct.js --presets es2015",
"lint": "./node_modules/.bin/eslint src"
"start": "node dist",
"start:dev": "NODE_ENV=local PORT=8001 nodemon -w src --exec \"babel-node src --presets es2015\" | ./node_modules/.bin/bunyan",
"test": "npm run lint && NODE_ENV=test ./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- --compilers js:babel-core/register $(find src -path '*spec.js*')",
"test:watch": "NODE_ENV=test ./node_modules/.bin/mocha -w --compilers js:babel-core/register $(find src -path '*spec.js*')",
"seed": "babel-node src/tests/seed.js --presets es2015"
},
"repository": {
"type": "git",
Expand All @@ -27,25 +28,6 @@
"url": "https://github.com/appirio-tech/tc-projects-service/issues"
},
"homepage": "https://github.com/appirio-tech/tc-projects-service#readme",
"eslintConfig": {
"plugins": [],
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 7,
"sourceType": "module"
},
"env": {
"node": true,
"mocha": true
},
"globals": {
"Promise": true
},
"rules": {
"no-console": 0,
"no-unused-vars": 1
}
},
"dependencies": {
"amqplib": "^0.5.1",
"analytics-node": "^2.1.1",
Expand All @@ -61,7 +43,6 @@
"express-validation": "^0.6.0",
"joi": "^8.0.5",
"lodash": "^4.16.4",
"newrelic": "^1.27.2",
"pg": "^4.5.5",
"pg-native": "^1.10.0",
"sequelize": "^3.23.0",
Expand All @@ -70,12 +51,14 @@
"devDependencies": {
"babel-cli": "^6.9.0",
"babel-core": "^6.11.4",
"babel-eslint": "^7.1.1",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-preset-es2015": "^6.9.0",
"bunyan": "^1.8.1",
"chai": "^3.5.0",
"eslint": "^3.2.2",
"eslint-plugin-import": "^1.12.0",
"eslint": "^3.16.1",
"eslint-config-airbnb-base": "^11.1.0",
"eslint-plugin-import": "^2.2.0",
"istanbul": "^1.0.0-alpha.2",
"mocha": "^2.5.3",
"nodemon": "^1.9.1",
Expand Down
Loading