Skip to content

Commit

Permalink
postgres_driver/postgres_driver.nim: standardizing how to return values
Browse files Browse the repository at this point in the history
  • Loading branch information
Ivansete-status committed May 30, 2023
1 parent 4483549 commit 2a5960c
Showing 1 changed file with 35 additions and 33 deletions.
68 changes: 35 additions & 33 deletions waku/v2/waku_archive/driver/postgres_driver/postgres_driver.nim
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ proc new*(T: type PostgresDriver, storeMessageDbUrl: string): ArchiveDriverResul
except DbError:
return err("could not connect to postgres")

ok(PostgresDriver(connection: dbConn))
return ok(PostgresDriver(connection: dbConn))

method reset*(s: PostgresDriver): ArchiveDriverResult[void] {.base.} =
try:
Expand All @@ -76,13 +76,14 @@ method reset*(s: PostgresDriver): ArchiveDriverResult[void] {.base.} =
return err("failed to reset database")
except DbError:
return err("failed to reset database")
ok()

return ok()

method init*(s: PostgresDriver): ArchiveDriverResult[void] {.base.} =
try:
let res = s.connection.tryExec(sql(createTableQuery()))
if not res:
return err("failed to migrate database")
return err("failed to initialize")
s.preparedInsert = prepare(s.connection, "insertRow", sql(insertRow()), 7)
except DbError:
let
Expand All @@ -91,7 +92,8 @@ method init*(s: PostgresDriver): ArchiveDriverResult[void] {.base.} =
exceptionMessage = "failed to init driver, got exception " &
repr(e) & " with message " & msg
return err(exceptionMessage)
ok()

return ok()

method put*(s: PostgresDriver,
pubsubTopic: PubsubTopic,
Expand All @@ -116,35 +118,35 @@ method put*(s: PostgresDriver,
return ok()

proc extractRow(r: Row): ArchiveDriverResult[ArchiveRow] =
var wakuMessage: WakuMessage
var timestamp: Timestamp
var version: uint
var pubSubTopic: string
var contentTopic: string
var storedAt: int64
var digest: string
var payload: string

try:
storedAt = parseInt(r[0])
contentTopic = r[1]
payload = parseHexStr(r[2])
pubSubTopic = r[3]
version = parseUInt(r[4])
timestamp = parseInt(r[5])
digest = parseHexStr(r[6])
except ValueError:
return err("could not parse timestamp")

wakuMessage.timestamp = timestamp
wakuMessage.version = uint32(version)
wakuMessage.contentTopic = contentTopic
wakuMessage.payload = @(payload.toOpenArrayByte(0, payload.high))

ok((pubSubTopic,
wakuMessage,
@(digest.toOpenArrayByte(0, digest.high)),
storedAt))
var wakuMessage: WakuMessage
var timestamp: Timestamp
var version: uint
var pubSubTopic: string
var contentTopic: string
var storedAt: int64
var digest: string
var payload: string

try:
storedAt = parseInt(r[0])
contentTopic = r[1]
payload = parseHexStr(r[2])
pubSubTopic = r[3]
version = parseUInt(r[4])
timestamp = parseInt(r[5])
digest = parseHexStr(r[6])
except ValueError:
return err("could not parse timestamp")

wakuMessage.timestamp = timestamp
wakuMessage.version = uint32(version)
wakuMessage.contentTopic = contentTopic
wakuMessage.payload = @(payload.toOpenArrayByte(0, payload.high))

return ok((pubSubTopic,
wakuMessage,
@(digest.toOpenArrayByte(0, digest.high)),
storedAt))

method getAllMessages*(s: PostgresDriver):
Future[ArchiveDriverResult[seq[ArchiveRow]]] {.async.} =
Expand Down

0 comments on commit 2a5960c

Please sign in to comment.