View Source Changelog
0-8-0-2023-03-27
[0.8.0] - 2023-03-27
added
Added
- Add
:to
option toCarbonite.override_mode/2
to specify an explicit target mode. Useful for toggling the mode around test fixtures.
0-7-2-2023-03-07
[0.7.2] - 2023-03-07
fixed
Fixed
- Fix
Carbonite.process/4
success typing by explicitly picking options.
0-7-1-2023-02-15
[0.7.1] - 2023-02-15
fixed-1
Fixed
- Fix
carbonite_prefix
onQuery.outbox_done/2
. Apply the prefix on the nested outbox query as well.
0-7-0-2023-02-15
[0.7.0] - 2023-02-15
fixed-2
Fixed
Carbonite.override_mode/2
and most functions inCarbonite.Query
were broken when using a non-defaultcarbonite_prefix
option. Fixed by moving theprefix
option onto thefrom
expression.
added-1
Added
- Added
:initially
option tocreate_trigger/2
to create triggers withIMMEDIATE DEFERRED
constraint option. This allows to conditionally insert theCarbonite.Transaction
record at the end of the transaction. In order to use this for already existing triggers, you need to drop them (drop_trigger/2
) and re-create them.
changed
Changed
- Made the changes trigger
DEFERRABLE
. As part of the:initially
option ofcreate_trigger/2
, we chose to make triggersDEFERRABLE
by default. Again, for any existing triggers, this won't take effect, but newly created triggers will use this constraint option. Dropped support for
preload: atom | [atom]
-style of specifying preloads on a query inCarbonite.Query
.
0-6-0-2022-10-12
[0.6.0] - 2022-10-12
New migration patches: 5
added-2
Added
- Optional tracking of previous data in changes. Set the
store_changed_from
trigger option.
changed-1
Changed
- Added
@schema_prefix "carbonite_default"
on all schemas. This will enable the manual usage ofRepo.insert/2
& friends on transactions without specifying a prefix, when using the default carbonite prefix.
0-5-0-2022-02-25
[0.5.0] - 2022-02-25
New migration patches: 4
switch-to-normal-identity-column-on-transactions
Switch to normal identity column on transactions
- The
id
column ontransactions
has been replaced with an ordinary autoincrementing integer PK, filled from a sequence. Next to it a newxact_id
column continues to store the transaction id (frompg_current_xact_id
). Both values used together ensure that, first theid
is monotonically increasing and survives a backup restore (see issue #45), and second thechanges
records can still only be inserted within the same transaction.
added-3
Added
Carbonite.Migrations.insert_migration_transaction/1
and its macro friend,insert_migration_transaction_after_begin
, help with data migrations.Carbonite.fetch_changes
returns the changes of the current (ongoing) transaction.
0-4-0-2021-11-07
[0.4.0] - 2021-11-07
New migration patches: 2, 3
switch-to-top-level-api-with-repo-param
Switch to top-level API with repo
param
Carbonite.override_mode/2
(kept a wrapper inCarbonite.Multi
)Carbonite.insert_transaction/3
(kept a wrapper inCarbonite.Multi
)Carbonite.process/4
(previouslyCarbonite.Outbox.process/3
with major changes)Carbonite.purge/2
(previouslyCarbonite.Outbox.purge/1
with major changes)
big-outbox-overhaul
Big outbox overhaul
- Split into query / processing
- Simplify processing
- No more transaction
- New capabilities: memo, halting, chunking
migration-versioning
Migration versioning
- Explicit for now with
Carbonite.Migrations.up(non_neg_integer())
Carbonite.Migrations.install_schema/1
is nowCarbonite.Migrations.up/2
Carbonite.Migrations.put_trigger_option/4
to ensure old migrations continue to work- At the same time removed long configuration statement from
Carbonite.Migrations.install_trigger/1
, so this does not need to be versioned and continues to work - Mix task for generating the "initial" migration
other-changes
Other Changes
- Optionally derive Jason.Encoder for
Carbonite.Transaction
andCarbonite.Change
- Made all prefix options binary-only (no atom) as
Ecto.Query.put_query_prefix/2
only accepts strings
0-3-1-2021-10-23
[0.3.1] - 2021-10-23
added-4
Added
table_prefix
option toQuery.changes/2
allows to override schema prefix of given recordQuery.transactions/1
query selects all transactions
0-3-0-2021-10-22
[0.3.0] - 2021-10-22
added-5
Added
Carbonite.Migrations.drop_tables/1
allows to drop the carbonite audit trail without removing the schema
changed-2
Changed
- Renamed the option that can be passed to
Carbonite.Migrations.drop_schema/1
fromprefix
tocarbonite_prefix
- Changed
Carbonite.Migrations.drop_schema/1
to also drop the tables - Made
Carbonite.Multi.insert_transaction/3
ignore conflictingINSERT
s within the same transaction - Also, changed
Carbonite.Multi.insert_transaction/3
to always reloads all fields from the database after insertion, immediately returning the JSONinifiedmeta
payload
fixed-3
Fixed
- Fixed ignore mode when
override_transaction_id
is NULL
0-2-1-2021-10-10
[0.2.1] - 2021-10-10
fixed-4
Fixed
- Fixed broken documentation
0-2-0-2021-10-10
[0.2.0] - 2021-10-10
added-6
Added
- Store primary key(s) on changes table and index them
- Add
Carbonite.Query
modulecurrent_transaction/2
allows to fetch the ongoing transaction (for sandbox tests)changes/2
allows to fetch the changes of an individual source record
- Update Postgrex to 0.15.11 and drop local
Xid8
type - Add
mode
field to trigger (capture or ignore) - Add "override mode" reversing the
mode
option for the current transaction to enable/disable capturing on demand (e.g. in tests) - Add filtered columns
changed-3
Changed
- Moved top-level functions to nested modules
Transaction
andMulti
- Made
table_pk
beNULL
whenprimary_key_columns
is an empty array - Default
primary_key_columns
to["id"]
- Renamed
prefix
option tocarbonite_prefix
oninstall_schema/2
for consistency
0-1-0-2021-09-01
[0.1.0] - 2021-09-01
- Initial release.