package processor

import (
	"apskel-pos-be/internal/entities"
	"context"

	"github.com/google/uuid"
)

type VendorRepository interface {
	Create(ctx context.Context, vendor *entities.Vendor) error
	GetByID(ctx context.Context, id uuid.UUID) (*entities.Vendor, error)
	GetByIDAndOrganizationID(ctx context.Context, id, organizationID uuid.UUID) (*entities.Vendor, error)
	Update(ctx context.Context, vendor *entities.Vendor) error
	Delete(ctx context.Context, id uuid.UUID) error
	List(ctx context.Context, organizationID uuid.UUID, filters map[string]interface{}, limit, offset int) ([]*entities.Vendor, int64, error)
	Count(ctx context.Context, organizationID uuid.UUID, filters map[string]interface{}) (int64, error)
	GetByEmail(ctx context.Context, email string, organizationID uuid.UUID) (*entities.Vendor, error)
	GetByName(ctx context.Context, name string, organizationID uuid.UUID) (*entities.Vendor, error)
	GetActiveVendors(ctx context.Context, organizationID uuid.UUID) ([]*entities.Vendor, error)
}
