示例#1
0
        /// <summary>
        /// Создать ссылку
        /// </summary>
        /// <param name="linkValue"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public Link Create(string linkValue, Guid userId)
        {
            //ищем уже существующую
            var link = this._links.FindOneAndUpdate(
                l => l.Value == linkValue,
                Builders <Link> .Update.AddToSet(l => l.UsersIds, userId));

            if (link != null)
            {
                return(link);
            }

            //если не нашли, то создаем новую ссылку
            var counter = this._counters.FindOneAndUpdate(
                c => c.Type == "links",
                Builders <Counter> .Update.Inc(c => c.SequenceValue, 1));

            var addedLink = new Link
            {
                Value      = linkValue,
                HitCount   = 0,
                ShortValue = LinksHelper.GetShortValue(counter.SequenceValue),
                UsersIds   = new List <Guid> {
                    userId
                }
            };

            this._links.InsertOne(addedLink);

            return(addedLink);
        }
示例#2
0
        public void LinksHelper_GetShortValue()
        {
            var result = LinksHelper.GetShortValue(100);

            Assert.Equal("Be", result);
        }