-- PROJETO REVESTE

-- 1. USUARIOS
CREATE TABLE usuarios (
    id_usuario INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    senha_hash VARCHAR(255) NOT NULL,
    telefone VARCHAR(20),
    cidade VARCHAR(100),
    data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('ativo', 'inativo') DEFAULT 'ativo'
);

-- 2. ROUPAS
CREATE TABLE roupas (
    id_roupa INT AUTO_INCREMENT PRIMARY KEY,
    id_usuario INT NOT NULL,
    titulo VARCHAR(100) NOT NULL,
    descricao TEXT,
    categoria VARCHAR(50),
    tamanho VARCHAR(10),
    estado_uso ENUM('novo', 'seminovo', 'usado'),
    status ENUM('disponivel', 'reservada', 'trocada')
    DEFAULT 'disponivel',
    FOREIGN KEY (id_usuario)
    REFERENCES usuarios(id_usuario)
);

-- 3. FOTOS
CREATE TABLE fotos (
    id_foto INT AUTO_INCREMENT PRIMARY KEY,
    id_roupa INT NOT NULL,
    url_foto VARCHAR(255) NOT NULL,
    FOREIGN KEY (id_roupa)
    REFERENCES roupas(id_roupa)
);

-- 4. CURTIDAS
CREATE TABLE curtidas (
    id_curtida INT AUTO_INCREMENT PRIMARY KEY,
    id_usuario INT NOT NULL,
    id_roupa INT NOT NULL,
    data_curtida TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_usuario)
    REFERENCES usuarios(id_usuario),
    FOREIGN KEY (id_roupa)
    REFERENCES roupas(id_roupa),
    UNIQUE (id_usuario, id_roupa)
);

-- 5. MATCHES
CREATE TABLE matches (
    id_match INT AUTO_INCREMENT PRIMARY KEY,
    usuario1 INT NOT NULL,
    usuario2 INT NOT NULL,
    data_match TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('ativo', 'cancelado') DEFAULT 'ativo',
    FOREIGN KEY (usuario1)
    REFERENCES usuarios(id_usuario),
    FOREIGN KEY (usuario2)
    REFERENCES usuarios(id_usuario)
);

-- 6. TROCAS
CREATE TABLE trocas (
    id_troca INT AUTO_INCREMENT PRIMARY KEY,
    id_match INT NOT NULL,
    id_roupa1 INT NOT NULL,
    id_roupa2 INT NOT NULL,
    data_troca TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('pendente', 'aceita', 'concluida', 'cancelada')
    DEFAULT 'pendente',
    FOREIGN KEY (id_match)
    REFERENCES matches(id_match),
    FOREIGN KEY (id_roupa1)
    REFERENCES roupas(id_roupa),
    FOREIGN KEY (id_roupa2)
    REFERENCES roupas(id_roupa)
);
SHOW TABLES;
-- CADASTRAR USUARIOS

INSERT INTO usuarios
(nome, email, senha_hash, telefone, cidade)
VALUES
('Ana Silva', 'ana@email.com', 'hash_ana',
 '11999999999', 'São Paulo'),

('Pedro Santos', 'pedro@email.com', 'hash_pedro',
 '11988888888', 'São Paulo'),

('Maria Oliveira', 'maria@email.com', 'hash_maria',
 '11977777777', 'Guarulhos');

-- VISUALIZAR USUARIOS

SELECT * FROM usuarios;
-- CADASTRAR ROUPAS

INSERT INTO roupas
(id_usuario, titulo, descricao, categoria, tamanho, estado_uso)
VALUES
(1, 'Jaqueta Jeans', 'Jaqueta azul em ótimo estado', 'Jaqueta', 'M', 'seminovo'),

(2, 'Camiseta Preta', 'Camiseta básica preta', 'Camiseta', 'G', 'novo'),

(3, 'Calça Jeans', 'Calça jeans feminina', 'Calça', '38', 'usado');

-- VISUALIZAR ROUPAS

SELECT * FROM roupas;
-- CADASTRAR FOTOS

INSERT INTO fotos
(id_roupa, url_foto)
VALUES
(1, 'imagens/jaqueta.jpg'),
(2, 'imagens/camiseta.jpg'),
(3, 'imagens/calca.jpg');

-- VISUALIZAR FOTOS

SELECT * FROM fotos;
-- CADASTRAR CURTIDAS

INSERT INTO curtidas
(id_usuario, id_roupa)
VALUES
(2, 1),
(1, 2),
(3, 1);

-- VISUALIZAR CURTIDAS

SELECT * FROM curtidas;
-- CADASTRAR MATCHES

INSERT INTO matches
(usuario1, usuario2)
VALUES
(1, 2),
(1, 3);

-- VISUALIZAR MATCHES

SELECT * FROM matches;
-- CADASTRAR TROCAS

INSERT INTO trocas
(id_match, id_roupa1, id_roupa2)
VALUES
(1, 1, 2),
(2, 1, 3);

-- VISUALIZAR TROCAS

SELECT * FROM trocas;
-- CONSULTA 1: ROUPAS DISPONIVEIS

SELECT * FROM roupas
WHERE status = 'disponivel';

-- CONSULTA 2: ROUPAS DE TAMANHO M

SELECT * FROM roupas
WHERE tamanho = 'M';

-- CONSULTA 3: USUARIOS CADASTRADOS

SELECT nome, email, cidade
FROM usuarios;

-- CONSULTA 4: CURTIDAS

SELECT * FROM curtidas;

-- CONSULTA 5: TROCAS

SELECT * FROM trocas;
-- CONSULTA RELACIONANDO USUARIOS E ROUPAS

SELECT
    usuarios.nome AS nome_usuario,
    roupas.titulo AS nome_roupa,
    roupas.categoria,
    roupas.tamanho,
    roupas.estado_uso
FROM usuarios
INNER JOIN roupas
ON usuarios.id_usuario = roupas.id_usuario;

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: