Commit inicial
This commit is contained in:
commit
2c5423a18d
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
node_modules
|
21
db.js
Normal file
21
db.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
const { Pool } = require('pg');
|
||||||
|
|
||||||
|
let connect = async function () {
|
||||||
|
try {
|
||||||
|
if (global.connection) {
|
||||||
|
return Promise.resolve(global.connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
const pool = new Pool({
|
||||||
|
connectionString: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
global.connection = pool;
|
||||||
|
return Promise.resolve(pool);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro ao estabelecer a conexão:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = { connect };
|
57
index.js
Normal file
57
index.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const path = require('path');
|
||||||
|
const Pessoa = require("./models/pessoa");
|
||||||
|
|
||||||
|
const app = express();
|
||||||
|
|
||||||
|
// view engine setup
|
||||||
|
app.set('views', path.join(__dirname, 'views'));
|
||||||
|
app.set('view engine', 'ejs');
|
||||||
|
|
||||||
|
app.use(express.json());
|
||||||
|
app.use(express.urlencoded({ extended: true}));
|
||||||
|
app.use(express.static(path.join(__dirname, 'public')));
|
||||||
|
|
||||||
|
app.get('/pessoas', async function(req, res){
|
||||||
|
try {
|
||||||
|
var pessoas = await Pessoa.select();
|
||||||
|
res.json(pessoas.rows);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro ao buscar pessoas:', error);
|
||||||
|
res.status(500).json({ error: 'Ocorreu um erro ao buscar pessoas' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.post('/pessoas', async function(req, res){
|
||||||
|
try {
|
||||||
|
var pessoa = await Pessoa.insert(req.body);
|
||||||
|
res.json(pessoa.rows);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro ao inserir pessoa:', error);
|
||||||
|
res.status(500).json({ error: 'Ocorreu um erro ao inserir pessoa' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.put('/pessoas', async function(req, res){
|
||||||
|
try {
|
||||||
|
var pessoa = await Pessoa.update(req.body.id, req.body);
|
||||||
|
res.json(pessoa.rows);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro ao atualizar pessoa:', error);
|
||||||
|
res.status(500).json({ error: 'Ocorreu um erro ao atualizar pessoa' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.delete('/pessoas', async function(req, res){
|
||||||
|
try {
|
||||||
|
var pessoa = await Pessoa.delete(req.body.id);
|
||||||
|
res.json(pessoa.rows);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro ao atualizar pessoa:', error);
|
||||||
|
res.status(500).json({ error: 'Ocorreu um erro ao atualizar pessoa' });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
app.listen(3000, function() {
|
||||||
|
console.log('App de Exemplo escutando na porta 3000!')
|
||||||
|
});
|
51
models/pessoa.js
Normal file
51
models/pessoa.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
const db = require("../db");
|
||||||
|
|
||||||
|
class Pessoa {
|
||||||
|
static async select() {
|
||||||
|
try {
|
||||||
|
const connect = await db.connect();
|
||||||
|
return await connect.query('SELECT * FROM pessoas');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro em select:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async insert(data) {
|
||||||
|
try {
|
||||||
|
console.log("teste")
|
||||||
|
const connect = await db.connect();
|
||||||
|
const sql = 'INSERT INTO pessoas(nome, idade, uf) VALUES ($1, $2, $3) RETURNING id, nome, idade, uf;';
|
||||||
|
const values = [data.nome, data.idade, data.uf];
|
||||||
|
return await connect.query(sql, values);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro em insert:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async update(id, data) {
|
||||||
|
try {
|
||||||
|
const connect = await db.connect();
|
||||||
|
const sql = 'UPDATE pessoas SET nome=$1, idade=$2, uf=$3 WHERE id=$4 RETURNING id, nome, idade, uf;';
|
||||||
|
const values = [data.nome, data.idade, data.uf, id];
|
||||||
|
return await connect.query(sql, values);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro em update:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static async delete(id) {
|
||||||
|
try {
|
||||||
|
const connect = await db.connect();
|
||||||
|
const sql = 'DELETE FROM pessoas WHERE id=$1 RETURNING id, nome, idade, uf;;';
|
||||||
|
return await connect.query(sql, [id]);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erro em delete:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Pessoa;
|
2082
package-lock.json
generated
Normal file
2082
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
18
package.json
Normal file
18
package.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "projeto-interdisciplinar",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "nodemon index.js"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"ejs": "^3.1.9",
|
||||||
|
"express": "^4.18.2",
|
||||||
|
"nodemon": "^2.0.22",
|
||||||
|
"pg": "^8.11.0"
|
||||||
|
}
|
||||||
|
}
|
19
sql.sql
Normal file
19
sql.sql
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE pessoas (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
nome VARCHAR(255),
|
||||||
|
idade INTEGER,
|
||||||
|
uf CHAR(2)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO pessoas (nome, idade, uf)
|
||||||
|
VALUES
|
||||||
|
('John Doe', 25, 'NY'),
|
||||||
|
('Jane Smith', 30, 'CA'),
|
||||||
|
('Michael Johnson', 35, 'TX'),
|
||||||
|
('Emily Davis', 28, 'FL'),
|
||||||
|
('Robert Brown', 32, 'OH'),
|
||||||
|
('Sophia Wilson', 27, 'IL'),
|
||||||
|
('William Anderson', 40, 'PA'),
|
||||||
|
('Olivia Thompson', 22, 'GA'),
|
||||||
|
('James Martinez', 33, 'MI'),
|
||||||
|
('Emma Taylor', 29, 'NC');
|
Loading…
Reference in New Issue
Block a user