예제 #1
0
        private TransactionData Convert(TransactionOutputData source)
        {
            var target = new TransactionData
            {
                OutPoint                     = source.OutPoint,
                Address                      = source.Address,
                Id                           = source.Id ?? source.OutPoint.Hash,
                Amount                       = source.Amount ?? 0,
                IndexInTransaction           = source.Index,
                BlockHeight                  = source.BlockHeight,
                BlockHash                    = source.BlockHash,
                BlockIndex                   = source.BlockIndex,
                CreationTime                 = source.CreationTime,
                ScriptPubKey                 = source.ScriptPubKey ?? Script.Empty,
                IsPropagated                 = source.IsPropagated,
                IsCoinBase                   = source.IsCoinBase,
                IsCoinStake                  = source.IsCoinStake,
                IsColdCoinStake              = source.IsColdCoinStake,
                AccountIndex                 = source.AccountIndex,
                MerkleProof                  = source.MerkleProof,
                Hex                          = source.Hex,
                SpendingDetailsTransactionId = source.SpendingDetails?.TransactionId,
                SpendingDetailsBlockHeight   = source.SpendingDetails?.BlockHeight,
                SpendingDetailsBlockIndex    = source.SpendingDetails?.BlockIndex,
                SpendingDetailsIsCoinStake   = source.SpendingDetails?.IsCoinStake,
                SpendingDetailsCreationTime  = source.SpendingDetails?.CreationTime,
                SpendingDetailsPayments      = source.SpendingDetails?.Payments,
                SpendingDetailsHex           = source.SpendingDetails?.Hex
            };

            return(target);
        }
예제 #2
0
        public void InsertOrUpdate(TransactionOutputData item)
        {
            TransactionData insert = this.Convert(item);

            var sql = @$ "INSERT INTO TransactionData
                      (OutPoint, Address, Id, Amount, IndexInTransaction, BlockHeight, BlockHash, BlockIndex, CreationTime, ScriptPubKey, IsPropagated, IsCoinBase, IsCoinStake, IsColdCoinStake, AccountIndex, MerkleProof, Hex, SpendingDetailsTransactionId, SpendingDetailsBlockHeight, SpendingDetailsBlockIndex, SpendingDetailsIsCoinStake, SpendingDetailsCreationTime, SpendingDetailsPayments, SpendingDetailsHex)
                      VALUES (@OutPoint, @Address, @Id, @Amount, @IndexInTransaction, @BlockHeight, @BlockHash, @BlockIndex, @CreationTime, @ScriptPubKey, @IsPropagated, @IsCoinBase, @IsCoinStake, @IsColdCoinStake, @AccountIndex, @MerkleProof, @Hex, @SpendingDetailsTransactionId, @SpendingDetailsBlockHeight, @SpendingDetailsBlockIndex, @SpendingDetailsIsCoinStake, @SpendingDetailsCreationTime, @SpendingDetailsPayments, @SpendingDetailsHex)
                      ON CONFLICT(OutPoint) DO UPDATE SET
                      IndexInTransaction = @IndexInTransaction, BlockHeight = @BlockHeight, BlockHash = @BlockHash, BlockIndex = @BlockIndex, CreationTime = @CreationTime, IsPropagated = @IsPropagated, IsColdCoinStake = @IsColdCoinStake, AccountIndex = @AccountIndex, MerkleProof = @MerkleProof, Hex = @Hex, SpendingDetailsTransactionId = @SpendingDetailsTransactionId, SpendingDetailsBlockHeight = @SpendingDetailsBlockHeight, SpendingDetailsBlockIndex = @SpendingDetailsBlockIndex, SpendingDetailsIsCoinStake = @SpendingDetailsIsCoinStake, SpendingDetailsCreationTime = @SpendingDetailsCreationTime, SpendingDetailsPayments = @SpendingDetailsPayments, SpendingDetailsHex = @SpendingDetailsHex;";

            this.sqliteConnection.Execute(sql, insert);
        }
예제 #3
0
        public TransactionOutputData GetForOutput(OutPoint outPoint)
        {
            var trx = this.sqliteConnection.QueryFirstOrDefault <TransactionData>(
                "SELECT * FROM TransactionData WHERE OutPoint = @outPoint", new { outPoint });

            if (trx == null)
            {
                return(null);
            }

            TransactionOutputData ret = this.Convert(trx);

            return(ret);
        }
예제 #4
0
        public TransactionOutputData GetForOutput(OutPoint outPoint)
        {
            TransactionData trx = null;

            using var conn = this.GetDbConnection();
            trx            = conn.QueryFirstOrDefault <TransactionData>("SELECT * FROM TransactionData WHERE OutPoint = @outPoint", new { outPoint });

            if (trx == null)
            {
                return(null);
            }

            TransactionOutputData ret = this.Convert(trx);

            return(ret);
        }
예제 #5
0
        private TransactionOutputData Convert(TransactionData source)
        {
            var target = new TransactionOutputData
            {
                OutPoint        = source.OutPoint,
                Address         = source.Address,
                Id              = source.Id,
                Amount          = source.Amount,
                Index           = source.IndexInTransaction,
                BlockHeight     = source.BlockHeight,
                BlockIndex      = source.BlockIndex,
                BlockHash       = source.BlockHash,
                CreationTime    = source.CreationTime,
                ScriptPubKey    = source.ScriptPubKey,
                IsPropagated    = source.IsPropagated,
                IsCoinBase      = source.IsCoinBase,
                IsCoinStake     = source.IsCoinStake,
                IsColdCoinStake = source.IsColdCoinStake,
                AccountIndex    = source.AccountIndex,
                MerkleProof     = source.MerkleProof,
                Hex             = source.Hex
            };

            if (source.SpendingDetailsTransactionId != null)
            {
                target.SpendingDetails = new SpendingDetails
                {
                    TransactionId = source.SpendingDetailsTransactionId,
                    BlockHeight   = source.SpendingDetailsBlockHeight,
                    BlockIndex    = source.SpendingDetailsBlockIndex,
                    IsCoinStake   = source.SpendingDetailsIsCoinStake,
                    CreationTime  = source.SpendingDetailsCreationTime.Value,
                    Payments      = source.SpendingDetailsPayments,
                    Hex           = source.SpendingDetailsHex
                };
            }

            return(target);
        }
예제 #6
0
 public void InsertOrUpdate(TransactionOutputData item)
 {
     this.trxCol.Upsert(item);
 }