-
Notifications
You must be signed in to change notification settings - Fork 2
/
DeploymentServiceRequest.kt
102 lines (88 loc) · 3.77 KB
/
DeploymentServiceRequest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package dk.cachet.carp.deployments.infrastructure
import dk.cachet.carp.common.application.UUID
import dk.cachet.carp.common.application.devices.DeviceRegistration
import dk.cachet.carp.common.application.services.ApiVersion
import dk.cachet.carp.common.infrastructure.serialization.ignoreTypeParameters
import dk.cachet.carp.common.infrastructure.services.ApplicationServiceRequest
import dk.cachet.carp.deployments.application.DeploymentService
import dk.cachet.carp.deployments.application.PrimaryDeviceDeployment
import dk.cachet.carp.deployments.application.StudyDeploymentStatus
import dk.cachet.carp.deployments.application.users.ParticipantInvitation
import dk.cachet.carp.protocols.application.StudyProtocolSnapshot
import kotlinx.datetime.Instant
import kotlinx.serialization.*
import kotlin.js.JsExport
/**
* Serializable application service requests to [DeploymentService] which can be executed on demand.
*/
@Serializable
@JsExport
@Suppress( "NON_EXPORTABLE_TYPE" )
sealed class DeploymentServiceRequest<out TReturn> : ApplicationServiceRequest<DeploymentService, TReturn>()
{
@Required
override val apiVersion: ApiVersion = DeploymentService.API_VERSION
object Serializer : KSerializer<DeploymentServiceRequest<*>> by ignoreTypeParameters( ::serializer )
@Serializable
data class CreateStudyDeployment(
val id: UUID,
val protocol: StudyProtocolSnapshot,
val invitations: List<ParticipantInvitation>,
val connectedDevicePreregistrations: Map<String, DeviceRegistration> = emptyMap()
) : DeploymentServiceRequest<StudyDeploymentStatus>()
{
override fun getResponseSerializer() = serializer<StudyDeploymentStatus>()
}
@Serializable
data class RemoveStudyDeployments( val studyDeploymentIds: Set<UUID> ) : DeploymentServiceRequest<Set<UUID>>()
{
override fun getResponseSerializer() = serializer<Set<UUID>>()
}
@Serializable
data class GetStudyDeploymentStatus( val studyDeploymentId: UUID ) :
DeploymentServiceRequest<StudyDeploymentStatus>()
{
override fun getResponseSerializer() = serializer<StudyDeploymentStatus>()
}
@Serializable
data class GetStudyDeploymentStatusList( val studyDeploymentIds: Set<UUID> ) :
DeploymentServiceRequest<List<StudyDeploymentStatus>>()
{
override fun getResponseSerializer() = serializer<List<StudyDeploymentStatus>>()
}
@Serializable
data class RegisterDevice(
val studyDeploymentId: UUID,
val deviceRoleName: String,
val registration: DeviceRegistration
) : DeploymentServiceRequest<StudyDeploymentStatus>()
{
override fun getResponseSerializer() = serializer<StudyDeploymentStatus>()
}
@Serializable
data class UnregisterDevice( val studyDeploymentId: UUID, val deviceRoleName: String ) :
DeploymentServiceRequest<StudyDeploymentStatus>()
{
override fun getResponseSerializer() = serializer<StudyDeploymentStatus>()
}
@Serializable
data class GetDeviceDeploymentFor( val studyDeploymentId: UUID, val primaryDeviceRoleName: String ) :
DeploymentServiceRequest<PrimaryDeviceDeployment>()
{
override fun getResponseSerializer() = serializer<PrimaryDeviceDeployment>()
}
@Serializable
data class DeviceDeployed(
val studyDeploymentId: UUID,
val primaryDeviceRoleName: String,
val deviceDeploymentLastUpdatedOn: Instant
) : DeploymentServiceRequest<StudyDeploymentStatus>()
{
override fun getResponseSerializer() = serializer<StudyDeploymentStatus>()
}
@Serializable
data class Stop( val studyDeploymentId: UUID ) : DeploymentServiceRequest<StudyDeploymentStatus>()
{
override fun getResponseSerializer() = serializer<StudyDeploymentStatus>()
}
}