package model

import (
	"errors"

	"gorm.io/gorm"
	"gorm.io/gorm/clause"

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

// FindOrgQuotaByOrgID select org limit record by given org_id from mysql, if record not found, return (nil, false, nil)
func FindOrgQuotaByOrgID(orgID uint) (*db.OrgQuota, bool, error) {
	orgLimit := new(db.OrgQuota)
	err := db.GetDB().Where("org_id=?", orgID).First(orgLimit).Error
	if err != nil {
		if errors.Is(err, gorm.ErrRecordNotFound) {
			return nil, false, nil
		}
		return nil, false, nil
	}
	return orgLimit, true, nil
}

// UpsertOrgQuota insert/update org limit record
func UpsertOrgQuota(orgLimit *db.OrgQuota) error {
	return db.GetDB().Clauses(clause.OnConflict{
		Columns:   []clause.Column{{Name: "org_id"}},
		UpdateAll: true,
	}).Create(orgLimit).Error
}
