Esempio n. 1
0
        public static void _modifyMovie(Movie tomodify)
        {
            NeoMovie newMovie = new NeoMovie(tomodify);

            _instance.Cypher
            .Match("(movie:Movie)")
            .Where((NeoMovie movie) => movie.Id == tomodify.Id)
            .Set("movie = {newMetadata}")
            .WithParam("newMetadata", newMovie)
            .ExecuteWithoutResults();
        }
Esempio n. 2
0
        private static Movie _readMovie(NeoMovie neo)
        {
            Movie add = new Movie(neo);

            var query = _instance.Cypher
                        .OptionalMatch("(actor:Actor)-[ACTS_IN]->(movie:Movie)")
                        .Where((NeoMovie movie) => movie.Id == add.Id)
                        .Return(actor => actor.As <Actor>())
                        .Results;

            foreach (Actor actor in query)
            {
                add.Actors.Add(actor);
            }

            var query2 = _instance.Cypher
                         .OptionalMatch("(director:Director)-[DIRECTED]->(movie:Movie)")
                         .Where((NeoMovie movie) => movie.Id == add.Id)
                         .Return(director => director.As <Director>())
                         .Results;

            foreach (Director director in query2)
            {
                add.Directors.Add(director);
            }

            var query3 = _instance.Cypher
                         .OptionalMatch("(writer:Writer)-[WROTE]->(movie:Movie)")
                         .Where((NeoMovie movie) => movie.Id == add.Id)
                         .Return(writer => writer.As <Writer>())
                         .Results;

            foreach (Writer writer in query3)
            {
                add.Writers.Add(writer);
            }

            var query4 = _instance.Cypher
                         .OptionalMatch("(movie:Movie)-[IS_GENRE]->(genre:Genre)")
                         .Where((NeoMovie movie) => movie.Id == add.Id)
                         .Return(genre => genre.As <Genre>())
                         .Results;

            foreach (Genre genre in query4)
            {
                add.Genres.Add(genre);
            }

            return(add);
        }
Esempio n. 3
0
        public static void _addMovie(Movie movie)
        {
            NeoMovie newMovie = new NeoMovie(movie);

            _instance.Cypher
            .Merge("(movie:Movie { Id: {id} })")
            .OnCreate()
            .Set("movie = {newMovie}")
            .WithParams(new
            {
                id = movie.Id,
                newMovie
            })
            .ExecuteWithoutResults();


            foreach (Actor newActor in movie.Actors)
            {
                _instance.Cypher
                .Merge("(actor:Actor { PersonId: {personId} })")
                .OnCreate()
                .Set("actor = {newActor}")
                .WithParams(new
                {
                    personId = newActor.PersonId,
                    newActor
                })
                .ExecuteWithoutResults();

                _instance.Cypher
                .Match("(foundMovie:Movie)", "(foundActor:Actor)")
                .Where((NeoMovie foundMovie) => foundMovie.Id == movie.Id)
                .AndWhere((Actor foundActor) => foundActor.PersonId == newActor.PersonId)
                .CreateUnique("(foundActor)-[:ACTS_IN]->(foundMovie)")
                .ExecuteWithoutResults();
            }

            foreach (Genre newGenre in movie.Genres)
            {
                _instance.Cypher
                .Merge("(genre:Genre { Id: {genreId} })")
                .OnCreate()
                .Set("genre = {newGenre}")
                .WithParams(new
                {
                    genreId = newGenre.Id,
                    newGenre
                })
                .ExecuteWithoutResults();

                _instance.Cypher
                .Match("(foundMovie:Movie)", "(foundGenre:Genre)")
                .Where((NeoMovie foundMovie) => foundMovie.Id == movie.Id)
                .AndWhere((Genre foundGenre) => foundGenre.Id == newGenre.Id)
                .CreateUnique("(foundMovie)-[:IS_GENRE]->(foundGenre)")
                .ExecuteWithoutResults();
            }

            foreach (Director newDirector in movie.Directors)
            {
                _instance.Cypher
                .Merge("(director:Director { PersonId: {personId} })")
                .OnCreate()
                .Set("director = {newDirector}")
                .WithParams(new
                {
                    personId = newDirector.PersonId,
                    newDirector
                })
                .ExecuteWithoutResults();

                _instance.Cypher
                .Match("(foundMovie:Movie)", "(foundDirector:Director)")
                .Where((NeoMovie foundMovie) => foundMovie.Id == movie.Id)
                .AndWhere((Actor foundDirector) => foundDirector.PersonId == newDirector.PersonId)
                .CreateUnique("(foundDirector)-[:DIRECTED]->(foundMovie)")
                .ExecuteWithoutResults();
            }

            foreach (Writer newWriter in movie.Writers)
            {
                _instance.Cypher
                .Merge("(writer:Writer { PersonId: {personId} })")
                .OnCreate()
                .Set("writer = {newWriter}")
                .WithParams(new
                {
                    personId = newWriter.PersonId,
                    newWriter
                })
                .ExecuteWithoutResults();

                _instance.Cypher
                .Match("(foundMovie:Movie)", "(foundWriter:Writer)")
                .Where((NeoMovie foundMovie) => foundMovie.Id == movie.Id)
                .AndWhere((Writer foundWriter) => foundWriter.PersonId == newWriter.PersonId)
                .CreateUnique("(foundWriter)-[:WROTE]->(foundMovie)")
                .ExecuteWithoutResults();
            }
        }