Skip to content

Commit 9da7627

Browse files
committed
better timestamp support
Signed-off-by: Hendrik Ebbers <[email protected]>
1 parent 85ad567 commit 9da7627

File tree

2 files changed

+175
-0
lines changed

2 files changed

+175
-0
lines changed

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/data/ContractLog.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import com.hedera.hashgraph.sdk.ContractId;
44
import com.openelements.hiero.base.solidity.SolidityTools;
55
import com.openelements.hiero.smartcontract.abi.model.AbiEvent;
6+
import java.time.Instant;
7+
import java.time.ZoneOffset;
8+
import java.time.ZonedDateTime;
69
import java.util.List;
710
import java.util.Objects;
811
import org.jspecify.annotations.NonNull;
@@ -50,6 +53,14 @@ public record ContractLog(@NonNull String address, @Nullable String bloom, @Null
5053
Objects.requireNonNull(transactionHash, "transactionHash must not be null");
5154
}
5255

56+
public ZonedDateTime getTimestamp() {
57+
String[] parts = timestamp.split("\\.");
58+
long seconds = Long.parseLong(parts[0]);
59+
int nanoseconds = parts.length > 1 ? Integer.parseInt(parts[1]) : 0;
60+
Instant instant = Instant.ofEpochSecond(seconds, nanoseconds);
61+
return ZonedDateTime.ofInstant(instant, ZoneOffset.UTC);
62+
}
63+
5364
public boolean isEventOfType(final @NonNull AbiEvent event) {
5465
Objects.requireNonNull(event, "event");
5566
if (event.anonymous()) {

hiero-enterprise-base/src/main/java/com/openelements/hiero/base/mirrornode/ContractRepository.java

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.openelements.hiero.base.data.Order;
66
import com.openelements.hiero.base.data.Page;
77
import com.openelements.hiero.smartcontract.abi.model.AbiEvent;
8+
import java.time.ZonedDateTime;
89
import java.util.Objects;
910
import org.jspecify.annotations.NonNull;
1011

@@ -79,4 +80,167 @@ Page<ContractLog> findLogsByContract(@NonNull ContractId contractId, @NonNull Ab
7980

8081
Page<ContractLog> findLogsByContract(@NonNull ContractId contractId, @NonNull AbiEvent abiEvent,
8182
@NonNull Order order, int pageLimit);
83+
84+
85+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, ZonedDateTime timestamp) {
86+
Objects.requireNonNull(contractId, "contractId must be provided");
87+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), timestamp);
88+
}
89+
90+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, @NonNull Order order,
91+
ZonedDateTime timestamp) {
92+
Objects.requireNonNull(contractId, "contractId must be provided");
93+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), order, timestamp);
94+
}
95+
96+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
97+
ZonedDateTime timestamp) {
98+
Objects.requireNonNull(contractId, "contractId must be provided");
99+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), abiEvent, timestamp);
100+
}
101+
102+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
103+
@NonNull Order order, ZonedDateTime timestamp) {
104+
Objects.requireNonNull(contractId, "contractId must be provided");
105+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), abiEvent, order, timestamp);
106+
}
107+
108+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, int pageLimit,
109+
ZonedDateTime timestamp) {
110+
Objects.requireNonNull(contractId, "contractId must be provided");
111+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), pageLimit, timestamp);
112+
}
113+
114+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, @NonNull Order order,
115+
int pageLimit, ZonedDateTime timestamp) {
116+
Objects.requireNonNull(contractId, "contractId must be provided");
117+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), order, pageLimit, timestamp);
118+
}
119+
120+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
121+
int pageLimit, ZonedDateTime timestamp) {
122+
Objects.requireNonNull(contractId, "contractId must be provided");
123+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), abiEvent, pageLimit, timestamp);
124+
}
125+
126+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
127+
@NonNull Order order, int pageLimit, ZonedDateTime timestamp) {
128+
Objects.requireNonNull(contractId, "contractId must be provided");
129+
return findLogsByContractBeforeTimestamp(ContractId.fromString(contractId), abiEvent, order, pageLimit,
130+
timestamp);
131+
}
132+
133+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId,
134+
ZonedDateTime timestamp) {
135+
return findLogsByContractBeforeTimestamp(contractId, Order.DESC, timestamp);
136+
}
137+
138+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId,
139+
@NonNull AbiEvent abiEvent, ZonedDateTime timestamp) {
140+
return findLogsByContractBeforeTimestamp(contractId, abiEvent, Order.DESC, timestamp);
141+
}
142+
143+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId, int pageLimit,
144+
ZonedDateTime timestamp) {
145+
return findLogsByContractBeforeTimestamp(contractId, Order.DESC, pageLimit, timestamp);
146+
}
147+
148+
default Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId,
149+
@NonNull AbiEvent abiEvent,
150+
int pageLimit, ZonedDateTime timestamp) {
151+
return findLogsByContractBeforeTimestamp(contractId, abiEvent, Order.DESC, pageLimit, timestamp);
152+
}
153+
154+
Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId, @NonNull Order order,
155+
ZonedDateTime timestamp);
156+
157+
Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId, @NonNull AbiEvent abiEvent,
158+
@NonNull Order order, ZonedDateTime timestamp);
159+
160+
Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId, @NonNull Order order,
161+
int pageLimit, ZonedDateTime timestamp);
162+
163+
Page<ContractLog> findLogsByContractBeforeTimestamp(@NonNull ContractId contractId, @NonNull AbiEvent abiEvent,
164+
@NonNull Order order, int pageLimit, ZonedDateTime timestamp);
165+
166+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, ZonedDateTime timestamp) {
167+
Objects.requireNonNull(contractId, "contractId must be provided");
168+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), timestamp);
169+
}
170+
171+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, @NonNull Order order,
172+
ZonedDateTime timestamp) {
173+
Objects.requireNonNull(contractId, "contractId must be provided");
174+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), order, timestamp);
175+
}
176+
177+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
178+
ZonedDateTime timestamp) {
179+
Objects.requireNonNull(contractId, "contractId must be provided");
180+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), abiEvent, timestamp);
181+
}
182+
183+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
184+
@NonNull Order order, ZonedDateTime timestamp) {
185+
Objects.requireNonNull(contractId, "contractId must be provided");
186+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), abiEvent, order, timestamp);
187+
}
188+
189+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, int pageLimit,
190+
ZonedDateTime timestamp) {
191+
Objects.requireNonNull(contractId, "contractId must be provided");
192+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), pageLimit, timestamp);
193+
}
194+
195+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, @NonNull Order order,
196+
int pageLimit, ZonedDateTime timestamp) {
197+
Objects.requireNonNull(contractId, "contractId must be provided");
198+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), order, pageLimit, timestamp);
199+
}
200+
201+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
202+
int pageLimit, ZonedDateTime timestamp) {
203+
Objects.requireNonNull(contractId, "contractId must be provided");
204+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), abiEvent, pageLimit, timestamp);
205+
}
206+
207+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull String contractId, @NonNull AbiEvent abiEvent,
208+
@NonNull Order order, int pageLimit, ZonedDateTime timestamp) {
209+
Objects.requireNonNull(contractId, "contractId must be provided");
210+
return findLogsByContractAfterTimestamp(ContractId.fromString(contractId), abiEvent, order, pageLimit,
211+
timestamp);
212+
}
213+
214+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId,
215+
ZonedDateTime timestamp) {
216+
return findLogsByContractAfterTimestamp(contractId, Order.DESC, timestamp);
217+
}
218+
219+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId,
220+
@NonNull AbiEvent abiEvent, ZonedDateTime timestamp) {
221+
return findLogsByContractAfterTimestamp(contractId, abiEvent, Order.DESC, timestamp);
222+
}
223+
224+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId, int pageLimit,
225+
ZonedDateTime timestamp) {
226+
return findLogsByContractAfterTimestamp(contractId, Order.DESC, pageLimit, timestamp);
227+
}
228+
229+
default Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId,
230+
@NonNull AbiEvent abiEvent,
231+
int pageLimit, ZonedDateTime timestamp) {
232+
return findLogsByContractAfterTimestamp(contractId, abiEvent, Order.DESC, pageLimit, timestamp);
233+
}
234+
235+
Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId, @NonNull Order order,
236+
ZonedDateTime timestamp);
237+
238+
Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId, @NonNull AbiEvent abiEvent,
239+
@NonNull Order order, ZonedDateTime timestamp);
240+
241+
Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId, @NonNull Order order,
242+
int pageLimit, ZonedDateTime timestamp);
243+
244+
Page<ContractLog> findLogsByContractAfterTimestamp(@NonNull ContractId contractId, @NonNull AbiEvent abiEvent,
245+
@NonNull Order order, int pageLimit, ZonedDateTime timestamp);
82246
}

0 commit comments

Comments
 (0)