package mysql

import (
	"context"

	"gorm.io/gorm"

	v1 "github.com/pingcap-inc/pchub/model/v1"
)

type cloudProvider struct {
	db *gorm.DB
}

func newCloudProvider(ds *datastore) *cloudProvider {
	return &cloudProvider{db: ds.db}
}

func (dpt *cloudProvider) Gets(_ context.Context) ([]*v1.CloudProvider, error) {
	var res []*v1.CloudProvider
	d := dpt.db.Find(&res)

	return res, dbNotFoundErrorWrap(d.Error)
}

func (dpt *cloudProvider) GetByCode(_ context.Context, code string) (*v1.CloudProvider, error) {
	var res v1.CloudProvider
	d := dpt.db.Where("code = ?", code).Find(&res)

	return &res, dbNotFoundErrorWrap(d.Error)
}

func (dpt *cloudProvider) GetByID(_ context.Context, id uint64) (*v1.CloudProvider, error) {
	var res v1.CloudProvider
	d := dpt.db.Where("id = ?", id).Find(&res)

	return &res, dbNotFoundErrorWrap(d.Error)
}
