async def save_instances( instances: Iterable[DeclarativeMeta], *, cls: DeclarativeMeta, connection: ConnectionType, is_mysql: bool) -> List[int]: columns_names = list(cls.columns_fields_names()) primary_key = await get_primary_key(table=cls.__table__) primary_key_column_index = columns_names.index(primary_key) columns_names.pop(primary_key_column_index) unique_columns_names = await get_unique_columns_names(cls.__table__) returning_columns_names = [primary_key] def record_without_id(instance: DeclarativeMeta ) -> RecordType: res = list(instance.record) res.pop(primary_key_column_index) return tuple(res) records = map(record_without_id, instances) resp = await insert_returning( table_name=cls.__tablename__, columns_names=columns_names, unique_columns_names=unique_columns_names, returning_columns_names=returning_columns_names, records=records, merge=True, connection=connection, is_mysql=is_mysql) return [row[0] for row in resp]