All Versions
5
Latest Version
Avg Release Cycle
138 days
Latest Release
1797 days ago

Changelog History

  • v1.3.0 Changes

    May 31, 2019

    🐛 Bug fixes

    • 🛠 Fixed compilation error when optional adapters are not included in downstream project.

    🔄 Changed

    • 🐳 docker-compose configuration that allows easy setup for test databases.
    • Triplex.create/1,2 now rolls back the prefix creation if the func fails with error tuple
    • 🍱 Now we support to Ecto 3! 🎉 But be aware that this new version does not support
      the old versions of Ecto, only 3.0 and up

    💥 Breaking changes

    ⬆️ It's not our fault, but there is a breaking change if you upgrade it because migration on
    Ecto 3 are ran on a different process.

    The problem you may find is basically with this kind of code:

    Repo.transaction(fn -\> {:ok, \_} = Triplex.create("tenant") User.insert!(%{name: "Demo user 1"}) User.insert!(%{name: "Demo user 2"})end)
    

    As Triplex.create/1 runs the tenant migrations, and they will run on different processes,
    you will get an error from your db saying that the given tenant prefix (schema or database
    depending on the db) does not exist.

    That occurs because the new processes will checkout a new connection to db, making them
    not aware of the current transaction, since it is on another db connection. But don't panic,
    we have a solution for you!

    Here is how you could achieve the same results on success or fail:

    Triplex.create\_schema("tenant", Repo, fn(tenant, repo) -\>Repo.transaction(fn -\> {:ok, \_} = Triplex.migrate(tenant, repo) User.insert!(%{name: "Demo user 1"}) User.insert!(%{name: "Demo user 2"}) tenant end)end)
    

    📚 For more details about these function check the online documentation for Triplex.create/1,2
    and Triplex.create_schema/1,2,3.

  • v1.3.0-rc.1 Changes

    March 07, 2019

    🐛 Bug fixes

    • 🛠 Fixed compilation error when optional adapters are not included in downstream project.

    🔄 Changed

    • 🐳 docker-compose configuration that allows easy setup for test databases.
  • v1.3.0-rc.0 Changes

    March 03, 2019

    ➕ Added

    • 👌 Support to MySQL 🐬

    🔄 Changed

    • Triplex.create/1,2 now rolls back the prefix creation if the func fails with error tuple
    • 🍱 Now we support to Ecto 3! 🎉 But be aware that this new version does not support
      the old versions of Ecto, only 3.0 and up

    💥 Breaking changes

    ⬆️ It's not our fault, but there is a breaking change if you upgrade it because migration on
    Ecto 3 are ran on a different process.

    The problem you may find is basically with this kind of code:

    Repo.transaction(fn -\> {:ok, \_} = Triplex.create("tenant") User.insert!(%{name: "Demo user 1"}) User.insert!(%{name: "Demo user 2"})end)
    

    As Triplex.create/1 runs the tenant migrations, and they will run on different processes,
    you will get an error from your db saying that the given tenant prefix (schema or database
    depending on the db) does not exist.

    That occurs because the new processes will checkout a new connection to db, making them
    not aware of the current transaction, since it is on another db connection. But don't panic,
    we have a solution for you!

    Here is how you could achieve the same results on success or fail:

    Triplex.create\_schema("tenant", Repo, fn(tenant, repo) -\>Repo.transaction(fn -\> {:ok, \_} = Triplex.migrate(tenant, repo) User.insert!(%{name: "Demo user 1"}) User.insert!(%{name: "Demo user 2"}) tenant end)end)
    

    📚 For more details about these function check the online documentation for Triplex.create/1,2
    and Triplex.create_schema/1,2,3.

  • v1.2.0 Changes

    December 19, 2017

    🚀 This is the official release of the candidate 1.2.0-rc.0

    🚀 For more details check the release canditate.

  • v1.2.0-rc.0 Changes

    November 24, 2017

    🚀 This is the release candidate for triplex new version!

    Hope to get an official review in a week or two!

    🔄 Changelog

    🚀 In short, this release has this three main changes:

    • 🔌 Plug as an optional dependency, so if you don't use any plug on your app, triplex will not add this dependency on your project.
    • 🚀 The support for using triplex on OTP releases, which I really didn't know we had a problem with, but now, thanks to @dustinfarris, we do not have it anymore! PS: if anyone does need this correction on a 1.1 patch release, please let me know.
    • 📄 Docs and README improved.
    • 🔨 Refactors on plug configs and method return values.

    🚀 The PR's in this release are:

    Thanks for all your work @dustinfarris!

    💥 Breaking changes

    For those who wonder, there were not big changes, but here is the list of what can break on your code.

    1. Some method return values changed on PR #42

    If you use any of the second element of the return on the following methods, be sure to check if they still work:

    • Triplex.create_schema/3 - this method was returning either the given func result (the 3rd param), which could be pretty much anything, or the result of a Ecto.Adapters.SQL.query/4 call, which also can change depending on ecto's version. Now it returns {:ok, tenant}, where tenant is the name of the tenant.

    If you need your func result, you can change your code as follows:

    # Thiscase Triplex.create\_schema("test", Repo, your\_func) do {:ok, func\_return} -\> func\_return {:error, reason} -\> raise reasonend# Becomes thiswith {:ok, \_} \<- Triplex.create\_schema("test", Repo), {:ok, func\_return} \<- your\_func.("test", Repo) do func\_returnelse {:error, reason} -\> raise reasonend
    
    • Triplex.create/2 - this method was returning {:ok, migrations}, where migrations was the list of migrations ran (which could be even an empty list). This changed because this method actually just delegates to Triplex.create_schema/3 sending Triplex.migrate/2 as the fun, so now it returns {:ok, tenant} as well.

    So if you need the migrations ran, here is how you should do:

    # Thiscase Triplex.create("test", Repo) do {:ok, migrations} -\> migrations {:error, reason} -\> raise reasonend# Becomes thiswith {:ok, \_} \<- Triplex.create\_schema("test", Repo), {:ok, migrations} \<- Triplex.migrate("test", Repo) do migrationselse {:error, reason} -\> raise reasonend
    

    🔨 2. Refactored Triplex.PlugConfig on #43

    🔧 This was a restructuring on the plugs configuration, which was only one configuration for all the plugs and now we changed to specific configs for each plug type.

    🚚 This only affects you if you were using the module Triplex.PlugConfig (which was completely removed) explicitly, otherwise you should be ok!