setTransactionMetadata initializes and sets the required metadata for a transaction. calculates the transaction hash, and sets the precise amount based on the transaction's precision. Parameters: - transaction *model.Transaction: The transaction for which to set metadata.
(transaction *model.Transaction)
| 2021 | // Parameters: |
| 2022 | // - transaction *model.Transaction: The transaction for which to set metadata. |
| 2023 | func setTransactionMetadata(transaction *model.Transaction) { |
| 2024 | transaction.CreatedAt = time.Now() |
| 2025 | if transaction.EffectiveDate == nil { |
| 2026 | transaction.EffectiveDate = &transaction.CreatedAt |
| 2027 | } |
| 2028 | transaction.Hash = transaction.HashTxn() |
| 2029 | transaction.PreciseAmount = model.ApplyPrecision(transaction) |
| 2030 | if transaction.TransactionID == "" { |
| 2031 | transaction.TransactionID = model.GenerateUUIDWithSuffix("txn") |
| 2032 | } |
| 2033 | if transaction.Rate == 0 { |
| 2034 | transaction.Rate = 1 |
| 2035 | } |
| 2036 | |
| 2037 | // Initialize metadata if it doesn't exist |
| 2038 | if transaction.MetaData == nil { |
| 2039 | transaction.MetaData = make(map[string]interface{}) |
| 2040 | } |
| 2041 | |
| 2042 | // Set inflight flag in metadata if the transaction is inflight |
| 2043 | //maybe move to their respective columns in the db later |
| 2044 | if transaction.Inflight { |
| 2045 | transaction.MetaData["inflight"] = true |
| 2046 | } |
| 2047 | if transaction.Atomic { |
| 2048 | transaction.MetaData["atomic"] = true |
| 2049 | } |
| 2050 | if transaction.AllowOverdraft { |
| 2051 | transaction.MetaData["allow_overdraft"] = true |
| 2052 | } |
| 2053 | } |
| 2054 | |
| 2055 | // createQueueCopy creates a new copy of a transaction specifically for queueing. |
| 2056 | // It generates new identifiers and maintains the relationship with the original transaction. |