Commit inicial

This commit is contained in:
2023-05-25 21:41:50 -04:00
commit 2c5423a18d
7 changed files with 2249 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
node_modules
+21
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
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
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
View File
File diff suppressed because it is too large Load Diff
+18
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
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');