Page History
...
Code Block | ||
---|---|---|
| ||
namespace SearchApiApp.Actors { public class GraphElementIdenty { public string Alice { get; set; } public string Name { get; set; } } public class GraphEvent { public string Action { get; set; } // Create , Relation, Reset public string Alice { get; set; } // AliceName public string Name { get; set; } public GraphElementIdenty From { get; set; } public GraphElementIdenty To { get; set; } } public class GraphEventActor : ReceiveActor { private readonly ILoggingAdapter logger = Context.GetLogger(); private readonly GraphEngine graphEngine; public GraphEventActor(GraphEngine _graphEngine) { logger.Info($"Create GraphEventActor:{Context.Self.Path.Name}"); graphEngine = _graphEngine; ReceiveAsync<GraphEvent>(async graphEvent => { var cypher = await _graphEngine.GetCypher(); switch (graphEvent.Action) { case "Reset": { await _graphEngine.RemoveAll(); } break; case "Create": { await cypher.Write .Create($"(alice:{graphEvent.Alice} {{name:'{graphEvent.Name}'}})") .ExecuteWithoutResultsAsync(); } break; case "Relation": { await cypher.Write .Match($"(a:{graphEvent.From.Alice}),(b:{graphEvent.To.Alice})") .Where($"a.name = '{graphEvent.From.Name}' AND b.name = '{graphEvent.To.Name}'") .Create($"(a)-[r:{graphEvent.Name}]->(b)").ExecuteWithoutResultsAsync(); } break; } }); } } } |
...