package model

import (
	"time"

	"gorm.io/gorm"

	"github.com/pingcap-inc/clinic/pkg/db"
)

func AddOrg(orgID uint, userName, password string) error {
	c := db.Kibana{
		Model: gorm.Model{
			CreatedAt: time.Now(),
			UpdatedAt: time.Now(),
		},
		OrgID:    orgID,
		User:     userName,
		Password: password,
	}

	return db.Transaction(func(tx *gorm.DB) error {
		return tx.Create(&c).Error
	})
}

func GetByOrgID(orgID uint) (*db.Kibana, error) {
	var k db.Kibana
	err := db.Transaction(func(tx *gorm.DB) error {
		return tx.Where("org_id = ?", orgID).Find(&k).Error
	})

	return &k, err
}

func DeleteKibana(orgID uint) error {
	return db.Transaction(func(tx *gorm.DB) error {
		_, err := db.NewKibanaQuerySet(tx).OrgIDEq(orgID).DeleteNumUnscoped()
		return err
	})
}

func ListAlLKibanaInfo() ([]db.Kibana, error) {
	var list []db.Kibana

	err := db.Transaction(func(tx *gorm.DB) error {
		return tx.Find(&list).Error
	})

	return list, err
}
