AdaHandleService.java
package org.cardanofoundation.tools.adahandle.resolver.service;
import com.bloxbean.cardano.yaci.store.common.domain.AddressUtxo;
import org.cardanofoundation.tools.adahandle.resolver.entity.AdaHandle;
import org.cardanofoundation.tools.adahandle.resolver.entity.AdaHandleHistoryItem;
import org.cardanofoundation.tools.adahandle.resolver.mapper.AdaHandleHistoryMapper;
import org.cardanofoundation.tools.adahandle.resolver.mapper.AdaHandleMapper;
import org.cardanofoundation.tools.adahandle.resolver.projection.Addresses;
import org.cardanofoundation.tools.adahandle.resolver.repository.AdaHandleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AdaHandleService {
@Autowired
private AdaHandleRepository adaHandleRepository;
public void saveAllAdaHandles(List<AddressUtxo> addressUtxoList) {
List<AdaHandle> adaHandles = addressUtxoList.stream()
.map(AdaHandleMapper::toAdaHandles).flatMap(List::stream)
.toList();
adaHandleRepository.saveAll(adaHandles);
}
public Addresses getAddressesByAdaHandle(String adaHandle) {
if (adaHandle.startsWith("$") && adaHandle.length() > 1) {
adaHandle = adaHandle.substring(1);
}
return adaHandleRepository.findAddressesByAdaHandle(adaHandle);
}
public List<String> getAdaHandlesByStakeAddress(String stakeAddress) {
return adaHandleRepository.findAdaHandlesByStakeAddress(stakeAddress);
}
public List<String> getAdaHandlesByPaymentAddress(String paymentAddress) {
return adaHandleRepository.findAdaHandlesByPaymentAddress(paymentAddress);
}
public void recalculateAdaHandlesFromHistory(List<AdaHandleHistoryItem> adaHandleHistoryItems) {
adaHandleRepository.deleteAll();
List<AdaHandle> adaHandles = adaHandleHistoryItems.stream().map(AdaHandleHistoryMapper::toAdaHandle).toList();
adaHandleRepository.saveAll(adaHandles);
}
}