fraiseql_core/federation/
direct_db_resolver.rs1use crate::{error::Result, federation::connection_manager::ConnectionManager};
7
8pub struct DirectDatabaseResolver {
10 connection_manager: ConnectionManager,
12}
13
14impl Default for DirectDatabaseResolver {
15 fn default() -> Self {
16 Self::new()
17 }
18}
19
20impl DirectDatabaseResolver {
21 pub fn new() -> Self {
23 Self {
24 connection_manager: ConnectionManager::new(),
25 }
26 }
27
28 pub fn connection_count(&self) -> Result<usize> {
30 self.connection_manager.connection_count()
31 }
32
33 pub fn close_connection(&self, connection_string: &str) -> Result<()> {
35 self.connection_manager.close_connection(connection_string)
36 }
37
38 pub fn close_all(&self) -> Result<()> {
40 self.connection_manager.close_all()
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn test_direct_database_resolver_creation() {
50 let _resolver = DirectDatabaseResolver::new();
51 }
52
53 #[test]
54 fn test_connection_count_empty() {
55 let resolver = DirectDatabaseResolver::new();
56 assert_eq!(resolver.connection_count().unwrap(), 0);
57 }
58
59 #[test]
60 fn test_close_all() {
61 let resolver = DirectDatabaseResolver::new();
62 assert!(resolver.close_all().is_ok());
63 }
64
65 #[test]
66 fn test_close_connection() {
67 let resolver = DirectDatabaseResolver::new();
68 assert!(resolver.close_connection("postgresql://localhost/db").is_ok());
69 }
70}