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],
|
createAgreementText: Option[String],
|
||||||
createKeyValue: Option[InputStream],
|
createKeyValue: Option[InputStream],
|
||||||
eventWitnesses: Array[String],
|
eventWitnesses: Array[String],
|
||||||
|
verbose: Boolean,
|
||||||
): CreatedEvent =
|
): CreatedEvent =
|
||||||
CreatedEvent(
|
CreatedEvent(
|
||||||
eventId = eventId,
|
eventId = eventId,
|
||||||
@ -213,7 +214,7 @@ private[events] trait EventsTable {
|
|||||||
failureContext = s"attempting to deserialize persisted key to value",
|
failureContext = s"attempting to deserialize persisted key to value",
|
||||||
LfEngineToApi
|
LfEngineToApi
|
||||||
.lfVersionedValueToApiValue(
|
.lfVersionedValueToApiValue(
|
||||||
verbose = true,
|
verbose = verbose,
|
||||||
value = deserialize(key),
|
value = deserialize(key),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -223,7 +224,7 @@ private[events] trait EventsTable {
|
|||||||
failureContext = s"attempting to deserialize persisted create argument to record",
|
failureContext = s"attempting to deserialize persisted create argument to record",
|
||||||
LfEngineToApi
|
LfEngineToApi
|
||||||
.lfVersionedValueToApiRecord(
|
.lfVersionedValueToApiRecord(
|
||||||
verbose = true,
|
verbose = verbose,
|
||||||
recordValue = deserialize(createArgument),
|
recordValue = deserialize(createArgument),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -246,6 +247,7 @@ private[events] trait EventsTable {
|
|||||||
exerciseActors: Array[String],
|
exerciseActors: Array[String],
|
||||||
exerciseChildEventIds: Array[String],
|
exerciseChildEventIds: Array[String],
|
||||||
eventWitnesses: Array[String],
|
eventWitnesses: Array[String],
|
||||||
|
verbose: Boolean,
|
||||||
): ExercisedEvent =
|
): ExercisedEvent =
|
||||||
ExercisedEvent(
|
ExercisedEvent(
|
||||||
eventId = eventId,
|
eventId = eventId,
|
||||||
@ -257,7 +259,7 @@ private[events] trait EventsTable {
|
|||||||
failureContext = s"attempting to deserialize persisted exercise argument to value",
|
failureContext = s"attempting to deserialize persisted exercise argument to value",
|
||||||
LfEngineToApi
|
LfEngineToApi
|
||||||
.lfVersionedValueToApiValue(
|
.lfVersionedValueToApiValue(
|
||||||
verbose = true,
|
verbose = verbose,
|
||||||
value = deserialize(exerciseArgument),
|
value = deserialize(exerciseArgument),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@ -272,7 +274,7 @@ private[events] trait EventsTable {
|
|||||||
failureContext = s"attempting to deserialize persisted exercise result to value",
|
failureContext = s"attempting to deserialize persisted exercise result to value",
|
||||||
LfEngineToApi
|
LfEngineToApi
|
||||||
.lfVersionedValueToApiValue(
|
.lfVersionedValueToApiValue(
|
||||||
verbose = true,
|
verbose = verbose,
|
||||||
value = deserialize(key),
|
value = deserialize(key),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -10,7 +10,7 @@ import com.digitalasset.platform.store.Conversions._
|
|||||||
|
|
||||||
private[events] trait EventsTableFlatEvents { this: EventsTable =>
|
private[events] trait EventsTableFlatEvents { this: EventsTable =>
|
||||||
|
|
||||||
private val createdFlatEventParser: RowParser[Entry[Event]] =
|
private def createdFlatEventParser(verbose: Boolean): RowParser[Entry[Event]] =
|
||||||
createdEventRow map {
|
createdEventRow map {
|
||||||
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ createArgument ~ createSignatories ~ createObservers ~ createAgreementText ~ createKeyValue =>
|
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ createArgument ~ createSignatories ~ createObservers ~ createAgreementText ~ createKeyValue =>
|
||||||
Entry(
|
Entry(
|
||||||
@ -32,6 +32,7 @@ private[events] trait EventsTableFlatEvents { this: EventsTable =>
|
|||||||
createAgreementText = createAgreementText,
|
createAgreementText = createAgreementText,
|
||||||
createKeyValue = createKeyValue,
|
createKeyValue = createKeyValue,
|
||||||
eventWitnesses = eventWitnesses,
|
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 =
|
private val selectColumns =
|
||||||
Seq(
|
Seq(
|
||||||
|
@ -9,7 +9,7 @@ import com.digitalasset.ledger.api.v1.transaction.TreeEvent
|
|||||||
|
|
||||||
private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
||||||
|
|
||||||
private val createdTreeEventParser: RowParser[Entry[TreeEvent]] =
|
private def createdTreeEventParser(verbose: Boolean): RowParser[Entry[TreeEvent]] =
|
||||||
createdEventRow map {
|
createdEventRow map {
|
||||||
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ createArgument ~ createSignatories ~ createObservers ~ createAgreementText ~ createKeyValue =>
|
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ createArgument ~ createSignatories ~ createObservers ~ createAgreementText ~ createKeyValue =>
|
||||||
Entry(
|
Entry(
|
||||||
@ -31,13 +31,14 @@ private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
|||||||
createAgreementText = createAgreementText,
|
createAgreementText = createAgreementText,
|
||||||
createKeyValue = createKeyValue,
|
createKeyValue = createKeyValue,
|
||||||
eventWitnesses = eventWitnesses,
|
eventWitnesses = eventWitnesses,
|
||||||
|
verbose = verbose,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val exercisedTreeEventParser: RowParser[Entry[TreeEvent]] =
|
private def exercisedTreeEventParser(verbose: Boolean): RowParser[Entry[TreeEvent]] =
|
||||||
exercisedEventRow map {
|
exercisedEventRow map {
|
||||||
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ exerciseConsuming ~ exerciseChoice ~ exerciseArgument ~ exerciseResult ~ exerciseActors ~ exerciseChildEventIds =>
|
case eventOffset ~ transactionId ~ eventId ~ contractId ~ ledgerEffectiveTime ~ templatePackageId ~ templateName ~ commandId ~ workflowId ~ eventWitnesses ~ exerciseConsuming ~ exerciseChoice ~ exerciseArgument ~ exerciseResult ~ exerciseActors ~ exerciseChildEventIds =>
|
||||||
Entry(
|
Entry(
|
||||||
@ -60,14 +61,21 @@ private[events] trait EventsTableTreeEvents { this: EventsTable =>
|
|||||||
exerciseActors = exerciseActors,
|
exerciseActors = exerciseActors,
|
||||||
exerciseChildEventIds = exerciseChildEventIds,
|
exerciseChildEventIds = exerciseChildEventIds,
|
||||||
eventWitnesses = eventWitnesses,
|
eventWitnesses = eventWitnesses,
|
||||||
|
verbose = verbose,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val treeEventParser
|
private val verboseTreeEventParser: RowParser[Entry[TreeEvent]] =
|
||||||
: RowParser[Entry[TreeEvent]] = createdTreeEventParser | exercisedTreeEventParser
|
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(
|
def prepareLookupTransactionTreeById(
|
||||||
transactionId: TransactionId,
|
transactionId: TransactionId,
|
||||||
|
@ -30,7 +30,7 @@ private[dao] object TransactionsReader {
|
|||||||
description = "lookup_flat_transaction_by_id",
|
description = "lookup_flat_transaction_by_id",
|
||||||
extraLog = Some(s"tx: $transactionId, parties = ${requestingParties.mkString(", ")}"),
|
extraLog = Some(s"tx: $transactionId, parties = ${requestingParties.mkString(", ")}"),
|
||||||
) { implicit connection =>
|
) { implicit connection =>
|
||||||
query.as(EventsTable.flatEventParser.*)
|
query.as(EventsTable.flatEventParser(verbose = true).*)
|
||||||
}
|
}
|
||||||
.map(EventsTable.Entry.toGetFlatTransactionResponse)(executionContext)
|
.map(EventsTable.Entry.toGetFlatTransactionResponse)(executionContext)
|
||||||
}
|
}
|
||||||
@ -45,10 +45,11 @@ private[dao] object TransactionsReader {
|
|||||||
description = "lookup_transaction_tree_by_id",
|
description = "lookup_transaction_tree_by_id",
|
||||||
extraLog = Some(s"tx: $transactionId, parties = ${requestingParties.mkString(", ")}"),
|
extraLog = Some(s"tx: $transactionId, parties = ${requestingParties.mkString(", ")}"),
|
||||||
) { implicit connection =>
|
) { implicit connection =>
|
||||||
query.as(EventsTable.treeEventParser.*)
|
query.as(EventsTable.treeEventParser(verbose = true).*)
|
||||||
}
|
}
|
||||||
.map(EventsTable.Entry.toTransactionTree)(executionContext)
|
.map(EventsTable.Entry.toTransactionTree)(executionContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user