queries.rs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. use chrono::{DateTime, Utc};
  2. use get_routes::handler;
  3. use heed3::RoTxn;
  4. use helix_db::helix_engine::vector_core::vector::HVector;
  5. use helix_db::{
  6. exclude_field, field_remapping, identifier_remapping, traversal_remapping, value_remapping,
  7. };
  8. use helix_db::{
  9. helix_engine::graph_core::ops::{
  10. bm25::search_bm25::SearchBM25Adapter,
  11. g::G,
  12. in_::{in_::InAdapter, in_e::InEdgesAdapter, to_n::ToNAdapter, to_v::ToVAdapter},
  13. out::{
  14. from_n::FromNAdapter, from_v::FromVAdapter, out::OutAdapter, out_e::OutEdgesAdapter,
  15. },
  16. source::{
  17. add_e::{AddEAdapter, EdgeType},
  18. add_n::AddNAdapter,
  19. e_from_id::EFromIdAdapter,
  20. e_from_type::EFromTypeAdapter,
  21. n_from_id::NFromIdAdapter,
  22. n_from_index::NFromIndexAdapter,
  23. n_from_type::NFromTypeAdapter,
  24. },
  25. tr_val::{Traversable, TraversalVal},
  26. util::{
  27. dedup::DedupAdapter, drop::Drop, filter_mut::FilterMut, filter_ref::FilterRefAdapter,
  28. map::MapAdapter, paths::ShortestPathAdapter, props::PropsAdapter, range::RangeAdapter,
  29. update::UpdateAdapter,
  30. },
  31. vectors::{
  32. brute_force_search::BruteForceSearchVAdapter, insert::InsertVAdapter,
  33. search::SearchVAdapter,
  34. },
  35. },
  36. helix_engine::types::GraphError,
  37. helix_gateway::router::router::HandlerInput,
  38. node_matches, props,
  39. protocol::count::Count,
  40. protocol::remapping::{RemappingMap, ResponseRemapping},
  41. protocol::response::Response,
  42. protocol::{
  43. filterable::Filterable, id::ID, remapping::Remapping, return_values::ReturnValue,
  44. value::Value,
  45. },
  46. };
  47. use sonic_rs::{Deserialize, Serialize};
  48. use std::cell::RefCell;
  49. use std::collections::{HashMap, HashSet};
  50. use std::sync::Arc;
  51. use std::time::Instant;
  52. pub struct User {
  53. pub name: String,
  54. pub age: i32,
  55. }
  56. #[handler]
  57. pub fn GetOrder(input: &HandlerInput, response: &mut Response) -> Result<(), GraphError> {
  58. let mut remapping_vals = RemappingMap::new();
  59. let db = Arc::clone(&input.graph.storage);
  60. let txn = db.graph_env.read_txn().unwrap();
  61. let userByAge = G::new(Arc::clone(&db), &txn)
  62. .n_from_type("User")
  63. .order_by_desc("age")?;
  64. let userByName = G::new(Arc::clone(&db), &txn)
  65. .n_from_type("User")
  66. .order_by_asc("name")?;
  67. let mut return_vals: HashMap<String, ReturnValue> = HashMap::new();
  68. return_vals.insert(
  69. "userByAge".to_string(),
  70. ReturnValue::from_traversal_value_array_with_mixin(
  71. userByAge.clone(),
  72. remapping_vals.borrow_mut(),
  73. ),
  74. );
  75. return_vals.insert(
  76. "userByName".to_string(),
  77. ReturnValue::from_traversal_value_array_with_mixin(
  78. userByName.clone(),
  79. remapping_vals.borrow_mut(),
  80. ),
  81. );
  82. txn.commit().unwrap();
  83. response.body = sonic_rs::to_vec(&return_vals).unwrap();
  84. Ok(())
  85. }