MCPcopy
hub / github.com/tortoise/tortoise-orm / _apply_on_conflict

Method _apply_on_conflict

tortoise/queryset.py:2092–2111  ·  view source on GitHub ↗

Apply ON CONFLICT ... DO UPDATE to both query variants.

(
        self,
        insert_query: QueryBuilder,
        insert_query_all: QueryBuilder,
        update_fields: Iterable[str],
        omit_fields: set[str],
    )

Source from the content-addressed store, hash-verified

2090 return [c for fn, c in zip(field_names, columns) if fn not in omit_fields]
2091
2092 def _apply_on_conflict(
2093 self,
2094 insert_query: QueryBuilder,
2095 insert_query_all: QueryBuilder,
2096 update_fields: Iterable[str],
2097 omit_fields: set[str],
2098 ) -> tuple[QueryBuilder, QueryBuilder]:
2099 """Apply ON CONFLICT ... DO UPDATE to both query variants."""
2100 effective_update_fields = (
2101 [f for f in update_fields if f not in omit_fields]
2102 if omit_fields
2103 else list(update_fields)
2104 )
2105 alias = f"new_{self.model._meta.db_table}"
2106 insert_query = insert_query.as_(alias).on_conflict(*(self._on_conflict or []))
2107 insert_query_all = insert_query_all.as_(alias).on_conflict(*(self._on_conflict or []))
2108 for update_field in effective_update_fields:
2109 insert_query = insert_query.do_update(update_field)
2110 insert_query_all = insert_query_all.do_update(update_field)
2111 return insert_query, insert_query_all
2112
2113 def _make_queries(self, omit_fields: set[str] | None = None) -> tuple[str, str]:
2114 if omit_fields is None:

Callers 1

_make_queriesMethod · 0.95

Calls 1

as_Method · 0.80

Tested by

no test coverage detected