1
1
package life .qbic .projectmanagement .application .api ;
2
2
3
+ import java .util .UUID ;
3
4
import reactor .core .publisher .Mono ;
4
5
5
6
/**
@@ -62,6 +63,24 @@ sealed interface UpdateResponseBody permits ProjectDesign {
62
63
63
64
}
64
65
66
+ /**
67
+ * Cacheable requests provide a unique identifier so cache implementations can unambiguously
68
+ * manage the requests.
69
+ *
70
+ * @since 1.9.0
71
+ */
72
+ sealed interface CacheableRequest permits ProjectUpdateRequest {
73
+
74
+ /**
75
+ * Returns an ID that is unique to the request.
76
+ *
77
+ * @return the id
78
+ * @since 1.9.0
79
+ */
80
+ String requestId ();
81
+
82
+ }
83
+
65
84
/**
66
85
* Container for passing information in an {@link UpdateRequestBody} or
67
86
* {@link UpdateResponseBody}.
@@ -82,8 +101,17 @@ record ProjectDesign(String title, String objective) implements UpdateRequestBod
82
101
* @param requestBody the information to be updated.
83
102
* @since 1.9.0
84
103
*/
85
- record ProjectUpdateRequest (String projectId , UpdateRequestBody requestBody ) {
104
+ record ProjectUpdateRequest (String projectId , UpdateRequestBody requestBody , String id ) implements
105
+ CacheableRequest {
86
106
107
+ public ProjectUpdateRequest (String projectId , UpdateRequestBody requestBody ) {
108
+ this (projectId , requestBody , UUID .randomUUID ().toString ());
109
+ }
110
+
111
+ @ Override
112
+ public String requestId () {
113
+ return id ;
114
+ }
87
115
}
88
116
89
117
/**
@@ -93,7 +121,7 @@ record ProjectUpdateRequest(String projectId, UpdateRequestBody requestBody) {
93
121
* @param responseBody the information that was updated.
94
122
* @since 1.9.0
95
123
*/
96
- record ProjectUpdateResponse (String projectId , UpdateResponseBody responseBody ) {
124
+ record ProjectUpdateResponse (String projectId , UpdateResponseBody responseBody , String requestId ) {
97
125
98
126
}
99
127
0 commit comments