package models

import (
	"log"

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

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

func (TipoDb) TableName() string {
	return "tipo_db"
}

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

	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 CreateTipoDb(tipoDb TipoDb) error {
	if err := app.Http.Database.DB.Create(&tipoDb).Error; err != nil {
		return err
	}
	return nil
}

func UpdateTipoDb(tipoDb TipoDb) error {
	if err := app.Http.Database.DB.Model(&tipoDb).Updates(tipoDb).Error; err != nil {
		return err
	}
	return nil
}

func DeleteTipoDb(tipoDb TipoDb) error {
	if err := app.Http.Database.DB.Delete(&tipoDb).Error; err != nil {
		return err
	}
	return nil
}
