package seeders

import (
	"fmt"
	"log"
	"os"

	"payment/internal/models"

	"gorm.io/gorm"
)

// SeedIfRequired checks environment variable and seeds database if needed
func SeedIfRequired(db *gorm.DB) error {
	if os.Getenv("SEED_DB") == "true" {
		log.Println("Seeding database...")
		if err := SeedDatabase(db); err != nil {
			return fmt.Errorf("failed to seed database: %w", err)
		}
	}
	return nil
}

// DropAllTables drops all tables (use with caution!)
func DropAllTables(db *gorm.DB) error {
	if err := db.Migrator().DropTable(
		&models.MpesaAccessToken{},
		&models.Transaction{},
		&models.User{},
		&models.InternetPackage{},
		&models.PaymentCredentials{},
		&models.Client{},
	); err != nil {
		return fmt.Errorf("failed to drop tables: %w", err)
	}
	fmt.Println("✓ All tables dropped successfully")
	return nil
}

// ResetAndSeed drops all tables and runs seeders (use with caution!)
func ResetAndSeed(db *gorm.DB) error {
	if err := DropAllTables(db); err != nil {
		return err
	}
	return SeedDatabase(db)
}
