@@ -5,18 +5,18 @@ use serde::Deserialize;
55use serde:: Serialize ;
66use std:: sync:: Arc ;
77use tokio:: sync:: Mutex ;
8- use tokio_postgres:: Client as PgClient ;
98
109use pony:: Connection as Conn ;
11-
1210use pony:: ConnectionStat ;
1311use pony:: ConnectionStatus ;
1412use pony:: Proto ;
1513use pony:: Tag ;
1614use pony:: WgKeys ;
1715use pony:: WgParam ;
1816
19- use crate :: { PonyError , Result } ;
17+ use pony:: { PonyError , Result } ;
18+
19+ use super :: PgClientManager ;
2020
2121#[ derive( Deserialize , Serialize , Debug , Clone ) ]
2222pub struct ConnRow {
@@ -108,16 +108,17 @@ impl TryFrom<ConnRow> for Conn {
108108}
109109
110110pub struct PgConn {
111- pub client : Arc < Mutex < PgClient > > ,
111+ pub manager : Arc < Mutex < PgClientManager > > ,
112112}
113113
114114impl PgConn {
115- pub fn new ( client : Arc < Mutex < PgClient > > ) -> Self {
116- Self { client }
115+ pub fn new ( manager : Arc < Mutex < PgClientManager > > ) -> Self {
116+ Self { manager }
117117 }
118118
119119 pub async fn all ( & self ) -> Result < Vec < ConnRow > > {
120- let client = self . client . lock ( ) . await ;
120+ let mut manager = self . manager . lock ( ) . await ;
121+ let client = manager. get_client ( ) . await ?;
121122
122123 let query = "
123124 SELECT
@@ -204,12 +205,14 @@ impl PgConn {
204205 }
205206
206207 pub async fn update_stat ( & self , conn_id : & uuid:: Uuid , stat : ConnectionStat ) -> Result < ( ) > {
208+ let mut manager = self . manager . lock ( ) . await ;
209+ let client = manager. get_client ( ) . await ?;
210+
207211 let query = "
208212 UPDATE connections
209213 SET downlink = $1, uplink = $2, online = $3
210214 WHERE id = $4" ;
211215
212- let client = self . client . lock ( ) . await ;
213216 client
214217 . execute (
215218 query,
@@ -225,25 +228,30 @@ impl PgConn {
225228 conn_id : & uuid:: Uuid ,
226229 status : ConnectionStatus ,
227230 ) -> Result < ( ) > {
231+ let mut manager = self . manager . lock ( ) . await ;
232+ let client = manager. get_client ( ) . await ?;
233+
228234 let query = format ! ( "UPDATE connections SET status = $1::conn_status WHERE id = $2" ) ;
229235
230- let client = self . client . lock ( ) . await ;
231236 client. execute ( & query, & [ & status, conn_id] ) . await ?;
232237
233238 Ok ( ( ) )
234239 }
235240
236241 pub async fn delete ( & self , conn_id : & uuid:: Uuid ) -> Result < ( ) > {
242+ let mut manager = self . manager . lock ( ) . await ;
243+ let client = manager. get_client ( ) . await ?;
244+
237245 let query = format ! ( "UPDATE connections SET is_deleted = true WHERE id = $1" ) ;
238246
239- let client = self . client . lock ( ) . await ;
240247 client. execute ( & query, & [ conn_id] ) . await ?;
241248
242249 Ok ( ( ) )
243250 }
244251
245252 pub async fn insert ( & self , conn : ConnRow ) -> Result < ( ) > {
246- let client = self . client . lock ( ) . await ;
253+ let mut manager = self . manager . lock ( ) . await ;
254+ let client = manager. get_client ( ) . await ?;
247255
248256 let query = "
249257 INSERT INTO connections (
@@ -315,7 +323,8 @@ impl PgConn {
315323 }
316324 }
317325 pub async fn update ( & self , conn : ConnRow ) -> Result < ( ) > {
318- let client = self . client . lock ( ) . await ;
326+ let mut manager = self . manager . lock ( ) . await ;
327+ let client = manager. get_client ( ) . await ?;
319328
320329 let query = "
321330 UPDATE connections SET
0 commit comments