package v1

import (
	"context"

	"github.com/pingcap-inc/pchub/internal/apiserver/store"
	v1 "github.com/pingcap-inc/pchub/model/v1"
	"github.com/pingcap-inc/pchub/pkg/errors"
	"github.com/pingcap-inc/pchub/pkg/log"
)

type pchPermissionService struct {
	store store.Factory
}

type PCHPermissionSrv interface {
	ListByLarkUID(c context.Context, larkUID string) ([]v1.PCHPermission, error)
}

var _ PCHPermissionSrv = (*pchPermissionService)(nil)

func newPCHPermission(srv *service) *pchPermissionService {
	return &pchPermissionService{store: srv.store}
}

func (p *pchPermissionService) ListByLarkUID(c context.Context, larkUID string) ([]v1.PCHPermission, error) {
	res, err := p.store.PCHPermission().ListByLarkUID(c, larkUID)
	if err != nil {
		log.L(c).Error(errors.Wrap(err, "Error when PCHPermission.ListByLarkUID from db").Error())

		return nil, errors.Wrap(err, "Error when get permission list from db.")
	}

	return res, nil
}
