docs: def import_fx_rates(self, rates: List[PriceModel]):
          """ Imports the given prices into database. Write operation! """
          have_new_rates = False
  
          base_currency = self.get_default_currency()
  
          for rate in rates:
              assert isinstance(rate, PriceModel)
  
              currency = self.get_by_symbol(rate.symbol)
              amount = rate.value
  
              # Do not import duplicate prices.
              # todo: if the price differs, update it!
              # exists_query = exists(rates_query)
              has_rate = currency.prices.filter(Price.date == rate.datetime.date()).first()
              # has_rate = (
              #     self.book.session.query(Price)
              #     .filter(Price.date == rate.date.date())
              #     .filter(Price.currency == currency)
              # )
              if not has_rate:
                  log(INFO, "Creating entry for %s, %s, %s, %s",
                      base_currency.mnemonic, currency.mnemonic, rate.datetime.date(), amount)
                  # Save the price in the exchange currency, not the default.
                  # Invert the rate in that case.
                  inverted_rate = 1 / amount
                  inverted_rate = inverted_rate.quantize(Decimal('.00000000'))
  
                  price = Price(commodity=currency,
                                currency=base_currency,
                                date=rate.datetime.date(),
                                value=str(inverted_rate))
                  have_new_rates = True
  
          # Save the book after the prices have been created.
          if have_new_rates:
              log(INFO, "Saving new prices...")
              self.book.flush()
              self.book.save()
          else:
              log(INFO, "No prices imported.")