Commit inicial

This commit is contained in:
Luiz F Picolo 2023-05-25 21:41:50 -04:00
commit 2c5423a18d
7 changed files with 2249 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

21
db.js Normal file
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

18
package.json Normal file
View 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
View 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');