MCPcopy
hub / github.com/langchain-ai/langchainjs / SqlDatabase

Class SqlDatabase

libs/langchain-classic/src/sql_db.ts:31–192  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29 * @link See https://js.langchain.com/docs/security for more information.
30 */
31export class SqlDatabase
32 extends Serializable
33 implements SqlDatabaseOptionsParams, SqlDatabaseDataSourceParams
34{
35 lc_namespace = ["langchain", "sql_db"];
36
37 toJSON() {
38 return this.toJSONNotImplemented();
39 }
40
41 appDataSourceOptions: DataSourceOptions;
42
43 appDataSource: DataSourceT;
44
45 allTables: Array<SqlTable> = [];
46
47 includesTables: Array<string> = [];
48
49 ignoreTables: Array<string> = [];
50
51 sampleRowsInTableInfo = 3;
52
53 customDescription?: Record<string, string>;
54
55 protected constructor(fields: SqlDatabaseDataSourceParams) {
56 super(...arguments);
57 this.appDataSource = fields.appDataSource;
58 this.appDataSourceOptions = fields.appDataSource.options;
59 if (fields?.includesTables && fields?.ignoreTables) {
60 throw new Error("Cannot specify both includeTables and ignoreTables");
61 }
62 this.includesTables = fields?.includesTables ?? [];
63 this.ignoreTables = fields?.ignoreTables ?? [];
64 this.sampleRowsInTableInfo =
65 fields?.sampleRowsInTableInfo ?? this.sampleRowsInTableInfo;
66 }
67
68 static async fromDataSourceParams(
69 fields: SqlDatabaseDataSourceParams
70 ): Promise<SqlDatabase> {
71 const sqlDatabase = new SqlDatabase(fields);
72 if (!sqlDatabase.appDataSource.isInitialized) {
73 await sqlDatabase.appDataSource.initialize();
74 }
75 sqlDatabase.allTables = await getTableAndColumnsName(
76 sqlDatabase.appDataSource
77 );
78 sqlDatabase.customDescription = Object.fromEntries(
79 Object.entries(fields?.customDescription ?? {}).filter(([key, _]) =>
80 sqlDatabase.allTables
81 .map((table: SqlTable) => table.tableName)
82 .includes(key)
83 )
84 );
85 verifyIncludeTablesExistInDatabase(
86 sqlDatabase.allTables,
87 sqlDatabase.includesTables
88 );

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected