package models

import (
	"log"

	"github.com/sujit-baniya/fiber-boilerplate/app"
	"gorm.io/gorm"
)

type TipoServidor struct {
	gorm.Model
	Nombre string `json:"nombre" gorm:"column:nombre"`
}

func (TipoServidor) TableName() string {
	return "tipo_servidor"
}

func GetAllTipoServidor(search string) ([]TipoServidor, int64, error) {
	var items []TipoServidor
	var total int64
	db := app.Http.Database.DB.Model(&TipoServidor{})

	if search != "" {
		db = db.Where("nombre LIKE ?", "%"+search+"%")
	}

	if err := db.Count(&total).Error; err != nil {
		log.Printf("Error counting tipos servicio: %v", err)
		return nil, 0, err
	}

	if err := db.Order("created_at DESC").Find(&items).Error; err != nil {
		log.Printf("Error retrieving tipos servicio: %v", err)
		return nil, 0, err
	}

	return items, total, nil
}

func CreateTipoServidor(tipoServidor TipoServidor) error {
	if err := app.Http.Database.DB.Create(&tipoServidor).Error; err != nil {
		return err
	}
	return nil
}

func UpdateTipoServidor(tipoServidor TipoServidor) error {
	if err := app.Http.Database.DB.Model(&tipoServidor).Updates(tipoServidor).Error; err != nil {
		return err
	}
	return nil
}

func DeleteTipoServidor(tipoServidor TipoServidor) error {
	if err := app.Http.Database.DB.Delete(&tipoServidor).Error; err != nil {
		return err
	}
	return nil
}
