UNPKG

@langchain/community

Version:
1 lines • 2.76 kB
{"version":3,"file":"sqlite_where_builder.cjs","names":["conditions: WhereCondition","sqlParts: string[]","args: Record<string, InValue>","previousValue: Record<string, InValue>"],"sources":["../../src/utils/sqlite_where_builder.ts"],"sourcesContent":["import { InStatement, InValue } from \"@libsql/client\";\n\nexport type WhereCondition<\n // eslint-disable-next-line @typescript-eslint/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,AAAQ;CAER,YAAYA,YAA4B;EACtC,KAAK,aAAa;CACnB;CAED,mBAAqC;EACnC,MAAMC,WAAqB,CAAE;EAC7B,MAAMC,OAAgC,CAAE;AAExC,OAAK,MAAM,CAAC,QAAQ,UAAU,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;GACjE,MAAM,EAAE,UAAU,OAAO,GAAG;AAE5B,OAAI,aAAa,MAAM;IACrB,MAAM,eAAe,MAClB,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS,OAAO,CAAC,CACvC,KAAK,KAAK;IACb,SAAS,KACP,CAAC,0BAA0B,EAAE,OAAO,OAAO,EAAE,aAAa,CAAC,CAAC,CAC7D;IAED,MAAM,SAAS,MAAM,OACnB,CAACC,eAAwC,cAAc,UAAU;AAC/D,YAAO;MAAE,GAAG;OAAgB,GAAG,SAAS,OAAO,GAAG;KAAc;IACjE,GACD,CAAE,EACH;IAED,OAAO,OAAO,MAAM,OAAO;GAC5B,OAAM;IACL,SAAS,KACP,CAAC,0BAA0B,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,EAAE,QAAQ,CAC/D;IACD,KAAK,UAAU;GAChB;EACF;EAED,MAAM,MAAM,SAAS,SAAS,GAAG,SAAS,KAAK,QAAQ,EAAE,GAAG;AAC5D,SAAO;GAAE;GAAK;EAAM;CACrB;AACF"}