|
| 1 | +with |
| 2 | + engagementsJson := to_json('[ |
| 3 | + { |
| 4 | + "project": "Misty Mountains", |
| 5 | + "language": "English", |
| 6 | + "status": "InDevelopment", |
| 7 | + "startDateOverride": "2020-04-01", |
| 8 | + "endDateOverride": "2020-06-30" |
| 9 | + }, |
| 10 | + { |
| 11 | + "project": "Arnor Lake", |
| 12 | + "language": "Quenya", |
| 13 | + "status": "FinalizingCompletion", |
| 14 | + "startDateOverride": "2016-04-01", |
| 15 | + "endDateOverride": "2017-06-30" |
| 16 | + }, |
| 17 | + { |
| 18 | + "project": "Lothlorien", |
| 19 | + "language": "Sindarin", |
| 20 | + "status": "Active" |
| 21 | + }, |
| 22 | + { |
| 23 | + "project": "Emyn Muil", |
| 24 | + "language": "Khuzdul", |
| 25 | + "status": "Active" |
| 26 | + }, |
| 27 | + { |
| 28 | + "project": "South Downs", |
| 29 | + "language": "Westron", |
| 30 | + "status": "FinalizingCompletion", |
| 31 | + "paratextRegistryId": "1234567890" |
| 32 | + } |
| 33 | + ]'), |
| 34 | + engagements := ( |
| 35 | + for engagement in json_array_unpack(engagementsJson) |
| 36 | + union ( |
| 37 | + with |
| 38 | + language := assert_single((select Language filter .name = <str>engagement['language'])), |
| 39 | + project := (select Project filter .name = <str>engagement['project']), |
| 40 | + select ( |
| 41 | + (select LanguageEngagement filter .language = language and .project = project) ?? |
| 42 | + (insert LanguageEngagement { |
| 43 | + project := project, |
| 44 | + projectContext := project.projectContext, |
| 45 | + status := <Engagement::Status>engagement['status'], |
| 46 | + startDateOverride := <cal::local_date>json_get(engagement, 'startDateOverride'), |
| 47 | + endDateOverride := <cal::local_date>json_get(engagement, 'endDateOverride'), |
| 48 | + language := language, |
| 49 | + paratextRegistryId := <str>json_get(engagement, 'paratextRegistryId') |
| 50 | + }) |
| 51 | + ) |
| 52 | + ) |
| 53 | + ), |
| 54 | + new := (select engagements filter .createdAt = datetime_of_statement()) |
| 55 | +select { `Added Language Engagements: Language -> Project` := new.language.name ++ ' -> ' ++ new.project.name } |
| 56 | +filter count(new) > 0; |
0 commit comments