mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 09:17:43 +03:00
Allow to have both verbose and succinct row parsers (#5248)
* Allow to have both verbose and succinct row parsers This will be used when we need to stream transactions and not individual events. changelog_begin changelog_end * Succinct parser should have verbose = false
This commit is contained in:
parent
454bd127a0
commit
9522c6e4b2
@ -202,6 +202,7 @@ private[events] trait EventsTable {
|
||||
createAgreementText: Option[String],
|
||||
createKeyValue: Option[InputStream],
|
||||
eventWitnesses: Array[String],
|
||||
verbose: Boolean,
|
||||
): CreatedEvent =
|
||||
CreatedEvent(
|
||||
eventId = eventId,
|
||||
@ -213,7 +214,7 @@ private[events] trait EventsTable {
|
||||
failureContext = s"attempting to deserialize persisted key to value",
|
||||
LfEngineToApi
|
||||
.lfVersionedValueToApiValue(
|
||||
verbose = true,
|
||||
verbose = verbose,
|
||||
value = deserialize(key),
|
||||
),
|
||||
)
|
||||
@ -223,7 +224,7 @@ private[events] trait EventsTable {
|
||||
failureContext = s"attempting to deserialize persisted create argument to record",
|
||||
LfEngineToApi
|
||||
.lfVersionedValueToApiRecord(
|
||||
verbose = true,
|
||||
verbose = verbose,
|
||||
recordValue = deserialize(createArgument),
|
||||
),
|
||||
)
|
||||
@ -246,6 +247,7 @@ private[events] trait EventsTable {
|
||||
exerciseActors: Array[String],
|
||||
exerciseChildEventIds: Array[String],
|
||||
eventWitnesses: Array[String],
|
||||
verbose: Boolean,
|
||||
): ExercisedEvent =
|
||||
ExercisedEvent(
|
||||
eventId = eventId,
|
||||
@ -257,7 +259,7 @@ private[events] trait EventsTable {
|
||||
failureContext = s"attempting to deserialize persisted exercise argument to value",
|
||||
LfEngineToApi
|
||||
.lfVersionedValueToApiValue(
|
||||
verbose = true,
|
||||
verbose = verbose,
|
||||
value = deserialize(exerciseArgument),
|
||||
),
|
||||
)
|
||||
@ -272,7 +274,7 @@ private[events] trait EventsTable {
|
||||
failureContext = s"attempting to deserialize persisted exercise result to value",
|
||||
LfEngineToApi
|
||||
.lfVersionedValueToApiValue(
|
||||
verbose = true,
|
||||
verbose = verbose,
|
||||
value = deserialize(key),
|
||||
),
|
||||
)
|
||||
|
@ -10,7 +10,7 @@ import com.digitalasset.platform.store.Conversions._
|
||||
|
||||
private[events] trait EventsTableFlatEvents { this: EventsTable =>
|
||||
|
||||
private val createdFlatEventParser: RowParser[Entry[Event]] =
|
||||
private def createdFlatEventParser(verbose: Boolean): RowParser[Entry[Event]] =
|
||||
createdEventRow map {
|
||||
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ createArgument ~ createSignatories ~ createObservers ~ createAgreementText ~ createKeyValue =>
|
||||
Entry(
|
||||
@ -32,6 +32,7 @@ private[events] trait EventsTableFlatEvents { this: EventsTable =>
|
||||
createAgreementText = createAgreementText,
|
||||
createKeyValue = createKeyValue,
|
||||
eventWitnesses = eventWitnesses,
|
||||
verbose = verbose,
|
||||
)
|
||||
)
|
||||
)
|
||||
@ -61,7 +62,14 @@ private[events] trait EventsTableFlatEvents { this: EventsTable =>
|
||||
)
|
||||
}
|
||||
|
||||
val flatEventParser: RowParser[Entry[Event]] = createdFlatEventParser | archivedFlatEventParser
|
||||
private val verboseFlatEventParser: RowParser[Entry[Event]] =
|
||||
createdFlatEventParser(verbose = true) | archivedFlatEventParser
|
||||
|
||||
private val succinctFlatEventParser: RowParser[Entry[Event]] =
|
||||
createdFlatEventParser(verbose = false) | archivedFlatEventParser
|
||||
|
||||
def flatEventParser(verbose: Boolean): RowParser[Entry[Event]] =
|
||||
if (verbose) verboseFlatEventParser else succinctFlatEventParser
|
||||
|
||||
private val selectColumns =
|
||||
Seq(
|
||||
|
@ -9,7 +9,7 @@ import com.digitalasset.ledger.api.v1.transaction.TreeEvent
|
||||
|
||||
private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
||||
|
||||
private val createdTreeEventParser: RowParser[Entry[TreeEvent]] =
|
||||
private def createdTreeEventParser(verbose: Boolean): RowParser[Entry[TreeEvent]] =
|
||||
createdEventRow map {
|
||||
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ createArgument ~ createSignatories ~ createObservers ~ createAgreementText ~ createKeyValue =>
|
||||
Entry(
|
||||
@ -31,13 +31,14 @@ private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
||||
createAgreementText = createAgreementText,
|
||||
createKeyValue = createKeyValue,
|
||||
eventWitnesses = eventWitnesses,
|
||||
verbose = verbose,
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private val exercisedTreeEventParser: RowParser[Entry[TreeEvent]] =
|
||||
private def exercisedTreeEventParser(verbose: Boolean): RowParser[Entry[TreeEvent]] =
|
||||
exercisedEventRow map {
|
||||
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ exerciseConsuming ~ exerciseChoice ~ exerciseArgument ~ exerciseResult ~ exerciseActors ~ exerciseChildEventIds =>
|
||||
Entry(
|
||||
@ -60,14 +61,21 @@ private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
||||
exerciseActors = exerciseActors,
|
||||
exerciseChildEventIds = exerciseChildEventIds,
|
||||
eventWitnesses = eventWitnesses,
|
||||
verbose = verbose,
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
val treeEventParser
|
||||
: RowParser[Entry[TreeEvent]] = createdTreeEventParser | exercisedTreeEventParser
|
||||
private val verboseTreeEventParser: RowParser[Entry[TreeEvent]] =
|
||||
createdTreeEventParser(verbose = true) | exercisedTreeEventParser(verbose = true)
|
||||
|
||||
private val succinctTreeEventParser: RowParser[Entry[TreeEvent]] =
|
||||
createdTreeEventParser(verbose = false) | exercisedTreeEventParser(verbose = false)
|
||||
|
||||
def treeEventParser(verbose: Boolean): RowParser[Entry[TreeEvent]] =
|
||||
if (verbose) verboseTreeEventParser else succinctTreeEventParser
|
||||
|
||||
def prepareLookupTransactionTreeById(
|
||||
transactionId: TransactionId,
|
||||
|
@ -30,7 +30,7 @@ private[dao] object TransactionsReader {
|
||||
description = "lookup_flat_transaction_by_id",
|
||||
extraLog = Some(s"tx: $transactionId, parties = ${requestingParties.mkString(", ")}"),
|
||||
) { implicit connection =>
|
||||
query.as(EventsTable.flatEventParser.*)
|
||||
query.as(EventsTable.flatEventParser(verbose = true).*)
|
||||
}
|
||||
.map(EventsTable.Entry.toGetFlatTransactionResponse)(executionContext)
|
||||
}
|
||||
@ -45,10 +45,11 @@ private[dao] object TransactionsReader {
|
||||
description = "lookup_transaction_tree_by_id",
|
||||
extraLog = Some(s"tx: $transactionId, parties = ${requestingParties.mkString(", ")}"),
|
||||
) { implicit connection =>
|
||||
query.as(EventsTable.treeEventParser.*)
|
||||
query.as(EventsTable.treeEventParser(verbose = true).*)
|
||||
}
|
||||
.map(EventsTable.Entry.toTransactionTree)(executionContext)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user