|
| 1 | +with |
| 2 | + engagementsJson := to_json('[ |
| 3 | + { |
| 4 | + "project": "Arwen Evenstar Intern", |
| 5 | + "intern": "Samwise", |
| 6 | + "status": "Completed", |
| 7 | + "mentor": "Gandalf", |
| 8 | + "countryOfOrigin": "New Zealand", |
| 9 | + "startDateOverride": "2019-04-01", |
| 10 | + "endDateOverride": "2020-06-30" |
| 11 | + }, |
| 12 | + { |
| 13 | + "project": "Glorfindel - Exegetical Facilitator", |
| 14 | + "intern": "Frodo", |
| 15 | + "status": "DiscussingChangeToPlan", |
| 16 | + "mentor": "Bilbo", |
| 17 | + "countryOfOrigin": "New Zealand", |
| 18 | + "startDateOverride": "2023-01-01", |
| 19 | + "endDateOverride": "2024-07-22" |
| 20 | + }, |
| 21 | + { |
| 22 | + "project": "Cohort of the Ents", |
| 23 | + "intern": "Meriadoc", |
| 24 | + "status": "Active" |
| 25 | + }, |
| 26 | + { |
| 27 | + "project": "Barliman Butterbur Intern", |
| 28 | + "intern": "Peregrin", |
| 29 | + "status": "Suspended" |
| 30 | + }, |
| 31 | + { |
| 32 | + "project": "Eomer of Rohan Intern", |
| 33 | + "intern": "Aragorn", |
| 34 | + "status": "FinalizingCompletion", |
| 35 | + "countryOfOrigin": "New Zealand" |
| 36 | + } |
| 37 | + ]'), |
| 38 | + engagements := ( |
| 39 | + for engagement in json_array_unpack(engagementsJson) |
| 40 | + union ( |
| 41 | + with |
| 42 | + intern := assert_single((select User filter .realFirstName = <str>engagement['intern'])), |
| 43 | + project := (select InternshipProject filter .name = <str>engagement['project']), |
| 44 | + select ( |
| 45 | + (select InternshipEngagement filter .intern = intern and .project = project) ?? |
| 46 | + (insert InternshipEngagement { |
| 47 | + project := project, |
| 48 | + projectContext := project.projectContext, |
| 49 | + intern := intern, |
| 50 | + status := <Engagement::Status>engagement['status'], |
| 51 | + startDateOverride := <cal::local_date>json_get(engagement, 'startDateOverride'), |
| 52 | + endDateOverride := <cal::local_date>json_get(engagement, 'endDateOverride'), |
| 53 | + mentor := assert_single((select User filter .realFirstName = <str>json_get(engagement, 'mentor'))), |
| 54 | + countryOfOrigin := (select Location filter .name = <str>json_get(engagement, 'countryOfOrigin')), |
| 55 | + }) |
| 56 | + ) |
| 57 | + ) |
| 58 | + ), |
| 59 | + new := (select engagements filter .createdAt = datetime_of_statement()) |
| 60 | +select { `Added Internship Engagements: Intern -> Project` := new.intern.realFirstName ++ ' ' ++ new.intern.realLastName ++ ' -> ' ++ new.project.name } |
| 61 | +filter count(new) > 0; |
0 commit comments