44import java .sql .SQLException ;
55import java .util .HashMap ;
66import java .util .Optional ;
7+ import org .slf4j .Logger ;
8+ import org .slf4j .LoggerFactory ;
79import org .springframework .ai .chat .client .advisor .api .AdvisedRequest ;
810import org .springframework .ai .chat .client .advisor .api .AdvisedResponse ;
911import org .springframework .ai .chat .client .advisor .api .CallAroundAdvisor ;
@@ -23,23 +25,31 @@ public class DatabaseMetadataAdvisor implements CallAroundAdvisor {
2325 """ ;
2426
2527 private final DatabaseMetadataHelper databaseMetadataHelper ;
28+ private final String tableSchemas ;
29+ private static final Logger LOGGER = LoggerFactory .getLogger (
30+ DatabaseMetadataAdvisor .class );
2631
2732 public DatabaseMetadataAdvisor (
2833 DatabaseMetadataHelper databaseMetadataHelper ) {
2934 this .databaseMetadataHelper = databaseMetadataHelper ;
35+ this .tableSchemas = getDatabaseMetadata ();
36+ LOGGER .info ("Loaded database metadata: {}" , this .tableSchemas );
37+ }
38+
39+ private String getDatabaseMetadata () {
40+ try {
41+ return databaseMetadataHelper .extractMetadataJson ();
42+ } catch (SQLException e ) {
43+ LOGGER .error ("Failed to load database metadata" , e );
44+ throw new RuntimeException (e );
45+ }
3046 }
3147
3248 @ Override
3349 public AdvisedResponse aroundCall (AdvisedRequest advisedRequest ,
3450 CallAroundAdvisorChain chain ) {
3551 var systemParams = Optional .ofNullable (advisedRequest .systemParams ())
3652 .orElseGet (HashMap ::new );
37- var tableSchemas = "" ;
38- try {
39- tableSchemas = databaseMetadataHelper .extractMetadataJson ();
40- } catch (SQLException e ) {
41- throw new RuntimeException (e );
42- }
4353 systemParams .put ("table_schemas" , tableSchemas );
4454 var request = AdvisedRequest .from (advisedRequest )
4555 .withSystemText (DEFAULT_SYSTEM_TEXT )
0 commit comments