package invitationdb

import (
	"context"
	"errors"

	"github.com/tech/sendico/pkg/db/repository"
	"github.com/tech/sendico/pkg/merrors"
	"github.com/tech/sendico/pkg/model"
	mauth "github.com/tech/sendico/pkg/mutil/db/auth"
	"go.mongodb.org/mongo-driver/v2/bson"
)

func (db *InvitationDB) List(ctx context.Context, accountRef, organizationRef, _ bson.ObjectID, cursor *model.ViewCursor) ([]model.Invitation, error) {
	res, err := mauth.GetProtectedObjects[model.Invitation](
		ctx,
		db.DBImp.Logger,
		accountRef, organizationRef, model.ActionRead,
		repository.OrgFilter(organizationRef),
		cursor,
		db.Enforcer,
		db.DBImp.Repository,
	)
	if errors.Is(err, merrors.ErrNoData) {
		return []model.Invitation{}, nil
	}
	return res, err
}
