Skip to content

Commit 9c2bc86

Browse files
committed
Separa variaveis de ambiente e credenciais
1 parent 5a68d54 commit 9c2bc86

14 files changed

+129
-76
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ perf-logs
1212
v8.log
1313
*.js.map
1414
!gulpfile.js
15+
script

Dockerfile

+1-8
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,8 @@ RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf
1212
EXPOSE 5432
1313
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
1414
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]
15-
USER root
16-
RUN /etc/init.d/postgresql stop
17-
RUN /etc/init.d/postgresql start
18-
RUN psql -h localhost -U postgres
19-
RUN psql -c "ALTER USER postgres WITH PASSWORD 'pgroot'";
20-
RUN psql -c "CREATE DATABASE api OWNER postgres"
21-
RUN psql -c 'CREATE TABLE "Users" (id serial NOT NULL, "name" character varying (255), "email" character varying (255), "password" character varying(255), "createdAt" timestamp with time zone NOT NULL, "updatedAt" timestamp with time zone NOT NULL);'
2215

23-
# USER root
16+
USER root
2417
RUN mkdir -p /usr/src/ts-api
2518
WORKDIR /usr/src/ts-api
2619

README.md

+22
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,26 @@ Tests:
3030
npm run test
3131
```
3232

33+
## If Docker
34+
Run:
35+
```
36+
[sudo] docker build -t <image_name> .
37+
```
38+
```
39+
[sudo] docker run -d -p 9000:3000 --name <label> <image_name>
40+
```
41+
Connect to the container:
42+
```
43+
[sudo] docker exec -it <id_container> /bin/bash
44+
```
45+
Run the commands below in the container terminal:
46+
```
47+
su postgres
48+
/etc/init.d/postgresql start
49+
psql -c "ALTER USER postgres WITH PASSWORD 'pgroot'"
50+
psql -c "CREATE DATABASE api OWNER postgres"
51+
npm run watch
52+
```
53+
54+
3355
License: MIT

package.json

+2-4
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44
"description": "\"TypeScript API - Node + ES6 + Sequelize + PostgreSQL\"",
55
"main": "server.ts",
66
"scripts": {
7-
"test": "mocha --compilers ts:ts-node/register server/**/test.ts",
7+
"test": "sh script/test.sh",
88
"dist-test": "mocha --require dist/config/tests/functional/helpers.js --reporter spec --compilers js:babel-core/register dist/**/test.js",
9-
"start": "./node_modules/.bin/ts-node ./server/server.ts",
10-
"watch": "./node_modules/.bin/nodemon -w . --ext \".ts\" --exec \"npm run start\"",
11-
"node": "node dist/server/server.js",
9+
"watch": "sh script/server.sh",
1210
"lint": "eslint 'dist/**/*.js'",
1311
"lint:fix": "eslint 'dist/**/*.js' --fix",
1412
"dist-start": "babel-node dist/server/server.js"

scripts/server.sh

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export NODE_ENV= #Parâmetros
2+
export DB_NAME= #Parâmetros
3+
export DIALECT= #Parâmetros
4+
export DB_USER= #Parâmetros
5+
export DB_PASS= #Parâmetros
6+
export HOST= #Parâmetros
7+
export SERVER_PORT= #Parâmetros
8+
export PG_PORT= #Parâmetros
9+
export DB_URL= #Parâmetros
10+
./node_modules/.bin/nodemon -w . --ext ".ts" --exec "npm run start"

scripts/test.sh

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export NODE_ENV= #Parâmetros
2+
export DB_NAME= #Parâmetros
3+
export DIALECT= #Parâmetros
4+
export DB_USER= #Parâmetros
5+
export DB_PASS= #Parâmetros
6+
export HOST= #Parâmetros
7+
export SERVER_PORT= #Parâmetros
8+
export PG_PORT= #Parâmetros
9+
export DB_URL= #Parâmetros
10+
mocha --compilers ts:ts-node/register server/**/test.ts

server/auth.js

+11-17
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,19 @@ function authConfig() {
1212
opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
1313
var strategy = new Strategy(opts, function (jwtPayload, done) {
1414
UserService.getById(jwtPayload.id)
15-
.then(function () {
16-
success(jwtPayload, done);
15+
.then(function (data) {
16+
if (data) {
17+
return done(null, {
18+
id: data.id,
19+
email: data.email
20+
});
21+
}
22+
return done(null, false);
1723
})
18-
.catch(_.partial(error, done, error));
24+
.catch(_.partial(function (error) {
25+
return done(error, null);
26+
}, done));
1927
});
20-
function success(data, done) {
21-
if (data) {
22-
return done(null, {
23-
id: data.id,
24-
email: data.email
25-
});
26-
}
27-
return done(null, false);
28-
}
29-
;
30-
function error(done) {
31-
return done(error, null);
32-
}
33-
;
3428
passport.use(strategy);
3529
return {
3630
initialize: function () {

server/auth.ts

+12-17
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,20 @@ export default function authConfig () {
1414

1515
const strategy = new Strategy(opts, (jwtPayload, done) => {
1616
UserService.getById(jwtPayload.id)
17-
.then(() => {
18-
success(jwtPayload, done)
17+
.then((data) => {
18+
if(data) {
19+
return done(null, {
20+
id: data.id,
21+
email: data.email
22+
});
23+
}
24+
return done(null, false);
1925
})
20-
.catch(_.partial(error, done, error));
21-
})
26+
.catch(_.partial((error) => {
27+
return done(error, null);
28+
}, done));
29+
});
2230

23-
function success(data:any, done): Function {
24-
if(data) {
25-
return done(null, {
26-
id: data.id,
27-
email: data.email
28-
});
29-
}
30-
return done(null, false);
31-
};
32-
33-
function error(done): Function {
34-
return done(error, null);
35-
};
3631
passport.use(strategy);
3732

3833
return {

server/config/env/config.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/* jshint esversion:6*/
2+
module.exports = function () {
3+
return require(`../env/${process.env.NODE_ENV}.env.js`);
4+
};

server/config/env/development.env.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* jshint esversion:6*/
2+
module.exports = {
3+
env: process.env.NODE_ENV,
4+
db: process.env.DB_NAME,
5+
dialect: process.env.DIALECT,
6+
username: process.env.DB_USER,
7+
password: process.env.DB_PASS,
8+
host: process.env.HOST,
9+
server_port: process.env.SERVER_PORT,
10+
pg_port: process.env.PG_PORT,
11+
db_url: process.env.DB_URL,
12+
};

server/config/env/test.env.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* jshint esversion:6*/
2+
module.exports = {
3+
env: process.env.NODE_ENV,
4+
db: process.env.DB_NAME,
5+
dialect: process.env.DIALECT,
6+
username: process.env.DB_USER,
7+
password: process.env.DB_PASS,
8+
host: process.env.HOST,
9+
server_port: process.env.SERVER_PORT,
10+
pg_port: process.env.PG_PORT,
11+
db_url: process.env.DB_URL,
12+
};

server/models/index.js

+29-28
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
11
'use strict';
2-
var fs = require('fs');
3-
var path = require('path');
4-
var Sequelize = require('sequelize');
5-
var basename = path.basename(module.filename);
6-
var env = process.env.NODE_ENV || 'development';
7-
var config = require('../config/config.json')[env];
8-
var db = {};
9-
if (config.use_env_variable) {
10-
var sequelize = new Sequelize(process.env[config.use_env_variable]);
11-
}
12-
else {
13-
var sequelize = new Sequelize(config.database, config.username, config.password, config);
14-
}
2+
let fs = require('fs');
3+
let path = require('path');
4+
let Sequelize = require('sequelize');
5+
let basename = path.basename(module.filename);
6+
const config = require('../config/env/config')();
7+
let env = config.env || 'development';
8+
let db = {};
9+
let sequelize;
10+
11+
if (config.db_url) {
12+
sequelize = new Sequelize(config.db_url);
13+
} else {
14+
sequelize = new Sequelize(config.db, config.username, config.password);
15+
}
1516
fs
16-
.readdirSync(__dirname)
17-
.filter(function (file) {
18-
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
19-
})
20-
.forEach(function (file) {
21-
var model = sequelize['import'](path.join(__dirname, file));
22-
db[model.name] = model;
23-
});
17+
.readdirSync(__dirname)
18+
.filter((file) => {
19+
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
20+
})
21+
.forEach((file) => {
22+
var model = sequelize['import'](path.join(__dirname, file));
23+
db[model.name] = model;
24+
});
2425
Object.keys(db).forEach(function (modelName) {
25-
if (db[modelName].associate) {
26-
db[modelName].associate(db);
27-
}
28-
});
29-
db.sequelize = sequelize;
30-
db.Sequelize = Sequelize;
31-
module.exports = db;
26+
if (db[modelName].associate) {
27+
db[modelName].associate(db);
28+
}
29+
});
30+
db.sequelize = sequelize;
31+
db.Sequelize = Sequelize;
32+
module.exports = db;

server/models/user.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
"use strict";
2-
32
var bcrypt = require('bcrypt');
43
function default_1(sequelize, DataTypes) {
54
var User = sequelize.define('User', {
@@ -45,3 +44,4 @@ function default_1(sequelize, DataTypes) {
4544
}
4645
exports.__esModule = true;
4746
exports["default"] = default_1;
47+
;

server/server.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import * as debug from 'debug';
33
import Api from './api/api';
44
import {errorHandlerApi} from './api/errorHandlerApi';
55
var models = require('./models');
6+
const config = require('./config/env/config')();
67
debug('ts-api:server');
78

8-
const port = normalizePort(process.env.PORT || 3000);
9+
const port = normalizePort(config.server_port);
910

1011
Api.set('port', port);
1112
const server = http.createServer(Api);

0 commit comments

Comments
 (0)