package mysql

import (
	"context"

	"gorm.io/gorm"

	"github.com/pingcap-inc/data-ingestion-tools/model"
)

type approval struct {
	db *gorm.DB
}

func newApproval(ds *datastore) *approval {
	return &approval{db: ds.db}
}

func (a *approval) List(_ context.Context) (records []model.Approval, err error) {
	err = a.db.Find(&records).Error
	return
}

func (a *approval) GetByApprCode(apprCode string) (record model.Approval, err error) {
	err = a.db.Where("approval_instance = ?", apprCode).First(&record).Error
	return
}

func (a *approval) GetByCreatedTime(_ context.Context) (record *model.Approval, err error) {
	err = a.db.Order("created_at desc").First(&record).Error
	return
}

func (a *approval) Save(record *model.Approval) error {
	return a.db.Create(&record).Error
}

func (a *approval) Update(apprCode string) error {
	return a.db.Model(&model.Approval{}).Where("approval_instance = ?", apprCode).Update("status", 1).Error
}
