package fiko_mongo

import (
	"context"
	"log"
	"time"

	"github.com/gofiber/fiber/v2"
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"
)

func Init(app *fiber.App) {
	// MongoDB bağlantı URL'si
	databaseURL := "mongodb://127.0.0.1:8001/"
	ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
	client, err := mongo.Connect(ctx, options.Client().ApplyURI(databaseURL))
	if err != nil {
		log.Fatal(err)
	}

	// MongoDB koleksiyonundan veri almak
	collection := client.Database("fikoyt").Collection("hareketler")

	// Veritabanından tüm dökümanları almak için Find
	cursor, err := collection.Find(ctx, bson.D{})
	if err != nil {
		log.Fatal(err)
	}
	defer cursor.Close(ctx)

	// Verileri tutacak bir dilim
	var results []bson.M

	// Cursor üzerinden her bir dökümanı almak
	for cursor.Next(ctx) {
		var result bson.M
		if err := cursor.Decode(&result); err != nil {
			log.Fatal(err)
		}
		results = append(results, result)
	}

	// Eğer cursor'dan çıkarken hata varsa
	if err := cursor.Err(); err != nil {
		log.Fatal(err)
	}

	// Fiber route: /fikomongo
	app.Get("/fikomongo", func(c *fiber.Ctx) error {
		// JSON verisini döndür
		return c.Status(200).JSON(results)
	})
}
