package dnsprovider

import (
	"context"
	"fmt"

	"github.com/libdns/libdns"
	tencentcloud "github.com/libdns/tencentcloud"
)

// TencentCloudProvider 腾讯云 DNSPod 服务商实现
type TencentCloudProvider struct {
	client *tencentcloud.Provider
	domain string
}

// NewTencentCloudProvider 创建腾讯云 DNS 服务商实例
func NewTencentCloudProvider(config ProviderConfig) (*TencentCloudProvider, error) {
	if config.SecretId == "" || config.SecretKey == "" {
		return nil, fmt.Errorf("SecretId 和 SecretKey 不能为空")
	}

	provider := &tencentcloud.Provider{
		SecretId:  config.SecretId,
		SecretKey: config.SecretKey,
	}

	return &TencentCloudProvider{
		client: provider,
		domain: config.Domain,
	}, nil
}

// AppendRecords 添加 DNS 记录
func (p *TencentCloudProvider) AppendRecords(ctx context.Context, zone string, recs []libdns.Record) ([]libdns.Record, error) {
	return p.client.AppendRecords(ctx, zone, recs)
}

// SetRecords 设置 DNS 记录（会覆盖现有记录）
func (p *TencentCloudProvider) SetRecords(ctx context.Context, zone string, recs []libdns.Record) ([]libdns.Record, error) {
	return p.client.SetRecords(ctx, zone, recs)
}

// GetRecords 获取 DNS 记录
func (p *TencentCloudProvider) GetRecords(ctx context.Context, zone string) ([]libdns.Record, error) {
	return p.client.GetRecords(ctx, zone)
}

// DeleteRecords 删除 DNS 记录
func (p *TencentCloudProvider) DeleteRecords(ctx context.Context, zone string, recs []libdns.Record) ([]libdns.Record, error) {
	return p.client.DeleteRecords(ctx, zone, recs)
}
