package de.effigenix.domain.inventory;

import de.effigenix.shared.common.RepositoryError;
import de.effigenix.shared.common.Result;

import java.util.List;
import java.util.Optional;

public interface InventoryCountRepository {

    Result<RepositoryError, Optional<InventoryCount>> findById(InventoryCountId id);

    Result<RepositoryError, List<InventoryCount>> findAll();

    Result<RepositoryError, List<InventoryCount>> findByStorageLocationId(StorageLocationId storageLocationId);

    Result<RepositoryError, List<InventoryCount>> findByStatus(InventoryCountStatus status);

    Result<RepositoryError, Boolean> existsActiveByStorageLocationId(StorageLocationId storageLocationId);

    Result<RepositoryError, Void> save(InventoryCount inventoryCount);
}
