package vercel

import (
	"context"

	"github.com/pingcap/errors"
	"github.com/tidbcloud/pkgv2/tracing"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"gorm.io/gorm"
)

type DataAppEnvironmentIdentifierDAO interface {
	AddEnvironmentIdentifier(ctx context.Context, identifier DataAppEnvironmentIdentifier) error
}

type dataAppEnvironmentIdentifierDAOImpl struct {
	db *gorm.DB
}

func NewDataAppEnvironmentIdentifierDAO(db *gorm.DB) DataAppEnvironmentIdentifierDAO {
	return &dataAppEnvironmentIdentifierDAOImpl{
		db: db,
	}
}

func (d *dataAppEnvironmentIdentifierDAOImpl) AddEnvironmentIdentifier(ctx context.Context, identifier DataAppEnvironmentIdentifier) (err error) {
	ctx, span := Tracer.Start(ctx, "dataAppEnvironmentIdentifierDAOImpl.AddEnvironmentIdentifier")
	defer func() {
		tracing.EndSpan(span, err)
	}()

	err = d.db.Create(&identifier).Error
	if err != nil {
		return errors.Trace(err)
	}

	tilog.Info(ctx, "Succeed to add identifier with connection")
	return nil
}
