{"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"}