宇恒一号官网
This commit is contained in:
67
server/handlers/conversation.go
Normal file
67
server/handlers/conversation.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/v2/bson"
|
||||
"go.mongodb.org/mongo-driver/v2/mongo/options"
|
||||
|
||||
"yh_web/server/config"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func GetConversations(c *gin.Context) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
defer cancel()
|
||||
|
||||
coll := config.GetDB(config.DBName).Collection("conversations")
|
||||
|
||||
page := 1
|
||||
pageSize := 20
|
||||
if p := c.Query("page"); p != "" {
|
||||
if v, err := parseInt(p); err == nil && v > 0 {
|
||||
page = v
|
||||
}
|
||||
}
|
||||
if ps := c.Query("page_size"); ps != "" {
|
||||
if v, err := parseInt(ps); err == nil && v > 0 && v <= 100 {
|
||||
pageSize = v
|
||||
}
|
||||
}
|
||||
|
||||
skip := (page - 1) * pageSize
|
||||
opts := options.Find().SetSkip(int64(skip)).SetLimit(int64(pageSize)).SetSort(bson.D{{Key: "_id", Value: -1}})
|
||||
|
||||
filter := bson.M{}
|
||||
if userID := c.Query("user_id"); userID != "" {
|
||||
filter["user_id"] = userID
|
||||
}
|
||||
if workspaceID := c.Query("workspace_id"); workspaceID != "" {
|
||||
filter["workspace_id"] = workspaceID
|
||||
}
|
||||
|
||||
cursor, err := coll.Find(ctx, filter, opts)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
defer cursor.Close(ctx)
|
||||
|
||||
var list []map[string]interface{}
|
||||
if err = cursor.All(ctx, &list); err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
total, _ := coll.CountDocuments(ctx, filter)
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"list": list,
|
||||
"total": total,
|
||||
"page": page,
|
||||
"page_size": pageSize,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user