Skip to content

Commit eebf903

Browse files
committed
Despliegue DB en Heroku
1 parent 38602dc commit eebf903

12 files changed

+207
-38
lines changed

.env

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
DATABASE_URL=sqlite://:@:/
2+
DATABASE_STORAGE=quiz.sqlite

.env~

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
DATABASE_URL=sqlite://:@/
2+
DATABASE_STORAGE=quiz.sqlite

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
node_modules
22
.DS_Store
33
npm-debug.log
4+
quiz.sqlite
45

.gitignore~

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules
2+
.DS_Store
3+
npm-debug.log
4+

controllers/quiz_controller.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1+
var models = require('../models/models.js');
2+
13
//GET /quizes/question
24
exports.question = function(req, res){
3-
res.render('quizes/question',{pregunta:'Capital de Italia'});
5+
models.Quiz.findAll().success(function(quiz){
6+
res.render('quizes/question',{pregunta: quiz[0].pregunta});
7+
})
48
};
9+
510
//GET /quizes/answer
611
exports.answer = function(req, res){
7-
if(req.query.respuesta === 'Roma'){
8-
res.render('quizes/answer',{respuesta:'Correcto'});
12+
models.Quiz.findAll().success(function(quiz){
13+
if(req.query.respuesta === quiz[0].respuesta){
14+
res.render('quizes/answer', {respuesta:'Correcto'});
915
}
10-
else {
11-
res.render('quizes/answer',{respuesta:'Incorrecto'});
16+
else {
17+
res.render('quizes/answer', {respuesta:'Incorrecto'});
1218
}
19+
})
1320
};

controllers/quiz_controller.js~

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1+
var models = require('../models/models.js');
2+
13
//GET /quizes/question
24
exports.question = function(req, res){
3-
res.render('quizes/question',{pregunta:'Capital de Italia'});
5+
models.Quiz.findAll().success(function(req, res){
6+
res.render('quizes/question',{pregunta: quiz[0].pregunta});
7+
})
48
};
9+
510
//GET /quizes/answer
611
exports.answer = function(req, res){
7-
if(req.query.respuesta === 'Roma'){
8-
res.render('quizes/answer',{respuesta:'Correcto'});
12+
models.Quiz.findAll().success(function(quiz){
13+
if(req.query.respuesta === quiz[0].respuesta){
14+
res.render('quizes/answer', {respuesta:'Correcto'});
915
}
10-
else {
11-
res.render('quizes/answer',{respuesta:'Incorrecto'});
16+
else {
17+
res.render('quizes/answer', {respuesta:'Incorrecto'});
1218
}
19+
})
1320
};

models/models.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
var path = require('path');
2+
3+
//Postgres DATABASE_URL = postgres://user:passwd@host:port/database
4+
// SQlite DATABASE_URL = sqlite://:@:/
5+
var url = process.env.DATABASE_URL.match(/(.*)\:\/\/(.*?)\:(.*)@(.*)\:(.*)\/(.*)/);
6+
var DB_name = (url[6] || null);
7+
var user = (url[2] || null);
8+
var pwd = (url[3] || null);
9+
var protocol = (url[1] || null);
10+
var dialect = (url[1] || null);
11+
var port = (url[5] || null);
12+
var host = (url[4] || null);
13+
var storage = process.env.DATABASE_STORAGE;
14+
15+
//cargar modelo ORM
16+
var Sequelize = require('sequelize');
17+
18+
//usar BBDD SQlite O Postgres
19+
20+
var sequelize = new Sequelize(DB_name, user, pwd,
21+
{dialect: protocol,
22+
protocol: protocol,
23+
port: port,
24+
host: host,
25+
storage: storage, //solo SQlite(.env)
26+
omitNull: true // solo postgres
27+
28+
}
29+
);
30+
31+
// importar la definición de la tabla Quiz en quiz.js
32+
//var quiz_path = path.join(__dirname, 'quiz')
33+
var Quiz = sequelize.import(path.join(__dirname, 'quiz'));
34+
35+
exports.Quiz = Quiz; // exportar definición de tabla Quiz.
36+
37+
//sequelize.sync() crea e inicializa tabla de preguntas de DB
38+
sequelize.sync().success(function(){
39+
//then(..) ejecuta el manejador una vez creada la tabla
40+
Quiz.count().success(function(count){
41+
if(count === 0){ // la tabla se inicializa solo si esta vacia
42+
Quiz.create({ pregunta: 'Capital de Italia',
43+
respuesta: 'Roma'
44+
})
45+
.success(function(){console.log('Base de datos inicializada')});
46+
};
47+
});
48+
});

models/models.js~

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
var path = require('path');
2+
3+
//Postgres DATABASE_URL = postgres://user:passwd@host:port/database
4+
// SQlite DATABASE_URL = sqlite://:@:/
5+
var url = process.env.DATABASE_URL.match(/(.*)\:\/\/(.*?)\:(.*)@(.*)\:(.*)\/(.*)/);
6+
var DB_name = (url[6]||null);
7+
var user = (url[2]||null);
8+
var pwd = (url[3]||null);
9+
var protocol = (url[1]||null);
10+
var dialect = (url[1]||null);
11+
var port = (url[5]||null);
12+
var host = (url[4]||null);
13+
var storage = process.env.DATABASE_STORAGE;
14+
15+
//cargar modelo ORM
16+
var Sequelize = require('sequelize');
17+
18+
//usar BBDD SQlite O Postgres
19+
20+
var sequelize = new Sequelize(DB_name, user, pwd,
21+
{dialect: protocol,
22+
protocol: protocol,
23+
port: port,
24+
host: host,
25+
storage: storage, //solo SQlite(.env)
26+
omitNull: true // solo postgres
27+
28+
}
29+
);
30+
31+
// importar la definición de la tabla Quiz en quiz.js
32+
//var quiz_path = path.join(__dirname, 'quiz')
33+
var Quiz = sequelize.import(path.join(__dirname, 'quiz'));
34+
35+
exports.Quiz = Quiz; // exportar definición de tabla Quiz.
36+
37+
//sequelize.sync() crea e inicializa tabla de preguntas de DB
38+
sequelize.sync().success(function(){
39+
//then(..) ejecuta el manejador una vez creada la tabla
40+
Quiz.count().success(function(count){
41+
if(count === 0){ // la tabla se inicializa solo si esta vacia
42+
Quiz.create({ pregunta: 'Capital de Italia',
43+
respuesta: 'Roma'
44+
})
45+
.success(function(){console.log('Base de datos inicializada')});
46+
};
47+
});
48+
});

models/quiz.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Definición del modelo de Quiz
2+
3+
module.exports = function(sequelize, DataTypes){
4+
return sequelize.define('Quiz' ,
5+
{ pregunta: DataTypes.STRING,
6+
respuesta: DataTypes.STRING,
7+
});
8+
9+
10+
}

models/quiz.js~

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Definición del modelo de Quiz
2+
3+
module.exports = function(sequelize, Datatypes){
4+
return sequelize.define('Quiz' ,
5+
{ pregunta: DataTypes.STRING,
6+
respuesta: DataTypes.STRING,
7+
});
8+
9+
10+
}

package.json

+28-28
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
{
2-
"name": "quiz",
3-
"version": "0.0.0",
4-
"private": true,
5-
"scripts": {
6-
"start": "node ./bin/www"
7-
},
8-
"enginees": {
9-
"node": "0.10.x",
10-
"npm": "1.4.x"
11-
},
12-
"devDependencies": {
13-
"sqlite3": "^3.0.4"
14-
},
15-
"dependencies": {
16-
"body-parser": "^1.8.4",
17-
"cookie-parser": "^1.3.3",
18-
"debug": "~2.0.0",
19-
"ejs": "^0.8.5",
20-
"express": "^4.9.0",
21-
"express-partials": "^0.3.0",
22-
"express-session": "^1.11.3",
23-
"method-override": "^2.3.1",
24-
"morgan": "^1.3.0",
25-
"pg": "^4.1.1",
26-
"pg-hstore": "^2.3.2",
27-
"sequelize": "^3.2.0",
28-
"serve-favicon": "^2.1.3"
29-
}
2+
"name": "quiz",
3+
"version": "0.0.0",
4+
"private": true,
5+
"scripts": {
6+
"start": "node ./bin/www"
7+
},
8+
"enginees": {
9+
"node": "0.10.x",
10+
"npm": "1.4.x"
11+
},
12+
"devDependencies": {
13+
"sqlite3": "^2.2.0"
14+
},
15+
"dependencies": {
16+
"body-parser": "^1.8.4",
17+
"cookie-parser": "^1.3.3",
18+
"debug": "~2.0.0",
19+
"ejs": "^0.8.5",
20+
"express": "^4.9.0",
21+
"express-partials": "^0.3.0",
22+
"express-session": "^1.11.3",
23+
"method-override": "^2.3.1",
24+
"morgan": "^1.3.0",
25+
"pg": "^4.1.1",
26+
"pg-hstore": "^2.3.2",
27+
"sequelize": "^1.7.0",
28+
"serve-favicon": "^2.1.3"
29+
}
3030
}

package.json~

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"name": "quiz",
3+
"version": "0.0.0",
4+
"private": true,
5+
"scripts": {
6+
"start": "node ./bin/www"
7+
},
8+
"enginees": {
9+
"node": "0.10.x",
10+
"npm": "1.4.x"
11+
},
12+
"devDependencies": {
13+
"sqlite3": "^2.2.0"
14+
},
15+
"dependencies": {
16+
"body-parser": "^1.8.4",
17+
"cookie-parser": "^1.3.3",
18+
"debug": "~2.0.0",
19+
"ejs": "^0.8.5",
20+
"express": "^4.9.0",
21+
"express-partials": "^0.3.0",
22+
"express-session": "^1.11.3",
23+
"method-override": "^2.3.1",
24+
"morgan": "^1.3.0",
25+
"pg": "^4.1.1",
26+
"pg-hstore": "^2.3.2",
27+
"sequelize": "^1.7.0",
28+
"serve-favicon": "^2.1.3"
29+
}
30+
}

0 commit comments

Comments
 (0)