use crate::PlatformConfig;
use std::sync::Arc;
pub mod app;
pub mod application;
pub mod approval_instance;
pub mod approval_task;
pub mod seat_activity;
pub mod seat_assignment;
pub mod tenant_app_metrics;
pub mod user_task;
pub mod workspace;
#[derive(Debug, Clone)]
pub struct ApaasV1 {
config: Arc<PlatformConfig>,
}
impl ApaasV1 {
pub fn new(config: Arc<PlatformConfig>) -> Self {
Self { config }
}
pub fn app(&self) -> app::AppService {
app::AppService::new(self.config.as_ref().clone())
}
pub fn approval_task(&self) -> approval_task::ApprovalTaskService {
approval_task::ApprovalTaskService::new(self.config.as_ref().clone())
}
pub fn approval_instance(&self) -> approval_instance::ApprovalInstanceService {
approval_instance::ApprovalInstanceService::new(self.config.as_ref().clone())
}
pub fn user_task(&self) -> user_task::UserTaskService {
user_task::UserTaskService::new(self.config.as_ref().clone())
}
pub fn seat_activity(&self) -> seat_activity::SeatActivityService {
seat_activity::SeatActivityService::new(self.config.as_ref().clone())
}
pub fn seat_assignment(&self) -> seat_assignment::SeatAssignmentService {
seat_assignment::SeatAssignmentService::new(self.config.as_ref().clone())
}
pub fn tenant_app_metrics(&self) -> tenant_app_metrics::TenantAppMetricsService {
tenant_app_metrics::TenantAppMetricsService::new(self.config.as_ref().clone())
}
pub fn application(&self, namespace: impl Into<String>) -> application::ApplicationService {
application::ApplicationService::new(self.config.clone(), namespace)
}
pub fn workspace(&self, workspace_id: impl Into<String>) -> workspace::WorkspaceService {
workspace::WorkspaceService::new(self.config.clone(), workspace_id)
}
}
#[cfg(test)]
mod tests {
use super::ApaasV1;
use crate::PlatformConfig;
#[test]
fn test_apaas_v1_creation() {
let config = PlatformConfig::builder()
.app_id("test_app_id")
.app_secret("test_app_secret")
.build();
let api = ApaasV1::new(std::sync::Arc::new(config));
assert_eq!(api.config.app_id(), "test_app_id");
}
#[test]
fn test_apaas_v1_top_chain_access() {
let config = PlatformConfig::builder()
.app_id("test_app_id")
.app_secret("test_app_secret")
.build();
let api = ApaasV1::new(std::sync::Arc::new(config));
let _ = api.app().list();
let _ = api.approval_instance().list();
let _ = api.approval_task().agree();
let _ = api.approval_task().transfer("task_1", "user_2");
let _ = api.user_task().query();
let _ = api.user_task().cc("task_1");
let _ = api.seat_activity().list();
let _ = api.seat_assignment().list();
let _ = api.tenant_app_metrics().query();
let _ = api.application("ns_x");
let _ = api.workspace("ws_x");
}
#[test]
fn test_apaas_v1_application_deep_chain_access() {
let config = PlatformConfig::builder()
.app_id("test_app_id")
.app_secret("test_app_secret")
.build();
let api = ApaasV1::new(std::sync::Arc::new(config));
let app = api.application("ns_x");
let _ = app.object("obj_y").record().create();
let _ = app.object("obj_y").record().batch_create();
let _ = app.object("obj_y").record().query("rec_1");
let _ = app.object("obj_y").search("q");
let _ = app.object("obj_y").oql_query("select *");
let _ = app.role("role_a").member().get();
let _ = app.role("role_a").member().batch_create_authorization();
let _ = app
.record_permission("rp_b")
.member()
.batch_create_authorization();
let _ = app.environment_variable().query();
let _ = app.environment_variable().get("var_k");
let _ = app.function("fn_a").invoke();
let _ = app.flow("flow_1").execute();
let _ = app.audit_log().list();
let _ = app.audit_log().get("log_9");
}
#[test]
fn test_apaas_v1_workspace_deep_chain_access() {
let config = PlatformConfig::builder()
.app_id("test_app_id")
.app_secret("test_app_secret")
.build();
let api = ApaasV1::new(std::sync::Arc::new(config));
let ws = api.workspace("ws_x");
let _ = ws.table("tbl_a").list();
let _ = ws.table("tbl_a").table_get();
let _ = ws.table("tbl_a").records_post();
let _ = ws.table("tbl_a").records_get();
let _ = ws.table("tbl_a").records_delete();
let _ = ws.table("tbl_a").records_batch_update();
let _ = ws.table("tbl_a").records_patch("filter_q");
let _ = ws.view("v_1").views_get();
let _ = ws.enum_mod().list();
let _ = ws.enum_mod().get("enum_k");
let _ = ws.sql_commands("select 1");
}
}