Example #1
0
        public void AddBalanceUpdate(string @delegate, int type, int level, long amount, int slots)
        {
            RunIsolatedDb(db =>
            {
                var d = db.Delegates.FirstOrDefault(o => o.Address == @delegate);
                if (d == null)
                {
                    d = new Delegate {
                        Address = @delegate
                    };
                    db.Delegates.Add(d);
                }

                var d_id = d.Id;
                var q    =
                    db.BalanceUpdates.Where(o => o.DelegateId == d_id && o.Type == type && o.Level == level);
                //var sqlQuery = q.ToSql();
                if (q.Any())
                {
                    return;
                }

                db.BalanceUpdates.Add(new BalanceUpdate
                {
                    Delegate = d,
                    Type     = type,
                    Amount   = amount,
                    Level    = level,
                    Slots    = slots
                });

                db.SaveChanges();
            });
        }
Example #2
0
        public Proposal AddProposal(string hash, string addr, int votingPeriod)
        {
            return(RunIsolatedDb(db =>
            {
                var d = db.Delegates.FirstOrDefault(o => o.Address == addr);
                if (d == null)
                {
                    d = new Delegate {
                        Address = addr
                    };
                    db.Delegates.Add(d);
                }

                var p = new Proposal
                {
                    Delegate = d,
                    Period = votingPeriod,
                    Hash = hash,
                    Name = hash.Substring(0, 7) + "…" + hash.Substring(hash.Length - 5)
                };
                db.Proposals.Add(p);
                db.SaveChanges();
                return p;
            }));
        }
Example #3
0
        public void UpdateDelegateAccured(string addr, int cycle, long accured)
        {
            RunIsolatedDb(db =>
            {
                var d = db.Delegates.FirstOrDefault(o => o.Address == addr);
                if (d == null)
                {
                    d = new Delegate {
                        Address = addr
                    };
                    db.Delegates.Add(d);
                }

                var dr = db.DelegateRewards.FirstOrDefault(o => o.Cycle == cycle && o.DelegateId == d.Id);
                if (dr == null)
                {
                    dr = new DelegateRewards {
                        Cycle = cycle
                    };
                    dr.Delegate = d;
                    db.DelegateRewards.Add(dr);
                }

                dr.Accured = accured;
                db.SaveChanges();
            });
        }
Example #4
0
        internal void AddDelegate(string addr, string name)
        {
            var d = new Delegate
            {
                Address = addr,
                Name    = name
            };

            lock (_dbLock)
            {
                _db.Add(d);
                _db.SaveChanges();
            }
        }
Example #5
0
        internal void SetDelegateName(string addr, string name)
        {
            lock (_dbLock)
            {
                var d = _db.Delegates.FirstOrDefault(o => o.Address == addr);
                if (d == null)
                {
                    d = new Delegate {
                        Address = addr
                    };
                    _db.Delegates.Add(d);
                }

                d.Name = name;
                _db.SaveChanges();
            }
        }
Example #6
0
        public Delegate GetOrCreateDelegate(string addr)
        {
            lock (_dbLock)
            {
                var d = _db.Delegates.FirstOrDefault(o => o.Address == addr);
                if (d == null)
                {
                    d = new Delegate {
                        Address = addr
                    };
                    _db.Delegates.Add(d);
                    _db.SaveChanges();
                }

                return(d);
            }
        }
Example #7
0
        public void SaveBakingEndorsingRights(BakingRights[] br, EndorsingRights[] er)
        {
            RunIsolatedDb(db =>
            {
                if (db.BakingRights.Any(o => o.Level == br[0].level))
                {
                    return;
                }
                var delegates = db.Delegates.Where(o => o.Address != null).ToList()
                                .ToDictionary(o => o.Address, o => o);
                Func <string, Delegate> getDelegate = addr =>
                {
                    if (delegates.ContainsKey(addr))
                    {
                        return(delegates[addr]);
                    }
                    var d = new Delegate {
                        Address = addr
                    };
                    db.Delegates.Add(d);
                    delegates[addr] = d;
                    return(d);
                };
                foreach (var b in br)
                {
                    db.BakingRights.Add(new Domain.BakingRights
                    {
                        Delegate = getDelegate(b.@delegate),
                        Level    = b.level
                    });
                }

                foreach (var e in er)
                {
                    db.EndorsingRights.Add(new Domain.EndorsingRights
                    {
                        Delegate  = getDelegate(e.@delegate),
                        Level     = e.level,
                        SlotCount = e.slots.Count
                    });
                }

                db.SaveChanges();
            });
        }
Example #8
0
 internal void UpdateDelegate(Delegate d)
 {
     lock (_dbLock)
         _db.SaveChanges();
 }