1- use std:: sync:: Arc ;
21
32use color_eyre:: Result ;
4- use parking_lot:: RwLock ;
53use r2d2_sqlite:: SqliteConnectionManager ;
6- use rig:: prelude:: * ;
74use rig:: {
85 completion:: { Prompt , ToolDefinition } ,
6+ prelude:: * ,
97 providers,
108 tool:: Tool ,
119} ;
12- use rusqlite:: { params, Connection } ;
10+ use rusqlite:: params;
1311use serde:: { Deserialize , Serialize } ;
1412use serde_json:: json;
1513use serde_rusqlite:: from_row;
@@ -151,24 +149,34 @@ impl Tool for SocialCredit {
151149 async fn call ( & self , mut args : Self :: Args ) -> Result < Self :: Output , Self :: Error > {
152150 let mut user = {
153151 let db = self . 0 . get ( ) ?;
154- let mut stm = db. prepare ( "SELECT * FROM user WHERE id = ?" ) . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to prepare SQL query: {}" , err) ) ?;
152+ let mut stm = db
153+ . prepare ( "SELECT * FROM user WHERE id = ?" )
154+ . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to prepare SQL query: {}" , err) ) ?;
155155 stm. query_one ( [ self . 1 . to_string ( ) ] , |row| {
156156 from_row :: < User > ( row) . map_err ( |_| rusqlite:: Error :: QueryReturnedNoRows )
157157 } )
158- . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to query SQL query: {:?}" , err) ) . unwrap ( )
158+ . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to query SQL query: {:?}" , err) )
159+ . unwrap ( )
159160 } ;
160-
161+
161162 if args. remove == Some ( true ) && args. social_credit > 0 {
162163 args. social_credit = -args. social_credit ;
163164 }
164165
165166 user. social_credit += args. social_credit ;
166- user. update_sync ( & * self . 0 . get ( ) ?) . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to update SQL query: {:?}" , err) ) . unwrap ( ) ;
167+ user. update_sync ( & * self . 0 . get ( ) ?)
168+ . map_err ( |err| color_eyre:: eyre:: eyre!( "Failed to update SQL query: {:?}" , err) )
169+ . unwrap ( ) ;
167170 Ok ( user. social_credit )
168171 }
169172}
170173
171- pub async fn main ( database : r2d2:: Pool < SqliteConnectionManager > , user_id : u64 , message : & str , context : & str ) -> Result < String > {
174+ pub async fn main (
175+ database : r2d2:: Pool < SqliteConnectionManager > ,
176+ user_id : u64 ,
177+ message : & str ,
178+ context : & str ,
179+ ) -> Result < String > {
172180 // Create OpenAI client
173181 let openai_client = providers:: openai:: Client :: from_env ( ) ;
174182
@@ -177,12 +185,12 @@ pub async fn main(database: r2d2::Pool<SqliteConnectionManager>, user_id: u64, m
177185 {
178186 let db = database. get ( ) ?;
179187 let mut stm = db. prepare ( "SELECT * FROM memory WHERE user_id = ?" ) ?;
180- let mut rows = stm
188+ let rows = stm
181189 . query_map ( params ! [ user_id] , |row| {
182190 from_row :: < database:: Memory > ( row) . map_err ( |err| rusqlite:: Error :: InvalidColumnName ( err. to_string ( ) ) )
183191 } ) ?
184192 . flatten ( ) ;
185- while let Some ( row) = rows. next ( ) {
193+ for row in rows {
186194 memory. push_str ( & format ! ( "{}: {}\n " , row. key, row. content) ) ;
187195 }
188196 }
0 commit comments