CoolFace
Apppublic

Quintanda/Messages-Database

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.py58 linesDownload Raw Back to root
1from fastapi import FastAPI, HTTPException2from pydantic import BaseModel3from pymongo import MongoClient4from datetime import datetime5from bson import ObjectId6 7# Conexão com o MongoDB Atlas8MONGO_URI = "mongodb+srv://marcelo:marcelo1234@mycluster.4kvwvjs.mongodb.net/?retryWrites=true&w=majority&appName=myCluster"  # Substitua com sua URI do MongoDB Atlas9client = MongoClient(MONGO_URI)10db = client["chat_database"]  # Nome do banco de dados11messages_collection = db["messages"]  # Nome da coleção12 13# Inicialização da API14app = FastAPI()15 16# Modelo para a entrada de mensagens17class Message(BaseModel):18    chat_id: str19    user: str20    message: str21 22@app.post("/messages")23def store_message(message: Message):24    """25    Armazena uma mensagem no MongoDB para um chat específico.26    """27    message_data = {28        "chat_id": message.chat_id,29        "user": message.user,30        "message": message.message,31        "timestamp": datetime.utcnow()32    }33    result = messages_collection.insert_one(message_data)34    if result.inserted_id:35        return {"message": "Mensagem armazenada com sucesso!", "id": str(result.inserted_id)}36    else:37        raise HTTPException(status_code=500, detail="Erro ao armazenar a mensagem")38 39@app.get("/messages/{chat_id}")40def get_messages(chat_id: str):41    """42    Retorna o histórico de mensagens de um chat específico.43    """44    messages = []45    for msg in messages_collection.find({"chat_id": chat_id}).sort("timestamp", 1):46        messages.append({47            "id": str(msg["_id"]),48            "user": msg["user"],49            "message": msg["message"],50            "timestamp": msg["timestamp"]51        })52    return {"chat_id": chat_id, "messages": messages}53 54# Endpoint para teste de conexão55@app.get("/")56def home():57    return {"message": "API de histórico de mensagens está funcionando!"}58