Releases: Electron100/butane
0.8.1: dev dependency reference only by path (#375)
API Features
- Support is_in check in filter!/query! (#351)
- Allow any valid sqlite or pg connection string (#355)
- Add Many.set (#357)
- Allow Many.get after Many.delete (#356)
- Add support for dates (#348)
- impl PartialEq for AutoPk (#346)
- Create a ConnectionSpec from a database URI (#344)
- Add Backend.row_id_column (#329)
Library fixes & internal improvements
- Improve the comment on DataObjectOps::save (#350)
- Improve Many operation descriptions (#358)
- [butane_test_helper] Enhancements to improve API & testing (#363)
- Dependency updates
- Remove direct use of once_cell (#362)
- Use SQLite 3.35 DROP COLUMN (#340)
- Fix quoting of table names in queries (#338)
- [cli] return, not exit, from get_migrations (#335)
0.8
The major feature in this release is async support. Turn it on using
the async
feature. If you wish to use SQLite with async, you must
also enable async-adapter
. Enabling pg
automatically enables
async
(but the Postgres backend may still be used with sync
methods, enabling async does not disable synchronous usage).
For more about async support, see the README
Breaking Changes
-
In order to allow sync and async code to look as similar as possible
for types and traits which do not otherwise need separate sync and
async variants, several "Ops" traits have been introduced which
contain methods split off from prior types and traits and must now
be imported explicitly if you are not using the prelude (use butane::prelude::*
oruse butane::prelude_async::*
). The Ops
traits are:DataObjectOpsSync
/DataObjectOpsAsync
(for use withDataObject
)QueryOpsSync
/QueryOpsAsync
(for use withQuery
, less commonly needed directly if you use thequery!
orfilter!
macros)ForeignKeyOpsSync
/ForeignKeyOpsAsync
(for use withForeignKey
)ManyOpsSync
/ManyOpsAsync
(for use withMany
)
-
The
ConnectionManager
struct has moved frombutane::db::r2
to
butane::db
. It no longer implementsConnectionMethods
as this was
unnecessary due toDeref
. Thebutane::db::r2
module is no longer
public.
API Features
Library fixes & internal improvements.
0.7
We'd been too long without a public release, so there are a lot of changes here. Most of them are minor.
Breaking Changes
- The
#[auto]
attribute is replaced with theAutoPk
type. - Remove
ObjectState
and the auto-createdstate
field for each model (#151)
API Features
- Add
migrate
&unmigrate
toMigrations
(#250) - Expose PrimaryKeyType (#97)
- Allow deriving PrimaryKeyType (#245)
- Add Derive FieldType support for newtypes (#236, #99)
- Add
delete_migrations
toMigrationsMut
(#224) - Add
delete
toMany
(#146) - Add
load_ordered
toMany
(#131) - Support
Clone
for more types (#241, #107)
Library fixes & internal improvements
- Drop constraints before dropping tables (#253)
Clone
includesForeignKey
value (#244)- [pg] Use ALTER TABLE instead of copies (#243)
- Add equality of KnownId(t) and Known(t) (#234)
- Add references when adding/changing pg columns (#239)
- Avoid duplicate .table files (#225)
- Prevent unnecessary whitespace in sqlite SQL (#221)
- Create dir before lock to fix race condition in
FsMigrations
(#213) - Remove unused trait ModelTyped (#178)
- Fix sqlite foreign key support (#177)
- Use pretty json in .butane files (#175)
- Improve DataObject.save() generation (#171)
- Support BTreeMap for feature json (#164)
- Add database constraints (#158)
- Force stable ordering of migration operations (#155)
- Add more flexibility in type path matching in proc macro (#123)
- Upsert on save (#117)
- Improve checking for unitialized values added to a Many (#116)
- Quote reserved SQL words (#104)
- Allow type
serde_json::Value
(#106) - Fixes for new lints and warnings (various)
- Test expansion & improvements (various)
- Improved docs and examples (various)
- Improved logging (various)
- Dependency updates (various)
CLI features & interface changes
- Add
desribe-migration
command (#230) unmigrate
(instead ofrollback
) is the primary command for schema reverts. Rollback still works via alias. (#260)- Add
--verbose
flag (#205) - Add
--no-connect
flag to allowinit
without connecting (#195) - Add
--path
argument to set working directory (#130) - Add
backend
command for adding or removing backends from migrations (#198) - Add
detach-migration
command (see cli help for details) (#100)
CLI fixes & internal improvements
0.6.1
- Fix docs.rs build
- use resolver 2
0.6
- Add a
butane clean
command (#46) - More flexibility in accepting
DateTime
identifiers (#54) - Add
#[derive(FieldType)]
(#68) - Add missing Clone trait (#24)
- Allow feature postgres without chrono (#36)
- Add JSON support (#38)
- Remove unused features of dependencies (#47)
- Support HashMap with any value (#45)
- Add Debug trait to all data structures (#55)
- Support fake data (#57)
- Make load_first respect order and offset(#34)
- Reexposes r2d2::ManageConnection in r2 to prevent having to add r2d2 dependency directly to Cargo.toml (#35)
- Fix issue with many to many relationship not respecting renamed tables (#59)
- Updated to use Edition 2021
- Test improvements
- Dependency updates
- Example improvements
Contributors to this release: John Vandenberg, James Oakley, João M. Martins
0.5.1
- Add
try_get
to DataObject. This returns aResult<Option<T>>
rather thanResult<T>
. When it's expected that the object may not exist, this leads to slightly better ergonomics. - Support Chrono
DateTime<Utc>
likeNaiveDateTime
0.5
Many::add
now returns aResult
, which will indicate an error if used with an uninitialized primary key.- Dependency version updates and clippy bitrot
- Cleanup improvements to Postgres tests
0.4.3
Add butane
CLI commands clear
and collapse
clear
clears out all data from the database without affecting the schemacollapse
collapses all (applied) migrations into a single new migration.
0.4.2
- Add offset parameter to
Query
- Fix
BoolExpr::In
handling - Add
Many::remove
- Allow a
ForeignKey
to refer to the same type - Fix bug saving an object with an auto-pk and a
Many
field.
0.4.1
Add sqlite-bundled feature