def apply_indexes()

in src/databao_context_engine/plugins/databases/table_builder.py [0:0]


    def apply_indexes(self, idx_cols: list[dict] | None) -> None:
        idx_groups = group_rows(idx_cols, ("table_name", "index_name"))
        by_table: dict[str, list[Index]] = defaultdict(list)

        for (table_name, idx_name), grp in idx_groups.items():
            grp.sort(key=lambda r: sort_position_by_key(r, "position"))
            first = grp[0]

            by_table[table_name].append(
                Index(
                    name=idx_name,
                    columns=[cast(str, r.get("expr")) for r in grp if r.get("expr") is not None],
                    unique=bool(coerce_bool(first.get("is_unique"), default=False)),
                    method=first.get("method"),
                    predicate=first.get("predicate"),
                )
            )

        for table_name, idxs in by_table.items():
            self.get_or_create_table(table_name).indexes = idxs