From 5026ad65d553fb7075e8855e77339fd79e87afc2 Mon Sep 17 00:00:00 2001 From: mweidner037 <17693586+mweidner037@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:08:26 -0400 Subject: [PATCH] Docs and changelog for 2.0.0 (#194) * changelog for 2.0.0 * migration guide * revisions --- CHANGELOG.md | 11 +++++++++++ README.md | 27 +++++++++++++++++++++++++++ mix.exs | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4936c22..7376927 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 2.0.0 + +* Change underlying driver from [`mongodb`](https://github.com/elixir-mongo/mongodb) to [`mongodb_driver`](https://github.com/zookzook/elixir-mongodb-driver) 1.4.0 +* Remove config options `pool`, `pool_overflow`, and `pool_timeout` +* Add support for MongoDB 6.0 and 7.0 +* Add support for loading & dumping nil binaries and dumping nil dates + +### Possible breaking changes + +Calls to the Ecto adapter itself should not require any changes. However, if you make direct calls to the `Mongo` driver, you will need to update some of them to account for the `mongodb` -> `mongodb_driver` upgrade. See [Migrating to 2.0](./README.md#migrating-to-20) in the Readme. + ## 1.1.2 * Add support for loading nil dates diff --git a/README.md b/README.md index c5f1c20..435b2d2 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,33 @@ Additionally special values are translated as follows: The adapter and the driver are tested against most recent versions from 5.0, 6.0, and 7.0. +## Migrating to 2.0 + +Release 2.0 changes the underlying driver from [`mongodb`](https://github.com/elixir-mongo/mongodb) to [`mongodb_driver`](https://github.com/zookzook/elixir-mongodb-driver) 1.4.0. Calls to the Ecto adapter itself should not require any changes. Some config options are no longer used and can be simply deleted: `pool`, `pool_overflow`, `pool_timeout`. + +If you make direct calls to the `Mongo` driver, you will need to update some of them to account for the `mongodb` -> `mongodb_driver` upgrade. Also, remember to replace `:mongodb` with `{:mongodb_driver, "~> 1.4.0"}` in your `mix.exs`. The known updates are: +1. `Mongo` functions no longer accept a `pool` option or `MyApp.Repo.Pool` module argument. Instead, a pool PID is expected: + ```elixir + # Old driver call + Mongo.find(MyApp.Repo.Pool, "my_coll", %{"id": id}, projection: %{"field": 1}, pool: db_pool()) + + # New driver call + Mongo.find(MyApp.Repo.pool(), "my_coll", %{"id": id}, projection: %{"field": 1}) + + # repo.ex + # Provided the following function is defined in MyApp.Repo: + defmodule MyApp.Repo do + use Ecto.Repo, otp_app: :my_app, adapter: Mongo.Ecto + + def pool() do + Ecto.Adapter.lookup_meta(__MODULE__).pid + end + end + ``` +2. [`Mongo.command`](https://hexdocs.pm/mongodb_driver/1.4.1/Mongo.html#command/3) requires a keyword list instead of a document. E.g., instead of `Mongo.command(MyApp.Repo.pool(), %{listCollections: 1}, opts)`, do `Mongo.command(MyApp.Repo.pool(), [listCollections: 1], opts)`. +3. `Mongo.ReadPreferences.defaults` is renamed to `Mongo.ReadPreference.merge_defaults`. +4. When passing a `hint` to `Mongo.find_one` etc., if the hinted index does not exist, an error is now returned. + ## Contributing To contribute you need to compile `Mongo.Ecto` from source and test it: diff --git a/mix.exs b/mix.exs index 8f2915f..8b7358a 100644 --- a/mix.exs +++ b/mix.exs @@ -2,7 +2,7 @@ defmodule Mongo.Ecto.Mixfile do use Mix.Project @source_url "https://github.com/elixir-mongo/mongodb_ecto" - @version "1.1.2" + @version "2.0.0" def project do [