package main

import (
	"context"
	"gopkg.in/mgo.v2/bson"
	"log"
	"time"

	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"
)

// ChatRecord 表示聊天记录的结构
/*type ChatRecord struct {
	//Id         bson.ObjectId `bson:"_id,omitempty"`
	SenderId   int64 `bson:"senderId"`
	ReceiverId int64 `bson:"receiverId"`
	//Timestamp  time.Time `bson:"timestamp"`
	StartTime int64  `bson:"startTime"` // 创建时间
	EndTime   int64  `bson:"endTime"`   // 单条消息结束时间
	Message   string `bson:"message"`
}
*/
type ChatRecord struct {
	ID       bson.ObjectId `bson:"_id,omitempty"`
	CreateAt int64         `json:"create_at"`
	Content  map[string]*Message
}

type Message struct {
	SenderId  int64  `bson:"senderId"`
	StartTime int64  `bson:"startTime"` // 创建时间
	EndTime   int64  `bson:"endTime"`   // 过期时间
	Content   string `bson:"content"`   // 内容

}

var MongoDBClient *mongo.Client

// 连接到 MongoDB
func setupMongoDB() *mongo.Client {
	client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://127.0.0.1:27017"))
	if err != nil {
		log.Fatal(err)
	}

	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
	err = client.Connect(ctx)
	if err != nil {
		log.Fatal(err)
	}

	return client
}

func saveChatRecord(record ChatRecord) error {
	client := setupMongoDB()
	defer client.Disconnect(context.Background())

	collection := client.Database("chat_db").Collection("chat_records")

	_, err := collection.InsertOne(context.Background(), record)
	if err != nil {
		return err
	}

	return nil
}