@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 2.48 kB
Source Map (JSON)
{"version":3,"file":"sqlite_where_builder.cjs","names":[],"sources":["../../src/utils/sqlite_where_builder.ts"],"sourcesContent":["import { InStatement, InValue } from \"@libsql/client\";\n\nexport type WhereCondition<\n // oxlint-disable-next-line typescript/no-explicit-any\n Metadata extends Record<string, any> = Record<string, any>,\n> = {\n [Key in keyof Metadata]:\n | {\n operator: \"=\" | \">\" | \"<\" | \">=\" | \"<=\" | \"<>\" | \"LIKE\";\n value: InValue;\n }\n | {\n operator: \"IN\";\n value: InValue[];\n };\n};\n\ntype WhereInStatement = Exclude<InStatement, string>;\n\nexport class SqliteWhereBuilder {\n private conditions: WhereCondition;\n\n constructor(conditions: WhereCondition) {\n this.conditions = conditions;\n }\n\n buildWhereClause(): WhereInStatement {\n const sqlParts: string[] = [];\n const args: Record<string, InValue> = {};\n\n for (const [column, condition] of Object.entries(this.conditions)) {\n const { operator, value } = condition;\n\n if (operator === \"IN\") {\n const placeholders = value\n .map((_, index) => `:${column}${index}`)\n .join(\", \");\n sqlParts.push(\n `json_extract(metadata, '$.${column}') IN (${placeholders})`\n );\n\n const values = value.reduce(\n (previousValue: Record<string, InValue>, currentValue, index) => {\n return { ...previousValue, [`${column}${index}`]: currentValue };\n },\n {}\n );\n\n Object.assign(args, values);\n } else {\n sqlParts.push(\n `json_extract(metadata, '$.${column}') ${operator} :${column}`\n );\n args[column] = value;\n }\n }\n\n const sql = sqlParts.length ? `${sqlParts.join(\" AND \")}` : \"\";\n return { sql, args };\n }\n}\n"],"mappings":";AAmBA,IAAa,qBAAb,MAAgC;CAC9B;CAEA,YAAY,YAA4B;AACtC,OAAK,aAAa;;CAGpB,mBAAqC;EACnC,MAAM,WAAqB,EAAE;EAC7B,MAAM,OAAgC,EAAE;AAExC,OAAK,MAAM,CAAC,QAAQ,cAAc,OAAO,QAAQ,KAAK,WAAW,EAAE;GACjE,MAAM,EAAE,UAAU,UAAU;AAE5B,OAAI,aAAa,MAAM;IACrB,MAAM,eAAe,MAClB,KAAK,GAAG,UAAU,IAAI,SAAS,QAAQ,CACvC,KAAK,KAAK;AACb,aAAS,KACP,6BAA6B,OAAO,SAAS,aAAa,GAC3D;IAED,MAAM,SAAS,MAAM,QAClB,eAAwC,cAAc,UAAU;AAC/D,YAAO;MAAE,GAAG;OAAgB,GAAG,SAAS,UAAU;MAAc;OAElE,EAAE,CACH;AAED,WAAO,OAAO,MAAM,OAAO;UACtB;AACL,aAAS,KACP,6BAA6B,OAAO,KAAK,SAAS,IAAI,SACvD;AACD,SAAK,UAAU;;;AAKnB,SAAO;GAAE,KADG,SAAS,SAAS,GAAG,SAAS,KAAK,QAAQ,KAAK;GAC9C;GAAM"}