Esempio n. 1
0
        // Creates relationship between post and user that says if user liked or disliked post
        public void CreateLikedDislikedRelationship(Liked liked = null, Disliked disliked = null)
        {
            // These queries will create Like or Dislike relationship between user and post
            // But if there is already like or dislike relationship between same user and post
            // It will be deleted and new one will be created (if disliked and there is like relationship, like will be deleted and only disliked will exist)
            // Also because of merge there will always be one like or one dislike relationship
            if (liked != null)
            {
                var query = client.Cypher
                            .Match("(post:Post)", "(user:User)")
                            .OptionalMatch("(user)-[d:DISLIKED]->(post)")
                            .With("post,user,d")
                            .Where((Post post) => post.id == liked.post.id)
                            .AndWhere((User user) => user.username == liked.user.username)
                            .Merge("(user)-[l:LIKED]->(post)")
                            .OnCreate()
                            .Set("l.time = {time}")
                            .WithParam("time", liked.time)
                            .DetachDelete("d");

                query.ExecuteWithoutResults();
            }
            else
            {
                var query = client.Cypher
                            .Match("(post:Post)", "(user:User)")
                            .OptionalMatch("(user)-[l:LIKED]->(post)")
                            .With("post,user,l")
                            .Where((Post post) => post.id == disliked.post.id)
                            .AndWhere((User user) => user.username == disliked.user.username)
                            .Merge("(user)-[d:DISLIKED]->(post)")
                            .OnCreate()
                            .Set("d.time = {time}")
                            .WithParam("time", disliked.time)
                            .DetachDelete("l");

                query.ExecuteWithoutResults();
            }
        }
 public override string ToString()
 {
     return($" {LovedText}/{Loved.Serialize()}/{LikedText}/{Liked.Serialize()}/{DislikedText}/{Disliked.Serialize()}"
            + $"/{HatedText}/{Hated.Serialize()}/{NeutralText}/{Neutral.Serialize()}/ ");
 }