feat: implement transaction handling for upstream and target operations

- Added transaction support in `add_upstream_target`, `remove_upstream`, `remove_upstream_target`, `update_upstream`, and `update_upstream_target` functions to ensure atomicity of operations.
- Updated the `NginxService` to include methods for validating and applying configurations using the agent service.
- Enhanced error handling in agent service interactions, returning appropriate internal server errors when agent communication fails.
- Introduced mock agent service for testing, allowing for simulation of agent interactions without actual network calls.
- Refactored tests to cover scenarios where agent operations fail, ensuring that internal server errors are returned as expected.
This commit is contained in:
GW_MC
2025-12-31 15:57:29 +08:00
parent 4f85d88380
commit 331b4e1e96
14 changed files with 975 additions and 71 deletions

43
Cargo.lock generated
View File

@@ -7,7 +7,7 @@ name = "agent_client"
version = "0.1.0"
dependencies = [
"async-trait",
"mockall",
"mockall 0.13.1",
"reqwest",
"serde",
"serde_json",
@@ -2247,7 +2247,21 @@ dependencies = [
"cfg-if",
"downcast",
"fragile",
"mockall_derive",
"mockall_derive 0.13.1",
"predicates",
"predicates-tree",
]
[[package]]
name = "mockall"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f58d964098a5f9c6b63d0798e5372fd04708193510a7af313c22e9f29b7b620b"
dependencies = [
"cfg-if",
"downcast",
"fragile",
"mockall_derive 0.14.0",
"predicates",
"predicates-tree",
]
@@ -2264,6 +2278,18 @@ dependencies = [
"syn 2.0.111",
]
[[package]]
name = "mockall_derive"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca41ce716dda6a9be188b385aa78ee5260fc25cd3802cb2a8afdc6afbe6b6dbf"
dependencies = [
"cfg-if",
"proc-macro2",
"quote",
"syn 2.0.111",
]
[[package]]
name = "native-tls"
version = "0.2.14"
@@ -2465,17 +2491,6 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "optfield"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "969ccca8ffc4fb105bd131a228107d5c9dd89d9d627edf3295cbe979156f9712"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.111",
]
[[package]]
name = "ordered-float"
version = "4.6.0"
@@ -5599,8 +5614,8 @@ dependencies = [
"jsonwebtoken",
"migration",
"mime_guess",
"mockall 0.14.0",
"once_cell",
"optfield",
"reqwest",
"sea-orm",
"serde",