2021-07-14 18:17:36 +00:00
|
|
|
{.push raises: [Defect].}
|
|
|
|
|
|
2021-01-22 09:50:50 +00:00
|
|
|
import
|
2021-11-03 11:27:13 +00:00
|
|
|
std/options,
|
2021-01-22 09:50:50 +00:00
|
|
|
stew/results,
|
2021-03-25 09:03:17 +00:00
|
|
|
../../../protocol/waku_message,
|
2022-02-17 15:26:49 +00:00
|
|
|
../../../utils/time,
|
2021-03-25 09:03:17 +00:00
|
|
|
../../../utils/pagination
|
2021-01-22 09:50:50 +00:00
|
|
|
|
|
|
|
|
## This module defines a message store interface. Implementations of
|
2021-04-28 00:14:55 +00:00
|
|
|
## MessageStore are used by the `WakuStore` protocol to store and
|
|
|
|
|
## retrieve historical messages
|
2021-01-22 09:50:50 +00:00
|
|
|
|
|
|
|
|
type
|
2022-02-17 15:26:49 +00:00
|
|
|
DataProc* = proc(receiverTimestamp: Timestamp, msg: WakuMessage, pubsubTopic: string) {.closure, raises: [Defect].}
|
2021-01-22 09:50:50 +00:00
|
|
|
|
|
|
|
|
MessageStoreResult*[T] = Result[T, string]
|
|
|
|
|
|
|
|
|
|
MessageStore* = ref object of RootObj
|
|
|
|
|
|
|
|
|
|
# MessageStore interface
|
2021-04-28 00:14:55 +00:00
|
|
|
method put*(db: MessageStore, cursor: Index, message: WakuMessage, pubsubTopic: string): MessageStoreResult[void] {.base.} = discard
|
2021-11-03 11:27:13 +00:00
|
|
|
method getAll*(db: MessageStore, onData: DataProc, limit = none(int)): MessageStoreResult[bool] {.base.} = discard
|
2021-04-28 00:14:55 +00:00
|
|
|
|