1+ //> using scala 3.3.1
2+ //> using toolkit 0.2.1
3+ //> using lib pro.kordyjan::pytanie:0.1.6
4+
5+ import pytanie .*
6+ import sttp .client4 .*
7+
8+ lazy val apiToken =
9+ System .getenv(" GRAPHQL_API_TOKEN" )
10+
11+ case class ID (value : String ) derives WrapperVariable
12+
13+ @ main def run (number : Int ) =
14+ val (id, date) = getPrData(number)
15+ val newId = addItem(id)
16+ timestampItem(newId, date)
17+
18+ def getPrData (number : Int ): (ID , String ) =
19+ val res = query """
20+ |query getPR {
21+ | repository(owner: "lampepfl", name:"dotty") {
22+ | pullRequest(number: 17570) {
23+ | id
24+ | mergedAt
25+ | }
26+ | }
27+ |}
28+ """ .send(
29+ uri " https://api.github.com/graphql " ,
30+ " Kordyjan" ,
31+ apiToken
32+ )
33+ (ID (res.repository.pullRequest.id), res.repository.pullRequest.mergedAt)
34+
35+ def timestampItem (id : ID , date : String ) =
36+ query """
37+ |mutation editField {
38+ | updateProjectV2ItemFieldValue(input: {
39+ | projectId: "PVT_kwDOACj3ec4AWSoi",
40+ | itemId: $id,
41+ | fieldId: "PVTF_lADOACj3ec4AWSoizgO7uJ4",
42+ | value: { text: $date }
43+ | }) {
44+ | projectV2Item {
45+ | updatedAt
46+ | }
47+ | }
48+ |}
49+ """ .send(
50+ uri " https://api.github.com/graphql " ,
51+ " Kordyjan" ,
52+ apiToken
53+ )
54+
55+ def addItem (id : ID ) =
56+ val res = query """
57+ |mutation addItem {
58+ | addProjectV2ItemById(input: {
59+ | projectId: "PVT_kwDOACj3ec4AWSoi",
60+ | contentId: $id
61+ | }) {
62+ | item {
63+ | id
64+ | }
65+ | }
66+ |}
67+ """ .send(
68+ uri " https://api.github.com/graphql " ,
69+ " Kordyjan" ,
70+ apiToken
71+ )
72+ ID (res.addProjectV2ItemById.item.id)
0 commit comments