illust-data: タグ付けリクエストができるように
This commit is contained in:
parent
68f07b0d16
commit
80c4b46336
|
@ -0,0 +1,31 @@
|
||||||
|
package dev.usbharu.unos.illust.crud
|
||||||
|
|
||||||
|
import illust.tag.IllustTaggingServiceGrpcKt
|
||||||
|
import illust.tag.taggingRequest
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.async
|
||||||
|
import kotlinx.coroutines.awaitAll
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
|
interface RequestTaggingService {
|
||||||
|
suspend fun requestTagging(illustId: UUID): List<String>
|
||||||
|
}
|
||||||
|
|
||||||
|
class RequestTaggingServiceImpl(private val clients: List<IllustTaggingServiceGrpcKt.IllustTaggingServiceCoroutineStub>) :
|
||||||
|
RequestTaggingService {
|
||||||
|
override suspend fun requestTagging(illustId: UUID): List<String> {
|
||||||
|
val taggingResults = withContext(Dispatchers.IO) {
|
||||||
|
clients.map {
|
||||||
|
async {
|
||||||
|
it.requestTagging(taggingRequest {
|
||||||
|
this.illustId = illustId.toString()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}.awaitAll()
|
||||||
|
}
|
||||||
|
|
||||||
|
return taggingResults.flatMap { it.tagsList }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,5 +9,9 @@ message TaggingRequest{
|
||||||
|
|
||||||
message TaggingResult{
|
message TaggingResult{
|
||||||
string illust_id = 1;
|
string illust_id = 1;
|
||||||
|
repeated string tags = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
service IllustTaggingService {
|
||||||
|
rpc requestTagging(TaggingRequest) returns (TaggingResult);
|
||||||
}
|
}
|
Loading…
Reference in New Issue