// Code generated by candi v1.8.18.

package repository

import (
	"context"
	"monorepo/services/master-service/internal/modules/acl/domain"
	shareddomain "monorepo/services/master-service/pkg/shared/domain"
)

// ACLRepository abstract interface
type ACLRepository interface {
	FetchAll(ctx context.Context, filter domain.ACLFilter) (data []shareddomain.ACL, err error)
	FindByUserID(ctx context.Context, userID string) (data []shareddomain.ACL, err error)
	Find(ctx context.Context, data *shareddomain.ACL) (err error)
	Save(ctx context.Context, data *shareddomain.ACL) (err error)
	Delete(ctx context.Context, data *shareddomain.ACL) (err error)
}

// RoleRepository abstract interface
type RoleRepository interface {
	FetchAll(ctx context.Context, filter domain.RoleListFilter) (data []shareddomain.Role, err error)
	GroupByID(ctx context.Context, roleID ...string) map[string]shareddomain.Role
	Count(ctx context.Context, filter domain.RoleListFilter) int64
	Find(ctx context.Context, data *shareddomain.Role) (err error)
	Save(ctx context.Context, data *shareddomain.Role) (err error)
}
