file44.hx 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. // CRUD Operations
  2. // Create Queries
  3. // User
  4. QUERY createUser (phone: String, email: String, bio: String, age: I32, location: String, profilePic: String, color: String, elo: F64, sender: String) =>
  5. user <- AddN<User>({phone: phone, email: email, bio: bio, age: age, location: location, profilePic: profilePic, color: color, elo: elo, sender: sender})
  6. RETURN user
  7. QUERY createMetadata (user_id: ID, created_ts: Date, last_updated_ts: Date, archetype: Boolean, referredBy: String) =>
  8. metadata <- AddN<Metadata>({created_ts: created_ts, last_updated_ts: last_updated_ts, archetype: archetype, referredBy: referredBy})
  9. user <- N<User>(user_id)
  10. user_metadata <- AddE<User_to_Metadata>({created_ts: created_ts, last_updated_ts: last_updated_ts})::From(user)::To(metadata)
  11. RETURN metadata
  12. QUERY createName (user_id: ID, first: String, last: String) =>
  13. name <- AddN<Name>({first: first, last: last})
  14. user <- N<User>(user_id)
  15. user_name <- AddE<User_to_Name>({first: first})::From(user)::To(name)
  16. RETURN name
  17. QUERY createMetadataNotes (user_id: ID, aiScore: I64, userScore: I64, text: String, flagged: Boolean) =>
  18. user_metadata_notes <- AddN<MetadataNotes>({aiScore: aiScore, userScore: userScore, text: text, flagged: flagged})
  19. user <- N<User>(user_id)
  20. metadata <- user::Out<User_to_Metadata>
  21. metadata_metadata_notes <- AddE<Metadata_to_MetadataNotes>()::From(metadata)::To(user_metadata_notes)
  22. RETURN user_metadata_notes
  23. // Linkedin
  24. QUERY createLinkedinInfo (user_id: ID, url: String) =>
  25. linkedin_info <- AddN<LinkedinInfo>({url: url})
  26. user <- N<User>(user_id)
  27. metadata <- user::Out<User_to_Metadata>
  28. metadata_linkedin_info <- AddE<Metadata_to_LinkedinInfo>({url: url})::From(metadata)::To(linkedin_info)
  29. RETURN linkedin_info
  30. QUERY createLinkedinContent (user_id: ID, name: String, email: String, linkedin_url: String, full_name: String, first_name: String, last_name: String, public_id: String, profile_picture: String, background_picture: String, current_position: String, summary: String, industry: String, region: String, country: String, country_code: String, connection_count: I64, follower_count: I64, languages: [String], skills: [String], certifications: [String], position_start_date: String, position_end_date: String, extracted_at: Date, data_source: String) =>
  31. linkedin_content <- AddN<LinkedinContent>({name: name, email: email, linkedin_url: linkedin_url, full_name: full_name, first_name: first_name, last_name: last_name, public_id: public_id, profile_picture: profile_picture, background_picture: background_picture, current_position: current_position, summary: summary, industry: industry, region: region, country: country, country_code: country_code, connection_count: connection_count, follower_count: follower_count, languages: languages, skills: skills, certifications: certifications, position_start_date: position_start_date, position_end_date: position_end_date, extracted_at: extracted_at, data_source: data_source})
  32. user <- N<User>(user_id)
  33. metadata <- user::Out<User_to_Metadata>
  34. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  35. linkedin_content_linkedin_info <- AddE<LinkedinInfo_to_LinkedinContent>()::From(linkedin_info)::To(linkedin_content)
  36. RETURN linkedin_content
  37. QUERY createLinkedinWebsite (user_id: ID, url: String, category: String) =>
  38. linkedin_website <- AddN<LinkedinWebsite>({url: url, category: category})
  39. user <- N<User>(user_id)
  40. metadata <- user::Out<User_to_Metadata>
  41. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  42. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  43. linkedin_content_linkedin_website <- AddE<LinkedinContent_to_LinkedinWebsite>()::From(linkedin_content)::To(linkedin_website)
  44. RETURN linkedin_website
  45. QUERY createLinkedinExperience (user_id: ID, company: String, title: String, field: String, date_start: String, date_end: String, location: String, description: String) =>
  46. linkedin_experience <- AddN<LinkedinExperience>({company: company, title: title, field: field, date_start: date_start, date_end: date_end, location: location, description: description})
  47. user <- N<User>(user_id)
  48. metadata <- user::Out<User_to_Metadata>
  49. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  50. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  51. linkedin_content_linkedin_experience <- AddE<LinkedinContent_to_LinkedinExperience>()::From(linkedin_content)::To(linkedin_experience)
  52. RETURN linkedin_experience
  53. QUERY createLinkedinCompany (user_id: ID, name: String, domain: String, industry: String, staff_count: I64, founded: I64, website: String, headquarters: String, description: String, specialties: [String]) =>
  54. linkedin_company <- AddN<LinkedinCompany>({name: name, domain: domain, industry: industry, staff_count: staff_count, founded: founded, website: website, headquarters: headquarters, description: description, specialties: specialties})
  55. user <- N<User>(user_id)
  56. metadata <- user::Out<User_to_Metadata>
  57. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  58. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  59. linkedin_content_linkedin_company <- AddE<LinkedinContent_to_LinkedinCompany>()::From(linkedin_content)::To(linkedin_company)
  60. RETURN linkedin_company
  61. QUERY addLinkedinCompany (user_id: ID, linkedin_company_id: ID) =>
  62. user <- N<User>(user_id)
  63. metadata <- user::Out<User_to_Metadata>
  64. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  65. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  66. linkedin_company <- N<LinkedinCompany>(linkedin_company_id)
  67. linkedin_content_linkedin_company <- AddE<LinkedinContent_to_LinkedinCompany>()::From(linkedin_content)::To(linkedin_company)
  68. RETURN linkedin_content_linkedin_company
  69. QUERY createLinkedinEducation (user_id: ID, school: String, field: String, title: String, date_start: String, date_end: String, location: String, description: String) =>
  70. linkedin_education <- AddN<LinkedinEducation>({school: school, field: field, title: title, date_start: date_start, date_end: date_end, location: location, description: description})
  71. user <- N<User>(user_id)
  72. metadata <- user::Out<User_to_Metadata>
  73. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  74. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  75. linkedin_content_linkedin_education <- AddE<LinkedinContent_to_LinkedinEducation>()::From(linkedin_content)::To(linkedin_education)
  76. RETURN linkedin_education
  77. // Warm Connect
  78. QUERY createWarmConnect (user_id: ID, name: String, email: String) =>
  79. warm_connect <- AddN<WarmConnect>({name: name, email: email})
  80. user <- N<User>(user_id)
  81. metadata <- user::Out<User_to_Metadata>
  82. metadata_to_warm_connect <- AddE<Metadata_to_WarmConnect>()::From(metadata)::To(warm_connect)
  83. RETURN warm_connect
  84. QUERY addWarmConnect (user_id: ID, warm_connect_id: ID) =>
  85. user <- N<User>(user_id)
  86. metadata <- user::Out<User_to_Metadata>
  87. warm_connect <- N<WarmConnect>(warm_connect_id)
  88. metadata_to_warm_connect <- AddE<Metadata_to_WarmConnect>()::From(metadata)::To(warm_connect)
  89. RETURN warm_connect
  90. QUERY createUserBio (user_id: ID, bio: [F64]) =>
  91. user_bio <- AddV<EmbeddedBio>(bio)
  92. user <- N<User>(user_id)
  93. user_user_bio <- AddE<User_to_EmbeddedBio>()::From(user)::To(user_bio)
  94. RETURN user_bio
  95. QUERY addCurrentCompany (user_id: ID, linkedin_company_id: ID) =>
  96. user <- N<User>(user_id)
  97. metadata <- user::Out<User_to_Metadata>
  98. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  99. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  100. linkedin_company <- N<LinkedinCompany>(linkedin_company_id)
  101. linkedin_content_current_company <- AddE<LinkedinContent_to_CurrentCompany>()::From(linkedin_content)::To(linkedin_company)
  102. RETURN linkedin_content_current_company
  103. // Read Queries
  104. // User
  105. #[mcp]
  106. QUERY getUser (user_id: ID) =>
  107. user <- N<User>(user_id)
  108. RETURN user
  109. #[mcp]
  110. QUERY getUserName (user_id: ID) =>
  111. user <- N<User>(user_id)
  112. name <- user::Out<User_to_Name>
  113. RETURN name
  114. #[mcp]
  115. QUERY getAllUsers() =>
  116. users <- N<User>
  117. RETURN users
  118. #[mcp]
  119. QUERY getEmbedUserBio (user_id: ID) =>
  120. user <- N<User>(user_id)
  121. user_bio <- user::Out<User_to_EmbeddedBio>
  122. RETURN user_bio
  123. #[mcp]
  124. QUERY getUsersByReferrer(referrer: String) =>
  125. metadata <- N<Metadata>::WHERE(_::{referredBy}::EQ(referrer))
  126. users <- metadata::In<User_to_Metadata>
  127. RETURN users
  128. #[mcp]
  129. QUERY searchUsersByBio(bio_vector: [F64], k: I64) =>
  130. similar_bios <- SearchV<EmbeddedBio>(bio_vector, k)
  131. users <- similar_bios::In<User_to_EmbeddedBio>
  132. RETURN users
  133. // Metadata
  134. #[mcp]
  135. QUERY getUserMetadata (user_id: ID) =>
  136. user <- N<User>(user_id)
  137. metadata <- user::Out<User_to_Metadata>
  138. RETURN metadata
  139. #[mcp]
  140. QUERY getUserMetadataNotes (user_id: ID) =>
  141. user <- N<User>(user_id)
  142. metadata <- user::Out<User_to_Metadata>
  143. metadata_notes <- metadata::Out<Metadata_to_MetadataNotes>
  144. RETURN metadata_notes
  145. // Linkedin
  146. #[mcp]
  147. QUERY getUserLinkedinInfo (user_id: ID) =>
  148. user <- N<User>(user_id)
  149. metadata <- user::Out<User_to_Metadata>
  150. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  151. RETURN linkedin_info
  152. #[mcp]
  153. QUERY getUserLinkedinContent (user_id: ID) =>
  154. user <- N<User>(user_id)
  155. metadata <- user::Out<User_to_Metadata>
  156. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  157. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  158. RETURN linkedin_content
  159. #[mcp]
  160. QUERY getUserLinkedinWebsites (user_id: ID) =>
  161. user <- N<User>(user_id)
  162. metadata <- user::Out<User_to_Metadata>
  163. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  164. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  165. linkedin_websites <- linkedin_content::Out<LinkedinContent_to_LinkedinWebsite>
  166. RETURN linkedin_websites
  167. #[mcp]
  168. QUERY getUserLinkedinExperiences (user_id: ID) =>
  169. user <- N<User>(user_id)
  170. metadata <- user::Out<User_to_Metadata>
  171. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  172. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  173. linkedin_experiences <- linkedin_content::Out<LinkedinContent_to_LinkedinExperience>
  174. RETURN linkedin_experiences
  175. #[mcp]
  176. QUERY getUserLinkedinCompanies (user_id: ID) =>
  177. user <- N<User>(user_id)
  178. metadata <- user::Out<User_to_Metadata>
  179. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  180. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  181. linkedin_companies <- linkedin_content::Out<LinkedinContent_to_LinkedinCompany>
  182. RETURN linkedin_companies
  183. #[mcp]
  184. QUERY getUserLinkedinEducations (user_id: ID) =>
  185. user <- N<User>(user_id)
  186. metadata <- user::Out<User_to_Metadata>
  187. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  188. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  189. linkedin_educations <- linkedin_content::Out<LinkedinContent_to_LinkedinEducation>
  190. RETURN linkedin_educations
  191. #[mcp]
  192. QUERY getUserLinkedinCurrentCompany (user_id: ID) =>
  193. user <- N<User>(user_id)
  194. metadata <- user::Out<User_to_Metadata>
  195. linkedin_info <- metadata::Out<Metadata_to_LinkedinInfo>
  196. linkedin_content <- linkedin_info::Out<LinkedinInfo_to_LinkedinContent>
  197. current_company <- linkedin_content::Out<LinkedinContent_to_CurrentCompany>
  198. RETURN current_company
  199. #[mcp]
  200. QUERY findLinkedinCompany (name: String, industry: String, founded: I64) =>
  201. linkedin_company <- N<LinkedinCompany>::WHERE(
  202. AND(
  203. _::{name}::EQ(name),
  204. _::{industry}::EQ(industry),
  205. _::{founded}::EQ(founded)
  206. )
  207. )
  208. RETURN linkedin_company
  209. // Warm Connect
  210. #[mcp]
  211. QUERY getUserWarmConnects (user_id: ID) =>
  212. user <- N<User>(user_id)
  213. metadata <- user::Out<User_to_Metadata>
  214. warm_connects <- metadata::Out<Metadata_to_WarmConnect>
  215. RETURN warm_connects
  216. #[mcp]
  217. QUERY findWarmConnect (name: String, email: String) =>
  218. warm_connect <- N<WarmConnect>::WHERE(
  219. AND(
  220. _::{name}::EQ(name),
  221. _::{email}::EQ(email)
  222. )
  223. )
  224. RETURN warm_connect
  225. // Update Queries
  226. // User
  227. QUERY updateUser (user_id: ID, phone: String, email: String, bio: String, age: I32, location: String, profilePic: String, color: String, elo: F64, sender: String) =>
  228. user <- N<User>(user_id)::UPDATE(
  229. {phone: phone, email: email, bio: bio, age: age, location: location, profilePic: profilePic, color: color, elo: elo, sender: sender}
  230. )
  231. RETURN user
  232. QUERY updateUserName (name_id: ID, first: String, last: String) =>
  233. name <- N<Name>(name_id)::UPDATE(
  234. {first: first, last: last}
  235. )
  236. RETURN name
  237. // Metadata
  238. QUERY updateMetadata (metadata_id: ID, created_ts: Date, last_updated_ts: Date, archetype: Boolean, referredBy: String) =>
  239. metadata <- N<Metadata>(metadata_id)::UPDATE(
  240. {created_ts: created_ts, last_updated_ts: last_updated_ts, archetype: archetype, referredBy: referredBy}
  241. )
  242. RETURN metadata
  243. QUERY updateMetadataNotes (metadata_notes_id: ID, aiScore: I64, userScore: I64, text: String, flagged: Boolean) =>
  244. metadata_notes <- N<MetadataNotes>(metadata_notes_id)::UPDATE(
  245. {aiScore: aiScore, userScore: userScore, text: text, flagged: flagged}
  246. )
  247. RETURN metadata_notes
  248. // Linkedin
  249. QUERY updateLinkedinInfo (linkedin_info_id: ID, url: String) =>
  250. linkedin_info <- N<LinkedinInfo>(linkedin_info_id)::UPDATE(
  251. {url: url}
  252. )
  253. RETURN linkedin_info
  254. QUERY updateLinkedinContent (linkedin_content_id: ID, name: String, email: String, linkedin_url: String, full_name: String, first_name: String, last_name: String, public_id: String, profile_picture: String, background_picture: String, current_position: String, summary: String, industry: String, region: String, country: String, country_code: String, connection_count: I64, follower_count: I64, languages: [String], skills: [String], certifications: [String], position_start_date: String, position_end_date: String, extracted_at: Date, data_source: String) =>
  255. linkedin_content <- N<LinkedinContent>(linkedin_content_id)::UPDATE(
  256. {name: name, email: email, linkedin_url: linkedin_url, full_name: full_name, first_name: first_name, last_name: last_name, public_id: public_id, profile_picture: profile_picture, background_picture: background_picture, current_position: current_position, summary: summary, industry: industry, region: region, country: country, country_code: country_code, connection_count: connection_count, follower_count: follower_count, languages: languages, skills: skills, certifications: certifications, position_start_date: position_start_date, position_end_date: position_end_date, extracted_at: extracted_at, data_source: data_source}
  257. )
  258. RETURN linkedin_content
  259. QUERY updateLinkedinWebsite (website_id: ID, url: String, category: String) =>
  260. linkedin_website <- N<LinkedinWebsite>(website_id)::UPDATE(
  261. {url: url, category: category}
  262. )
  263. RETURN linkedin_website
  264. QUERY updateLinkedinExperience (experience_id: ID, company: String, title: String, field: String, date_start: String, date_end: String, location: String, description: String) =>
  265. linkedin_experience <- N<LinkedinExperience>(experience_id)::UPDATE(
  266. {company: company, title: title, field: field, date_start: date_start, date_end: date_end, location: location, description: description}
  267. )
  268. RETURN linkedin_experience
  269. QUERY updateLinkedinCompany (company_id: ID, name: String, domain: String, industry: String, staff_count: I64, founded: I64, website: String, headquarters: String, description: String, specialties: [String]) =>
  270. linkedin_company <- N<LinkedinCompany>(company_id)::UPDATE(
  271. {name: name, domain: domain, industry: industry, staff_count: staff_count, founded: founded, website: website, headquarters: headquarters, description: description, specialties: specialties}
  272. )
  273. RETURN linkedin_company
  274. QUERY updateLinkedinEducation (education_id: ID, school: String, field: String, title: String, date_start: String, date_end: String, location: String, description: String) =>
  275. linkedin_education <- N<LinkedinEducation>(education_id)::UPDATE(
  276. {school: school, field: field, title: title, date_start: date_start, date_end: date_end, location: location, description: description}
  277. )
  278. RETURN linkedin_education
  279. QUERY updateCurrentCompany (linkedin_company_id: ID, name: String, domain: String, industry: String, staff_count: I64, founded: I64, website: String, headquarters: String, description: String, specialties: [String]) =>
  280. linkedin_company <- N<LinkedinCompany>(linkedin_company_id)::UPDATE(
  281. {name: name, domain: domain, industry: industry, staff_count: staff_count, founded: founded, website: website, headquarters: headquarters, description: description, specialties: specialties}
  282. )
  283. RETURN linkedin_company
  284. // Warm Connect
  285. QUERY updateWarmConnect (warm_connect_id: ID, name: String, email: String) =>
  286. warm_connect <- N<WarmConnect>(warm_connect_id)::UPDATE(
  287. {name: name, email: email}
  288. )
  289. RETURN warm_connect
  290. // Delete Queries
  291. QUERY deleteLinkedinEducation (education_id: ID) =>
  292. DROP N<LinkedinEducation>(education_id)
  293. RETURN "success"
  294. QUERY deleteLinkedinCompany (company_id: ID) =>
  295. DROP N<LinkedinCompany>(company_id)
  296. RETURN "success"
  297. QUERY deleteLinkedinExperience (experience_id: ID) =>
  298. DROP N<LinkedinExperience>(experience_id)
  299. RETURN "success"
  300. QUERY deleteLinkedinWebsite (website_id: ID) =>
  301. DROP N<LinkedinWebsite>(website_id)
  302. RETURN "success"
  303. QUERY deleteLinkedinContent (linkedin_content_id: ID) =>
  304. DROP N<LinkedinContent>(linkedin_content_id)::Out<LinkedinContent_to_LinkedinWebsite>
  305. DROP N<LinkedinContent>(linkedin_content_id)::Out<LinkedinContent_to_LinkedinExperience>
  306. DROP N<LinkedinContent>(linkedin_content_id)::OutE<LinkedinContent_to_LinkedinCompany>
  307. DROP N<LinkedinContent>(linkedin_content_id)::Out<LinkedinContent_to_LinkedinEducation>
  308. DROP N<LinkedinContent>(linkedin_content_id)::OutE<LinkedinContent_to_CurrentCompany>
  309. DROP N<LinkedinContent>(linkedin_content_id)
  310. RETURN "success"
  311. QUERY deleteLinkedinInfo (linkedin_info_id: ID) =>
  312. DROP N<LinkedinInfo>(linkedin_info_id)::Out<LinkedinInfo_to_LinkedinContent>
  313. DROP N<LinkedinInfo>(linkedin_info_id)
  314. RETURN "success"
  315. QUERY deleteWarmConnect (warm_connect_id: ID) =>
  316. DROP N<WarmConnect>(warm_connect_id)
  317. RETURN "success"
  318. QUERY deleteMetadataNotes (metadata_notes_id: ID) =>
  319. DROP N<MetadataNotes>(metadata_notes_id)
  320. RETURN "success"
  321. QUERY deleteMetadata (metadata_id: ID) =>
  322. DROP N<Metadata>(metadata_id)::Out<Metadata_to_MetadataNotes>
  323. DROP N<Metadata>(metadata_id)::Out<Metadata_to_LinkedinInfo>
  324. DROP N<Metadata>(metadata_id)::Out<Metadata_to_WarmConnect>
  325. DROP N<Metadata>(metadata_id)
  326. RETURN "success"
  327. QUERY deleteEmbeddedBio (user_id: ID) =>
  328. DROP N<User>(user_id)::OutE<User_to_EmbeddedBio>
  329. RETURN "success"
  330. QUERY deleteName (name_id: ID) =>
  331. DROP N<Name>(name_id)
  332. RETURN "success"
  333. QUERY deleteUser (user_id: ID) =>
  334. DROP N<User>(user_id)::Out<User_to_Name>
  335. DROP N<User>(user_id)::Out<User_to_Metadata>
  336. DROP N<User>(user_id)::OutE<User_to_EmbeddedBio>
  337. DROP N<User>(user_id)
  338. RETURN "success"