# ENTREGA MONKCHAT ## API (INDEX.JS) ```javascript= import db from './db.js'; import express from 'express' import cors from 'cors' const app = express(); app.use(cors()); app.use(express.json()); //inicio das apis, API DE CHAT 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; 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 } }) 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 erro'); console.log(e.toString()); } }) //API DE SALA app.post('/sala', async (req, resp) => { try { let sala = req.body; let salaRecord = { nm_sala: sala.sala.nome, bt_ativo: sala.ativo.ativo } let r = await db.tb_sala.create(salaRecord); resp.send(r); } catch (e) { resp.send('Deu erro sala'); console.log(e.toString()); } }) app.get('/sala', async (req, resp) => { try { let z = await db.tb_sala.findAll(); resp.send(z); } catch (e) { resp.send(e.toString()) } }) //API DE USUARIO app.post('/usuario', async (req, resp) => { try { let usu = req.body; let usuRecord = { nm_usuario: usu.nm_usuario } let r = await db.tb_usuario.create(usuRecord); resp.send(r); } catch (e) { resp.send('Deu erro usu'); console.log(e.toString()); } }) app.get('/usuario', async (req, resp) => { try { let z = await db.tb_usuario.findAll(); resp.send(z); } catch (e) { resp.send(e.toString()) } }) //PUT AI app.put ("/usuario", async (req, resp) => { try { let id = req.query.id; let nome = req.body.nome; let q = await db.tb_usuario.update ({ nm_usuario: nome}, {where: {id_usuario: id }}) resp.sendStatus (200);} catch (e){ resp.send("deu erro no put") console.log(e.toString()) } }) app.put('/sala', async (req, resp) => { let id = req.query.id; let nome = req.body.nome; let r = await db.tb_sala.update({ nm_sala: nome }, { where: { id_sala: id} }) resp.sendStatus(200); }) // DELETE AI app.delete("/usuario", async ( req, resp) => { try { let id = req.query.id let x = await db.tb_usuario.destroy({ where: {id_usuario: id}}) resp.sendStatus(200);} catch (e) { resp.send("deu erro no delete") console.log(e.toString()); } }) //BGL Q FALA Q O SERVER SUBIU app.listen(process.env.PORT, x => console.log(`Server subiu sabe aonde? Lá na ${process.env.PORT}`)) ``` ## SERVICES (api.js & conteudo.js) ```javascript= 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 inserirSala(nomeSala, salaAtiva){ let salaJSON = { sala: {nome: nomeSala}, ativo: {ativo: salaAtiva} } let r = await api.post('./sala', salaJSON) return r.data; } async inserirUsu (nomeUsu) { let usuJSON = { nm_usuario: nomeUsu, }; let r = await api.post('/usuario', usuJSON) return r.data; }} //conteudo.js import { ContainerConteudo } from './conteudo.styled' import { ChatButton, ChatInput, ChatTextArea } from '../../components/outros/inputs' import Api from '../../services/api'; import { useState } from 'react'; 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 atualizar = async () => { const mensagens = await api.listarMensagens(sala); setChat(mensagens) } const enviarMensagem = async () => { const r = await api.inserirMensagem(sala, usu, msg); console.log(r); alert('Mensagem enviada com sucesso!'); await atualizar(); } const criarSala = async () => { const r = await api.inserirSala(sala); console.log(r); alert('Sala criada com sucesso!'); } const criarUsu = async () => { const r = await api.inserirUsu(usu); console.log(r); alert('Usuário criado com sucesso!'); } return ( <ContainerConteudo> <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 = {criarUsu}> 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> fala para <b>Todos</b>:</div> <div> {x.ds_mensagem} </div> </div> </div> )} </div> </div> </ContainerConteudo> ) } ``` ## PRINT MONKCHAT FUNCIONANDO ![](https://i.imgur.com/eeZQnXs.png)
{"metaMigratedAt":"2023-06-16T08:56:12.574Z","metaMigratedFrom":"Content","title":"ENTREGA MONKCHAT","breaks":true,"contributors":"[{\"id\":\"4c424d8f-f274-42df-9402-f6014d7ba673\",\"add\":7382,\"del\":0}]"}
Expand menu