mirror of
https://github.com/Qortal/qortal.git
synced 2025-07-22 20:26:50 +00:00
Added ability to filter arbitrary transactions by name when searching.
This commit is contained in:
@@ -89,7 +89,9 @@ public class ArbitraryResource {
|
||||
})
|
||||
public List<TransactionData> searchTransactions(@QueryParam("startBlock") Integer startBlock, @QueryParam("blockLimit") Integer blockLimit,
|
||||
@QueryParam("txGroupId") Integer txGroupId,
|
||||
@QueryParam("service") Integer service, @QueryParam("address") String address, @Parameter(
|
||||
@QueryParam("service") Integer service,
|
||||
@QueryParam("name") String name,
|
||||
@QueryParam("address") String address, @Parameter(
|
||||
description = "whether to include confirmed, unconfirmed or both",
|
||||
required = true
|
||||
) @QueryParam("confirmationStatus") ConfirmationStatus confirmationStatus, @Parameter(
|
||||
@@ -112,7 +114,7 @@ public class ArbitraryResource {
|
||||
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(startBlock, blockLimit, txGroupId, txTypes,
|
||||
service, address, confirmationStatus, limit, offset, reverse);
|
||||
service, name, address, confirmationStatus, limit, offset, reverse);
|
||||
|
||||
// Expand signatures to transactions
|
||||
List<TransactionData> transactions = new ArrayList<TransactionData>(signatures.size());
|
||||
|
@@ -348,7 +348,7 @@ public class TransactionsResource {
|
||||
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(startBlock, blockLimit, txGroupId,
|
||||
txTypes, null, address, confirmationStatus, limit, offset, reverse);
|
||||
txTypes, null, null, address, confirmationStatus, limit, offset, reverse);
|
||||
|
||||
// Expand signatures to transactions
|
||||
List<TransactionData> transactions = new ArrayList<>(signatures.size());
|
||||
|
@@ -90,7 +90,7 @@ public class ArbitraryDataCleanupManager extends Thread {
|
||||
|
||||
// Any arbitrary transactions we want to fetch data for?
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, ARBITRARY_TX_TYPE, null, null, ConfirmationStatus.BOTH, limit, offset, true);
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, ARBITRARY_TX_TYPE, null, null, null, ConfirmationStatus.BOTH, limit, offset, true);
|
||||
// LOGGER.info("Found {} arbitrary transactions at offset: {}, limit: {}", signatures.size(), offset, limit);
|
||||
if (signatures == null || signatures.isEmpty()) {
|
||||
offset = 0;
|
||||
|
@@ -128,7 +128,7 @@ public class ArbitraryDataManager extends Thread {
|
||||
|
||||
// Any arbitrary transactions we want to fetch data for?
|
||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, ARBITRARY_TX_TYPE, null, null, ConfirmationStatus.BOTH, limit, offset, true);
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(null, null, null, ARBITRARY_TX_TYPE, null, null, null, ConfirmationStatus.BOTH, limit, offset, true);
|
||||
// LOGGER.info("Found {} arbitrary transactions at offset: {}, limit: {}", signatures.size(), offset, limit);
|
||||
if (signatures == null || signatures.isEmpty()) {
|
||||
offset = 0;
|
||||
|
@@ -305,7 +305,7 @@ public class NamesDatabaseIntegrityCheck {
|
||||
// Fetch all the confirmed REGISTER_NAME transaction signatures
|
||||
List<byte[]> signatures = repository.getTransactionRepository().getSignaturesMatchingCriteria(
|
||||
null, null, null, ALL_NAME_TX_TYPE, null, null,
|
||||
ConfirmationStatus.CONFIRMED, null, null, false);
|
||||
null, ConfirmationStatus.CONFIRMED, null, null, false);
|
||||
|
||||
for (byte[] signature : signatures) {
|
||||
TransactionData transactionData = repository.getTransactionRepository().fromSignature(signature);
|
||||
|
@@ -70,7 +70,7 @@ public interface TransactionRepository {
|
||||
* @throws DataException
|
||||
*/
|
||||
public List<byte[]> getSignaturesMatchingCriteria(Integer startBlock, Integer blockLimit, Integer txGroupId,
|
||||
List<TransactionType> txTypes, Integer service, String address,
|
||||
List<TransactionType> txTypes, Integer service, String name, String address,
|
||||
ConfirmationStatus confirmationStatus, Integer limit, Integer offset, Boolean reverse) throws DataException;
|
||||
|
||||
/**
|
||||
|
@@ -907,8 +907,10 @@ public class HSQLDBDatabaseUpdates {
|
||||
stmt.execute("ALTER TABLE ArbitraryTransactions ADD size INT NOT NULL DEFAULT 0");
|
||||
// Larger data files need to be split into chunks, for easier transmission and greater decentralization
|
||||
stmt.execute("ALTER TABLE ArbitraryTransactions ADD chunk_hashes ArbitraryDataHashes");
|
||||
// For finding data files by hash
|
||||
// For finding transactions by file hash
|
||||
stmt.execute("CREATE INDEX ArbitraryDataIndex ON ArbitraryTransactions (is_data_raw, data)");
|
||||
// For finding transactions by registered name
|
||||
stmt.execute("CREATE INDEX ArbitraryNameIndex ON ArbitraryTransactions (name)");
|
||||
break;
|
||||
|
||||
case 38:
|
||||
|
@@ -386,7 +386,7 @@ public class HSQLDBTransactionRepository implements TransactionRepository {
|
||||
|
||||
@Override
|
||||
public List<byte[]> getSignaturesMatchingCriteria(Integer startBlock, Integer blockLimit, Integer txGroupId,
|
||||
List<TransactionType> txTypes, Integer service, String address,
|
||||
List<TransactionType> txTypes, Integer service, String name, String address,
|
||||
ConfirmationStatus confirmationStatus, Integer limit, Integer offset, Boolean reverse) throws DataException {
|
||||
List<byte[]> signatures = new ArrayList<>();
|
||||
|
||||
@@ -412,8 +412,8 @@ public class HSQLDBTransactionRepository implements TransactionRepository {
|
||||
signatureColumn = "TransactionParticipants.signature";
|
||||
}
|
||||
|
||||
if (service != null) {
|
||||
// This is for ARBITRARY transactions
|
||||
if (service != null || name != null) {
|
||||
// These are for ARBITRARY transactions
|
||||
tables.append(" LEFT OUTER JOIN ArbitraryTransactions ON ArbitraryTransactions.signature = Transactions.signature");
|
||||
}
|
||||
|
||||
@@ -469,6 +469,11 @@ public class HSQLDBTransactionRepository implements TransactionRepository {
|
||||
bindParams.add(service);
|
||||
}
|
||||
|
||||
if (name != null) {
|
||||
whereClauses.add("ArbitraryTransactions.name = ?");
|
||||
bindParams.add(name);
|
||||
}
|
||||
|
||||
if (hasAddress) {
|
||||
whereClauses.add("TransactionParticipants.participant = ?");
|
||||
bindParams.add(address);
|
||||
|
Reference in New Issue
Block a user