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(); }
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); }
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(); } }