package database

import "github.com/gofiber/fiber/v2"

// Simple middleware that provides a shared database pool as a local key "db"
func DbMiddleware(db *Database) func(c *fiber.Ctx) error {
	return func(c *fiber.Ctx) error {
		c.Locals("db", db)
		return c.Next()
	}
}

// Helper function to get the database from the context, without fiddling with casts
func GetDb(c *fiber.Ctx) Database {
	// Dereference a pointer to a local, casted to a pointer to a Database
	return *c.Locals("db").(*Database)
}