package scim

import (
	"context"

	"github.com/imulab/go-scim/pkg/v2/service"
)

type (
	SearchScimResources interface {
		SearchResources(ctx context.Context, orgID uint64, req *service.QueryRequest) (*ScimQueryResponse, error)
	}
	GetScimResource interface {
		GetResource(ctx context.Context, orgID uint64, req *service.GetRequest) (map[string]interface{}, error)
	}
	CreateScimResource interface {
		CreateResource(ctx context.Context, orgID uint64, req *service.CreateRequest) (map[string]interface{}, error)
	}
	ReplaceScimResource interface {
		ReplaceResource(ctx context.Context, orgID uint64, req *service.ReplaceRequest) (*ScimUpdateResponse, error)
	}
	PatchScimResource interface {
		PatchResource(ctx context.Context, orgID uint64, req *service.PatchRequest) (*ScimUpdateResponse, error)
	}
	DeleteScimResource interface {
		DeleteResource(ctx context.Context, orgID uint64, req *service.DeleteRequest) (map[string]interface{}, error)
	}
)
