public async ValueTask <(string user_id, JsonStatus status, Error error)> LikeAsync(string id, LikesEntry like) { return(await this.likes_comp.LikeAsync(id, like)); }
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); } }