# SESSION MONKCHAT **NOME** KEVIN RIBEIRO DE ANDRADE **NUMERO** 27 **TURMA** INFOA ## CDG API ```javascript= //npx sequelize-auto -h remotemysql.com -d 5MnijCqZkf -u 5MnijCqZkf -x cXNvMIr556 -e mysql -o models -l esm import db from "./db.js"; import Express from "express"; import Cors from "cors"; const app = Express(); app.use(Cors()); app.use(Express.json()); app.get("/chat/:salaId", async (req, resp) => { try { let consulta = await db.tb_sala.findOne({ where: { nm_sala: req.params.salaId }, }); let mensagens = await db.tb_chat.findAll({ where: { id_sala: consulta.id_sala, }, include: ["tb_usuario", "tb_sala"], }); resp.send(mensagens); } catch (e) { resp.send(e.toString()); } }); app.post("/chat", async (req, resp) => { try { let chat = req.body; if (chat.mensagem == '') return resp.send({erro: "PRESTA ATENÇÃO NOS BGLH, MENSAGEM NÃO PODE SER VAZIA"}) let sala = await db.tb_sala.findOne({ where: { nm_sala: chat.sala.nome } }); let usu = await db.tb_usuario.findOne({ where: { nm_usuario: chat.usuario.nome }, }); if (sala == null) return resp.send({erro: "man, tá loucão? entrando aonde fdpkkkkkkkkk"}); let chatRecord = { id_sala: sala.id_sala, id_usuario: usu.id_usuario, ds_mensagem: chat.mensagem, dt_mensagem: new Date(), }; let r = await db.tb_chat.create(chatRecord); resp.send(r); } catch (e) { resp.send("Deu erro1"); console.log(e.toString()); } }); //----------------Sala app.get("/sala", async (req, resp) => { try { let criarSala = await db.tb_sala.findAll(); resp.send(criarSala); } catch (error) { resp.send("ERRADO !"); console.log(error.toString()); } }); //------------------Sala app.post("/sala", async (req, resp) => { try { let sala = req.body; let criarSala = { nm_sala: sala.nm_sala, bt_ativo: true, }; let resposta = await db.tb_sala.create(criarSala); resp.send(resposta); } catch (error) { resp.send("ERRADO2 !"); console.log(error.toString()); } }); //tb_usuario app.post('/usuario', async (req, resp) => { try { let q = req.body; if(q.nm_usuario == null) return resp.send({erro: "lelé doido"}); let usu = { nm_usuario: q.nm_usuario, }; let final = await db.tb_usuario.create(usu); resp.send(final); } catch (error) { resp.send("oxi tio tá erradp"); console.log(error.toString()); } }); app.get('/usuario', async (req, resp) => { try { let ob = await db.tb_usuario.findAll(); resp.send(ob); } catch (error) { resp.send("ó deu erro no get ai amigão"); console.log(error.toString()); } }); // put sala app.put('/sala', async (req, resp) => { try { let id = req.query.id; let nome = req.body.nome; let r = await db.tb_sala.update({ nm_sala: nome }, { where: {id_sala: id} }) } catch (error) { resp.send("Qual foi? faz direito o bglh ai"); console.log(error.toString()); } }); // delete sala app.delete('/sala', async (req, resp) => { try { let id = req.query.id; let r = await db.tb_sala.destroy({ where: {id_sala: id} }) } catch (e) { resp.send("o kevin errou aqui"); console.log(e.toString()); } }) // put usu app.put('/usuario', async (req, resp) => { try { let id = req.query.id; let nome = req.body.nome; let r = await db.tb_usuario.update({ nm_usuario: nome }, { where: { id_usuario: id } })} catch(e){ resp.send("bolololo"); console.log(e.toString()) } }); // delete usu app.delete('/usuario', async (req, resp) => { let id = req.query.id; let r = await db.tb_usuario.destroy({ where: {id_usuario: id} }) resp.sendStatus(200); }); app.listen(process.env.PORT, (x) => console.log(`server up at port ${process.env.PORT}`) ); ``` ## CDG REACT ```jsx= import { ContainerConteudo } from './conteudo.styled' import { ChatButton, ChatInput, ChatTextArea } from '../../components/outros/inputs' import Api from '../../services/api'; import { useState, useRef } from 'react'; import LoadingBar from 'react-top-loading-bar'; import { ToastContainer, toast } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; const api = new Api(); export default function Conteudo() { const [chat, setChat] = useState([]); const [sala, setSala] = useState(''); const [usu, setUsu] = useState(''); const [msg, setMsg] = useState('') const ref = useRef(null); const atualizar = async () => { ref.current.continuousStart(); const mensagens = await api.ListarMensagens(sala); setChat(mensagens); ref.current.complete(); } const enviarMensagem = async () => { const r = await api.inserirMensagem(sala, usu, msg); console.log(r); if (!r.erro) toast.dark('foi'); else toast.error(`vish ${r.erro}`); await atualizar(); } const criarSala = async () => { const q = await api.criarSala(sala) alert('Sala Criada'); console.log(q); } const criarUsuario = async () => { const qq = await api.criarUsuario(usu); if (!qq.erro) toast.dark('foi'); else toast.error(`vish ${qq.erro}`); console.log(qq); } return ( <ContainerConteudo> <ToastContainer /> <LoadingBar color='#f11946' ref={ref} /> <div className="container-form"> <div className="box-sala"> <div> <div className="label">Sala</div> <ChatInput value={sala} onChange={e => setSala(e.target.value)}/> </div> <div> <div className="label">Nick</div> <ChatInput value={usu} onChange={e => setUsu(e.target.value)}/> </div> <div> <ChatButton onClick={criarSala}> Criar </ChatButton> <ChatButton onClick={criarUsuario}> Entrar </ChatButton> </div> </div> <div className="box-mensagem"> <div className="label">Mensagem</div> <ChatTextArea value={msg} onChange={e => setMsg(e.target.value)} /> <ChatButton onClick={enviarMensagem} className="btn-enviar"> Enviar </ChatButton> </div> </div> <div className="container-chat"> <img onClick={atualizar} className="chat-atualizar" src="/assets/images/atualizar.png" alt="" /> <div className="chat"> {chat.map(x => <div> <div className="chat-message"> <div>({new Date(x.dt_mensagem.replace('z', '')).toLocaleTimeString()}) </div> <div><b> {x.tb_usuario.nm_usuario} </b> <b> fala para todos</b></div> <div> {x.ds_mensagem} </div> </div> </div> )} </div> </div> </ContainerConteudo> ) } ``` ## CDG SERVICE ```jsx= import axios from "axios"; const api = axios.create({ baseURL: 'http://localhost:3030' }) export default class Api { async ListarMensagens(idSala){ let r = await api.get(`/chat/${idSala}`); return r.data; } async inserirMensagem(nomeSala, nomeUsuario, mensagem) { let chatJSON = { sala: { nome: nomeSala }, usuario: { nome: nomeUsuario }, mensagem: mensagem, }; let r = await api.post("/chat", chatJSON); return r.data; } //----------------------------------------------------------------------- async criarSala(nmSala) { let criar = { nm_sala: nmSala, bt_ativo: true }; let r = await api.post("/sala", criar); return r.data; } async criarUsuario(nmUsuario){ let qq = { nm_usuario: nmUsuario, }; let final = await api.post('/usuario', qq) return final.data; } } ```