예제 #1
0
 public async ValueTask <(string user_id, JsonStatus status, Error error)> LikeAsync(string id, LikesEntry like)
 {
     return(await this.likes_comp.LikeAsync(id, like));
 }
예제 #2
0
        public async ValueTask <(string user_id, JsonStatus status, Error error)> LikeAsync(string id, LikesEntry like)
        {
            var(entry, succeed, error) = await this.context.FindOneByIDAsync(id);

            if (!succeed)
            {
                return(default(string), JsonStatus.EntryNotFound, error);
            }
            if (entry.LikerIDs.Contains(like.User.UUID) || entry.Likes.ToList().FirstOrDefault(i => i.User.UUID == like.User.UUID) != null)
            {
                (succeed, error) = await this.likes.DeleteAllByIDsAsync(id, like.User.UUID);

                if (!succeed)
                {
                    return(default(string), JsonStatus.LikesRemoveFailed, error);
                }
                (_, succeed, error) = await this.context.UpdateOneAsync(id, null, this.DefineLikersUpdate(like.User.UUID, false));

                if (!succeed)
                {
                    return(default(string), JsonStatus.LikesRemoveFailed, error);
                }
                return("deleted", JsonStatus.Succeed, Error.Empty);
            }
            else
            {
                (_, succeed, error) = await this.likes.InsertOneAsync(like);

                if (!succeed)
                {
                    return(default(string), JsonStatus.LikesAddFailed, error);
                }
                (_, succeed, error) = await this.context.UpdateOneAsync(id, null, this.DefineLikersUpdate(like.User.UUID));

                if (!succeed)
                {
                    return(default(string), JsonStatus.LikesAddFailed, error);
                }
                return(like.User.UUID, JsonStatus.Succeed, Error.Empty);
            }
        }