bios_iam/console_interface/api/
iam_ci_app_set_api.rs1use bios_basic::rbum::helper::rbum_scope_helper::check_without_owner_and_unsafe_fill_ctx;
2use bios_basic::rbum::serv::rbum_crud_serv::RbumCrudOperation;
3use bios_basic::rbum::serv::rbum_set_serv::RbumSetItemServ;
4use tardis::web::context_extractor::TardisContextExtractor;
5use tardis::web::poem_openapi;
6use tardis::web::poem_openapi::param::Query;
7use tardis::web::web_resp::{TardisApiResult, TardisResp};
8
9use bios_basic::rbum::dto::rbum_filer_dto::{RbumBasicFilterReq, RbumSetItemFilterReq};
10use bios_basic::rbum::dto::rbum_set_item_dto::RbumSetItemDetailResp;
11
12use crate::basic::serv::iam_cert_serv::IamCertServ;
13use crate::basic::serv::iam_set_serv::IamSetServ;
14use crate::iam_constants;
15use crate::iam_enumeration::IamSetKind;
16use bios_basic::helper::request_helper::try_set_real_ip_from_req_to_ctx;
17use tardis::web::poem::Request;
18#[derive(Clone, Default)]
19pub struct IamCiAppSetApi;
20
21#[poem_openapi::OpenApi(prefix_path = "/ci/apps", tag = "bios_basic::ApiTag::Interface")]
24impl IamCiAppSetApi {
25 #[oai(path = "/item", method = "get")]
28 async fn find_items(
29 &self,
30 cate_ids: Query<Option<String>>,
31 item_ids: Query<Option<String>>,
32 mut ctx: TardisContextExtractor,
33 request: &Request,
34 ) -> TardisApiResult<Vec<RbumSetItemDetailResp>> {
35 let funs = iam_constants::get_tardis_inst();
36 check_without_owner_and_unsafe_fill_ctx(request, &funs, &mut ctx.0)?;
37 let ctx = IamCertServ::use_sys_or_tenant_ctx_unsafe(ctx.0)?;
38 try_set_real_ip_from_req_to_ctx(request, &ctx).await?;
39 let set_id = IamSetServ::get_default_set_id_by_ctx(&IamSetKind::Apps, &funs, &ctx).await?;
40 let result = RbumSetItemServ::find_detail_rbums(
41 &RbumSetItemFilterReq {
42 basic: RbumBasicFilterReq {
43 with_sub_own_paths: false,
44 ..Default::default()
45 },
46 rel_rbum_item_disabled: Some(false),
47 rel_rbum_item_can_not_exist: Some(true),
48 rel_rbum_set_id: Some(set_id.clone()),
49 rel_rbum_set_cate_ids: cate_ids.0.map(|ids| ids.split(',').map(|id| id.to_string()).collect::<Vec<String>>()),
50 rel_rbum_item_ids: item_ids.0.map(|ids| ids.split(',').map(|id| id.to_string()).collect::<Vec<String>>()),
51 ..Default::default()
52 },
53 None,
54 None,
55 &funs,
56 &ctx,
57 )
58 .await?;
59 ctx.execute_task().await?;
60 TardisResp::ok(result)
61 }
62}