Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,14 @@ class ServerService(
override suspend fun stopServer(request: StopServerRequest): ServerDefinition {
val server = serverRepository.find(request.serverId)
?: throw StatusException(Status.NOT_FOUND.withDescription("No server was found matching this id."))

request.since?.let { sinceTimestamp ->
val sinceLocalDateTime = ProtobufTimestamp.toLocalDateTime(sinceTimestamp)
if (server.createdAt.isBefore(sinceLocalDateTime)) {
return server.toDefinition()
}
}

try {
val stopped = stopServer(server.toDefinition(), request.stopCause)
return stopped
Expand All @@ -340,21 +348,30 @@ class ServerService(
}

override suspend fun stopServersByGroupWithTimeout(request: StopServersByGroupWithTimeoutRequest): StopServersByGroupResponse {
return stopServersByGroup(request.groupName, request.timeoutSeconds, request.stopCause)
val sinceLocalDateTime = request.since?.let {
ProtobufTimestamp.toLocalDateTime(it)
}
return stopServersByGroup(request.groupName, request.timeoutSeconds, request.stopCause, sinceLocalDateTime)
}

override suspend fun stopServersByGroup(request: StopServersByGroupRequest): StopServersByGroupResponse {
return stopServersByGroup(request.groupName, null, request.stopCause)
val sinceLocalDateTime = request.since?.let {
ProtobufTimestamp.toLocalDateTime(it)
}
return stopServersByGroup(request.groupName, null, request.stopCause, sinceLocalDateTime)
}

private suspend fun stopServersByGroup(
groupName: String,
timeout: Int?,
cause: ServerStopCause = ServerStopCause.NATURAL_STOP
cause: ServerStopCause = ServerStopCause.NATURAL_STOP,
since: LocalDateTime? = null
): StopServersByGroupResponse {
val group = groupRepository.find(groupName)
?: throw StatusException(Status.NOT_FOUND.withDescription("No group was found matching this name. $groupName"))
val groupServers = serverRepository.findServersByGroup(group.name)
.filter { since == null || it.createdAt.isAfter(since) }

if (groupServers.isEmpty()) {
throw StatusException(Status.NOT_FOUND.withDescription("No server was found matching this group name. ${group.name}"))
}
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ kotlin = "2.0.20"
kotlin-coroutines = "1.9.0"
shadow = "8.3.3"
log4j = "2.20.0"
droplet-api = "0.0.1-dev.4d43f53"
droplet-api = "0.0.1-dev.16b322c"
simplecloud-pubsub = "1.0.5"
simplecloud-metrics = "1.0.0"
jooq = "3.19.3"
Expand Down