© 2026 Hedgehog Software, LLC
const search = [ { table: "users", column: "name", value: "%John%", }, { table: "admins", column: "address", value: "%SmallTown%", }, ]; const conditions = new Set<SQL>(); const dynamicQuery = db.select().from(usersTable).$dynamic(); dynamicQuery.leftJoin(adminsTable, eq(adminsTable.userId, usersTable.id)); for (const filter of search) { let table; switch (filter.table) { case "users": table = usersTable; break; case "admins": table = adminsTable; break; default: throw Error("Invalid table"); } const propertyName = filter.column as keyof typeof table; const column = table[propertyName]; if (column) { conditions.add(like(column, filter.value)) } } dynamicQuery.where(and(...conditions)); console.log(dynamicQuery.toSQL());
conditions.add(like(column, filter.value))