Antes da aula 15 minutos para o teste de autoestudo!
| Autoestudo | Link |
|---|---|
| Consultas em SQL - Parte II | Click |
| Trabalhando com várias tabelas em bancos de dados | Click |
| Entendendo chave primária e estrangeira nos bancos de dados | Click |
| SQL for beginners: how to get started with JOINS | Click |
| Tutorial SQL | Click |
https://www.canva.com/design/DAGkfHG5WKA/_5wjtV4ktzJyDAmY416EKQ/view
Primeiro, vamos criar a estrutura de pastas do nosso projeto:
npm init -y
Agora, vamos instalar as dependências necessárias:
npm i pg dotenv
Primeiro, vamos configurar o arquivo .env na raiz do projeto:
DB_HOST=aws-0-us-east-2.pooler.supabase.com
DB_USER=postgres.bneyjtztnmlmanmigjqe
DB_PASSWORD=BthvPWst9Ub8IbtI
DB_NAME=postgres
DB_PORT=6543
Agora, vamos criar o arquivo de configuração da conexão com o banco de dados em config/database.js:
const { Pool } = require('pg');
require('dotenv').config();
const pool = new Pool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
port: process.env.DB_PORT,
});
// Função para testar a conexão
async function testConnection() {
const client = await pool.connect();
try {
await client.query('SELECT NOW()');
console.log('Conexão com o banco de dados PostgreSQL estabelecida com sucesso!');
return true;
} catch (error) {
console.error('Erro ao conectar ao banco de dados PostgreSQL:', error);
return false;
} finally {
client.release();
}
}
// Função para executar uma consulta SQL
async function query(text, params) {
const client = await pool.connect();
try {
const result = await client.query(text, params);
return result;
} catch (error) {
console.error('Erro ao executar consulta:', error);
throw error;
} finally {
client.release();
}
}
module.exports = {
pool,
testConnection,
query
};
*-- Criando tabela de categorias*
CREATE TABLE IF NOT EXISTS categorias (
id SERIAL PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
descricao TEXT
);
*-- Criando tabela de fornecedores*
CREATE TABLE IF NOT EXISTS fornecedores (
id SERIAL PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
contato VARCHAR(100),
telefone VARCHAR(20)
);
*-- Criando tabela de produtos*
CREATE TABLE IF NOT EXISTS produtos (
id SERIAL PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
preco DECIMAL(10, 2) NOT NULL,
estoque INTEGER DEFAULT 0,
categoria_id INTEGER REFERENCES categorias(id),
fornecedor_id INTEGER REFERENCES fornecedores(id)
);
Agora, vamos criar o arquivo models/produto.js: