volcengine_rust_sdk/service/rds/
mod.rs

1/*
2 * @Author: Jerry.Yang
3 * @Date: 2024-11-05 10:36:11
4 * @LastEditors: Jerry.Yang
5 * @LastEditTime: 2025-02-06 11:36:03
6 * @Description: Module for managing RDS (Relational Database Service) instances, databases, endpoints, and accounts using Volcengine SDK.
7 */
8use crate::volcengine::client::client;
9use crate::volcengine::error::error;
10use crate::volcengine::session::session;
11use std::future::Future;
12use volcengine_sdk_protobuf::protobuf::rds_account;
13use volcengine_sdk_protobuf::protobuf::rds_allow;
14use volcengine_sdk_protobuf::protobuf::rds_database;
15use volcengine_sdk_protobuf::protobuf::rds_endpoint;
16use volcengine_sdk_protobuf::protobuf::rds_instance;
17
18// Import modules for various RDS operations
19mod api_create_db_account;
20mod api_create_db_account_model;
21mod api_create_db_database;
22mod api_create_db_database_model;
23mod api_create_db_endpoint;
24mod api_create_db_endpoint_model;
25mod api_create_db_instance;
26mod api_create_db_instance_model;
27mod api_describe_db_accounts;
28mod api_describe_db_accounts_model;
29mod api_describe_db_database;
30mod api_describe_db_databases_model;
31mod api_describe_db_instance_detail;
32mod api_describe_db_instance_detail_model;
33mod api_describe_db_instances;
34mod api_describe_db_instances_models;
35mod api_modify_allow_list;
36mod api_modify_allow_list_model;
37mod api_modify_db_endpoint;
38mod api_modify_db_endpoint_model;
39mod api_modify_db_instance_spec;
40mod api_modify_db_instance_spec_model;
41pub mod service_rds;
42mod tests;
43
44/**
45 * Defines the RDS service interface, providing methods for various RDS operations.
46 * This trait encapsulates the functionality required to interact with the Volcengine RDS service.
47 * @author: Jerry.Yang
48 * @date: 2024-11-05 14:27:29
49 */
50pub trait RdsService {
51    /// Creates a new RDS service instance from a given session.
52    /// This method initializes the RDS service with the provided session information.
53    fn new_rds(session: session::Session) -> Result<Rds, error::Error>;
54
55    /// Creates a new database instance.
56    /// This method sends a request to the Volcengine RDS service to create a new database instance.
57    fn new_create_db_instance(
58        &self,
59        request: rds_instance::CreateDbInstanceReq,
60    ) -> impl Future<Output = Result<rds_instance::CreateDbInstanceResp, error::Error>>;
61
62    /// Describes the details of a specific database instance.
63    /// This method retrieves detailed information about a specific database instance from the Volcengine RDS service.
64    fn new_describe_db_instance_detail(
65        &self,
66        request: rds_instance::DescribeDbInstanceDetailReq,
67    ) -> impl Future<Output = Result<rds_instance::DescribeDbInstanceDetailResp, error::Error>>;
68
69    /// Creates a new database endpoint.
70    /// This method sends a request to the Volcengine RDS service to create a new database endpoint.
71    fn new_create_db_endpoint(
72        &self,
73        request: rds_endpoint::CreateDbEndpointReq,
74    ) -> impl Future<Output = Result<rds_endpoint::CreateDbEndpointResp, error::Error>>;
75
76    /// Creates a new database account.
77    /// This method sends a request to the Volcengine RDS service to create a new database account.
78    fn new_create_db_account(
79        &self,
80        request: rds_account::CreateDbAccountReq,
81    ) -> impl Future<Output = Result<rds_account::CreateDbAccountResp, error::Error>>;
82
83    /// Creates a new database.
84    /// This method sends a request to the Volcengine RDS service to create a new database.
85    fn new_create_db_database(
86        &self,
87        request: rds_database::CreateDatabaseReq,
88    ) -> impl Future<Output = Result<rds_database::CreateDatabaseResp, error::Error>>;
89
90    /// Modifies the allow list of a database instance.
91    /// This method sends a request to the Volcengine RDS service to modify the allow list of a database instance.
92    fn new_modify_allow_list(
93        &self,
94        request: rds_allow::ModifyAllowListReq,
95    ) -> impl Future<Output = Result<rds_allow::ModifyAllowListResp, error::Error>>;
96
97    /// Modifies the specifications of a database instance.
98    /// This method sends a request to the Volcengine RDS service to modify the specifications (e.g., CPU, memory) of a database instance.
99    fn new_modify_db_instance_spec(
100        &self,
101        request: rds_instance::ModifyDbInstanceSpecReq,
102    ) -> impl Future<Output = Result<rds_instance::ModifyDbInstanceSpecResp, error::Error>>;
103
104    /// Describes the databases of a database instance.
105    /// This method retrieves information about the databases of a specific database instance from the Volcengine RDS service.
106    fn new_describe_db_databases(
107        &self,
108        request: rds_database::DescribeDatabasesReq,
109    ) -> impl Future<Output = Result<rds_database::DescribeDatabasesResp, error::Error>>;
110
111    /// Describes the accounts of a database instance.
112    /// This method retrieves information about the accounts of a specific database instance from the Volcengine RDS service.
113    fn new_describe_db_accounts(
114        &self,
115        request: rds_account::DescribeDbAccountsReq,
116    ) -> impl Future<Output = Result<rds_account::DescribeDbAccountsResp, error::Error>>;
117
118    /// Modifies a database endpoint.
119    /// This method sends a request to the Volcengine RDS service to modify a database endpoint.
120    fn new_modify_db_endpoint(
121        &self,
122        request: rds_endpoint::ModifyDbEndpointReq,
123    ) -> impl Future<Output = Result<rds_endpoint::ModifyDbEndpointResp, error::Error>>;
124
125    /// Describes the database instances.
126    /// This method retrieves information about the database instances from the Volcengine RDS service.
127    fn new_describe_db_instances(
128        &self,
129        request: rds_instance::DescribeDbInstancesReq,
130    ) -> impl Future<Output = Result<rds_instance::DescribeDbInstancesResp, error::Error>>;
131}
132
133/**
134 * Represents the RDS service, encapsulating the client information required to interact with the Volcengine RDS service.
135 * @author: Jerry.Yang
136 * @date: 2024-11-05 14:27:20
137 */
138#[derive(Debug, Clone)]
139pub struct Rds {
140    /// The client used to make requests to the Volcengine RDS service.
141    client: client::Client,
142}