From ca9167bcf39f1dde8374c0704c680d0b69ee66a3 Mon Sep 17 00:00:00 2001 From: yaoxuwan Date: Thu, 19 Oct 2023 10:42:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20fs-server=E6=94=AF=E6=8C=81=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E4=BC=9A=E8=AF=9D=E7=AE=A1=E7=90=86=20#1275?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tencent/bkrepo/common/mongo/util/Pages.kt | 96 +++++++++++++++++++ .../bkrepo/fs/server/api/FsClientClient.kt | 51 ++++++++++ .../fs/server/pojo/ClientListRequest.kt | 38 ++++++++ .../fs/server/config/RouteConfiguration.kt | 4 + .../bkrepo/fs/server/handler/ClientHandler.kt | 14 +++ .../bkrepo/fs/server/service/ClientService.kt | 14 +++ .../bkrepo/opdata/pojo/ClientListRequest.kt | 42 -------- .../opdata/controller/FsClientController.kt | 14 ++- .../tencent/bkrepo/opdata/model/TFsClient.kt | 50 ---------- .../opdata/repository/FsClientRepository.kt | 43 --------- .../bkrepo/opdata/service/FsClientService.kt | 70 -------------- 11 files changed, 226 insertions(+), 210 deletions(-) create mode 100644 src/backend/common/common-mongo-reactive/src/main/kotlin/com/tencent/bkrepo/common/mongo/util/Pages.kt create mode 100644 src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/api/FsClientClient.kt create mode 100644 src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/pojo/ClientListRequest.kt delete mode 100644 src/backend/opdata/api-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/pojo/ClientListRequest.kt delete mode 100644 src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/model/TFsClient.kt delete mode 100644 src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/repository/FsClientRepository.kt delete mode 100644 src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/service/FsClientService.kt diff --git a/src/backend/common/common-mongo-reactive/src/main/kotlin/com/tencent/bkrepo/common/mongo/util/Pages.kt b/src/backend/common/common-mongo-reactive/src/main/kotlin/com/tencent/bkrepo/common/mongo/util/Pages.kt new file mode 100644 index 0000000000..51b1a07843 --- /dev/null +++ b/src/backend/common/common-mongo-reactive/src/main/kotlin/com/tencent/bkrepo/common/mongo/util/Pages.kt @@ -0,0 +1,96 @@ +/* + * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. + * + * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. + * + * A copy of the MIT License is included in this file. + * + * + * Terms of the MIT License: + * --------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.tencent.bkrepo.common.mongo.util + +import com.tencent.bkrepo.common.api.constant.DEFAULT_PAGE_NUMBER +import com.tencent.bkrepo.common.api.constant.DEFAULT_PAGE_SIZE +import com.tencent.bkrepo.common.api.pojo.Page +import org.springframework.data.domain.PageRequest + +/** + * 分页工具类 + */ +object Pages { + + /** + * 根据页码[page]和分页大小[size]构造[PageRequest] + * + * [page]从1开始,如果传入值小于1则置为1 + * [size]如果小于0则置为默认分页大小20 + * + * [PageRequest]要求页码从0开始 + */ + fun ofRequest(page: Int, size: Int): PageRequest { + val pageNumber = if (page <= 0) DEFAULT_PAGE_NUMBER else page + val pageSize = if (page < 0) DEFAULT_PAGE_SIZE else size + return PageRequest.of(pageNumber - 1, pageSize) + } + + /** + * 将查询到的所有数据通过内存分页构造结果 + * + * @param total 所有数据 + * @param page 页码,从1开始,如果传入值小于1则置为1 + * @param size 分页大小,如果小于0则置为默认分页大小20 + */ + inline fun buildPage(total: List, page: Int, size: Int): Page { + val pageNumber = if (page <= 0) DEFAULT_PAGE_NUMBER else page + val pageSize = if (page < 0) DEFAULT_PAGE_SIZE else size + val totalRecords = total.size + val offset = (pageNumber - 1) * pageSize + val records = if (offset > totalRecords) { + emptyList() + } else if (offset + pageSize > totalRecords) { + total.subList(offset, totalRecords) + } else { + total.subList(offset, offset + pageSize) + } + return Page( + pageNumber = pageNumber, + pageSize = pageSize, + totalRecords = totalRecords.toLong(), + records = records + ) + } + + /** + * 创建分页响应结果 + * + * @param pageRequest 分页请求 + * @param totalRecords 数据总数 + * @param records 数据列表 + */ + inline fun ofResponse(pageRequest: PageRequest, totalRecords: Long, records: List): Page { + return Page( + pageNumber = pageRequest.pageNumber + 1, + pageSize = pageRequest.pageSize, + totalRecords = totalRecords, + records = records + ) + } +} diff --git a/src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/api/FsClientClient.kt b/src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/api/FsClientClient.kt new file mode 100644 index 0000000000..2bff90cd01 --- /dev/null +++ b/src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/api/FsClientClient.kt @@ -0,0 +1,51 @@ +/* + * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. + * + * A copy of the MIT License is included in this file. + * + * + * Terms of the MIT License: + * --------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.tencent.bkrepo.fs.server.api + +import com.tencent.bkrepo.common.api.constant.FS_SERVER_SERVICE_NAME +import com.tencent.bkrepo.common.api.pojo.Page +import com.tencent.bkrepo.common.api.pojo.Response +import com.tencent.bkrepo.fs.server.pojo.ClientDetail +import org.springframework.cloud.openfeign.FeignClient +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestParam + +@FeignClient(FS_SERVER_SERVICE_NAME, contextId = "ClientClient", primary = false) +@RequestMapping("/service/client") +interface FsClientClient { + + @GetMapping("/list/{projectId}/{repoName}") + fun listClients( + @PathVariable projectId: String, + @PathVariable repoName: String, + @RequestParam pageNumber: Int, + @RequestParam pageSize: Int + ): Response> +} diff --git a/src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/pojo/ClientListRequest.kt b/src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/pojo/ClientListRequest.kt new file mode 100644 index 0000000000..917a3c164f --- /dev/null +++ b/src/backend/fs/api-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/pojo/ClientListRequest.kt @@ -0,0 +1,38 @@ +/* + * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. + * + * A copy of the MIT License is included in this file. + * + * + * Terms of the MIT License: + * --------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + * LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.tencent.bkrepo.fs.server.pojo + +/** + * 客户端列表请求 + */ +data class ClientListRequest( + val projectId: String, + val repoName: String, + val pageNumber: Int, + val pageSize: Int +) diff --git a/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/config/RouteConfiguration.kt b/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/config/RouteConfiguration.kt index e71747a744..a86fd49fe8 100644 --- a/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/config/RouteConfiguration.kt +++ b/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/config/RouteConfiguration.kt @@ -109,6 +109,10 @@ class RouteConfiguration( POST("/heartbeat/{projectId}/{repoName}/{clientId}", clientHandler::heartbeat) } + "/service/client".nest { + GET("/list/{projectId}/{repoName}", clientHandler::listClients) + } + accept(APPLICATION_OCTET_STREAM).nest { GET(DEFAULT_MAPPING_URI, fileOperationsHandler::read) addMetrics(serverMetrics.downloadingCount) diff --git a/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/handler/ClientHandler.kt b/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/handler/ClientHandler.kt index 90e48109d3..0e24159ff7 100644 --- a/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/handler/ClientHandler.kt +++ b/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/handler/ClientHandler.kt @@ -27,12 +27,16 @@ package com.tencent.bkrepo.fs.server.handler +import com.tencent.bkrepo.common.api.constant.DEFAULT_PAGE_NUMBER +import com.tencent.bkrepo.common.api.constant.DEFAULT_PAGE_SIZE import com.tencent.bkrepo.fs.server.request.ClientCreateRequest +import com.tencent.bkrepo.fs.server.pojo.ClientListRequest import com.tencent.bkrepo.fs.server.service.ClientService import com.tencent.bkrepo.fs.server.utils.ReactiveResponseBuilder import kotlinx.coroutines.reactor.awaitSingle import org.springframework.web.reactive.function.server.ServerRequest import org.springframework.web.reactive.function.server.ServerResponse +import org.springframework.web.reactive.function.server.queryParamOrNull class ClientHandler( private val clientService: ClientService @@ -58,4 +62,14 @@ class ClientHandler( clientService.heartbeat(projectId, repoName, clientId) return ReactiveResponseBuilder.success() } + + suspend fun listClients(request: ServerRequest): ServerResponse { + val listRequest = ClientListRequest( + projectId = request.pathVariable(ClientListRequest::projectId.name), + repoName = request.pathVariable(ClientListRequest::repoName.name), + pageNumber = request.queryParamOrNull(ClientListRequest::pageNumber.name)?.toInt() ?: DEFAULT_PAGE_NUMBER, + pageSize = request.queryParamOrNull(ClientListRequest::pageSize.name)?.toInt() ?: DEFAULT_PAGE_SIZE + ) + return ReactiveResponseBuilder.success(clientService.listClients(listRequest)) + } } diff --git a/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/service/ClientService.kt b/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/service/ClientService.kt index 7ce4b06dff..9ee2760892 100644 --- a/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/service/ClientService.kt +++ b/src/backend/fs/boot-fs-server/src/main/kotlin/com/tencent/bkrepo/fs/server/service/ClientService.kt @@ -33,11 +33,14 @@ package com.tencent.bkrepo.fs.server.service import com.tencent.bkrepo.common.api.exception.ErrorCodeException import com.tencent.bkrepo.common.api.message.CommonMessageCode +import com.tencent.bkrepo.common.api.pojo.Page +import com.tencent.bkrepo.common.mongo.util.Pages import com.tencent.bkrepo.fs.server.context.ReactiveRequestContextHolder import com.tencent.bkrepo.fs.server.model.TClient import com.tencent.bkrepo.fs.server.pojo.ClientDetail import com.tencent.bkrepo.fs.server.repository.ClientRepository import com.tencent.bkrepo.fs.server.request.ClientCreateRequest +import com.tencent.bkrepo.fs.server.pojo.ClientListRequest import com.tencent.bkrepo.fs.server.utils.ReactiveSecurityUtils import org.springframework.data.mongodb.core.query.Criteria import org.springframework.data.mongodb.core.query.Query @@ -91,6 +94,17 @@ class ClientService( clientRepository.save(client) } + suspend fun listClients(request: ClientListRequest): Page { + val pageRequest = Pages.ofRequest(request.pageNumber, request.pageSize) + val query = Query( + Criteria.where(TClient::projectId.name).isEqualTo(request.projectId) + .and(TClient::repoName.name).isEqualTo(request.repoName) + ) + val count = clientRepository.count(query) + val data = clientRepository.find(query.with(pageRequest)) + return Pages.ofResponse(pageRequest, count, data.map { it.convert() }) + } + private suspend fun insertClient(request: ClientCreateRequest): TClient { val client = TClient( projectId = request.projectId, diff --git a/src/backend/opdata/api-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/pojo/ClientListRequest.kt b/src/backend/opdata/api-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/pojo/ClientListRequest.kt deleted file mode 100644 index 7fc0fbefbb..0000000000 --- a/src/backend/opdata/api-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/pojo/ClientListRequest.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * - * Terms of the MIT License: - * --------------------------------------------------- - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.tencent.bkrepo.opdata.pojo - -/** - * 客户端列表请求 - */ -data class ClientListRequest( - val projectId: String, - val repoName: String, - val pageNumber: Int, - val pageSize: Int -) diff --git a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/controller/FsClientController.kt b/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/controller/FsClientController.kt index 8571488a25..2b55ec2454 100644 --- a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/controller/FsClientController.kt +++ b/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/controller/FsClientController.kt @@ -35,10 +35,9 @@ import com.tencent.bkrepo.auth.pojo.enums.PermissionAction import com.tencent.bkrepo.common.api.pojo.Page import com.tencent.bkrepo.common.api.pojo.Response import com.tencent.bkrepo.common.security.manager.PermissionManager -import com.tencent.bkrepo.common.service.util.ResponseBuilder +import com.tencent.bkrepo.fs.server.api.FsClientClient import com.tencent.bkrepo.fs.server.pojo.ClientDetail -import com.tencent.bkrepo.opdata.pojo.ClientListRequest -import com.tencent.bkrepo.opdata.service.FsClientService +import com.tencent.bkrepo.fs.server.pojo.ClientListRequest import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -46,13 +45,18 @@ import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/api/fs-client") class FsClientController( - private val fsClientService: FsClientService, + private val fsClientClient: FsClientClient, private val permissionManager: PermissionManager ) { @GetMapping("/list") fun getClients(request: ClientListRequest): Response> { permissionManager.checkProjectPermission(PermissionAction.READ, request.projectId) - return ResponseBuilder.success(fsClientService.listClients(request)) + return fsClientClient.listClients( + request.projectId, + request.repoName, + request.pageNumber, + request.pageSize + ) } } diff --git a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/model/TFsClient.kt b/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/model/TFsClient.kt deleted file mode 100644 index fb3333a433..0000000000 --- a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/model/TFsClient.kt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * - * Terms of the MIT License: - * --------------------------------------------------- - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.tencent.bkrepo.opdata.model - -import org.springframework.data.mongodb.core.mapping.Document -import java.time.LocalDateTime - -@Document("client") -data class TFsClient( - val id: String? = null, - val projectId: String, - val repoName: String, - val mountPoint: String, - val userId: String, - val ip: String, - val version: String, - val os: String, - val arch: String, - var online: Boolean, - var heartbeatTime: LocalDateTime -) diff --git a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/repository/FsClientRepository.kt b/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/repository/FsClientRepository.kt deleted file mode 100644 index d7d1c9938b..0000000000 --- a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/repository/FsClientRepository.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * - * Terms of the MIT License: - * --------------------------------------------------- - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.tencent.bkrepo.opdata.repository - -import com.tencent.bkrepo.opdata.model.TFsClient -import org.springframework.data.domain.Page -import org.springframework.data.domain.Pageable -import org.springframework.data.mongodb.repository.MongoRepository -import org.springframework.stereotype.Repository - -@Repository -interface FsClientRepository: MongoRepository { - fun findByProjectIdAndRepoName(projectId: String, repoName: String, pageable: Pageable): Page -} diff --git a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/service/FsClientService.kt b/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/service/FsClientService.kt deleted file mode 100644 index 30a85ec556..0000000000 --- a/src/backend/opdata/biz-opdata/src/main/kotlin/com/tencent/bkrepo/opdata/service/FsClientService.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available. - * - * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved. - * - * BK-CI 蓝鲸持续集成平台 is licensed under the MIT license. - * - * A copy of the MIT License is included in this file. - * - * - * Terms of the MIT License: - * --------------------------------------------------- - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package com.tencent.bkrepo.opdata.service - -import com.tencent.bkrepo.common.api.pojo.Page -import com.tencent.bkrepo.common.mongo.dao.util.Pages -import com.tencent.bkrepo.fs.server.pojo.ClientDetail -import com.tencent.bkrepo.opdata.model.TFsClient -import com.tencent.bkrepo.opdata.pojo.ClientListRequest -import com.tencent.bkrepo.opdata.repository.FsClientRepository -import org.springframework.stereotype.Service - -@Service -class FsClientService( - private val fsClientRepository: FsClientRepository -) { - - fun listClients(request: ClientListRequest): Page { - with(request) { - val pageRequest = Pages.ofRequest(pageNumber, pageSize) - val data = fsClientRepository.findByProjectIdAndRepoName(projectId, repoName, pageRequest) - return Pages.ofResponse(pageRequest, data.totalElements, data.content.map { it.convert() }) - } - } - - private fun TFsClient.convert(): ClientDetail { - return ClientDetail( - id = id!!, - projectId = projectId, - repoName = repoName, - mountPoint = mountPoint, - userId = userId, - ip = ip, - version = version, - os = os, - arch = arch, - online = online, - heartbeatTime = heartbeatTime - ) - } -}