package mysql

import (
	"context"

	v1 "github.com/pingcap-inc/pingcat/model/v1"
	"gorm.io/gorm"
)

type kbAnswer struct {
	db *gorm.DB
}

func newKBAnswer(ds *datastore) *kbAnswer {
	return &kbAnswer{db: ds.db}
}

func (kb *kbAnswer) GetByID(ctx context.Context, id string) (*v1.KBAnswer, error) {
	var k v1.KBAnswer
	err := kb.db.
		Where("id = ?", id).
		First(&k).
		Error

	return &k, dbNotFoundErrorWrap(err)
}

func (kb *kbAnswer) GetByAnsID(ctx context.Context, id string) (*v1.KBAnswer, error) {
	var k v1.KBAnswer
	err := kb.db.
		Where("answerMsgOpenID = ?", id).
		First(&k).
		Error

	return &k, dbNotFoundErrorWrap(err)
}

func (kb *kbAnswer) Create(ctx context.Context, k *v1.KBAnswer) (*v1.KBAnswer, error) {
	err := kb.db.
		Create(k).
		Error
	if err != nil {
		return nil, err
	}

	return k, nil
}

func (kb *kbAnswer) Update(ctx context.Context, k *v1.KBAnswer) (*v1.KBAnswer, error) {
	err := kb.db.
		Save(k).
		Error
	if err != nil {
		return nil, err
	}

	return k, nil
}
