Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clear database middleware and run middleware on batch creation #220

Merged
merged 2 commits into from
May 12, 2020

Conversation

madsodgaard
Copy link
Contributor

This PR adds a clear() method to Databases.Middleware to clear previously added middleware. This is useful for testing especially.

This PR also adds the functionality to the batch creation, that it runs model middleware as well, which it did not previously. Regarding the handling of potential failures inside middleware, I've added two options for now, but if you see any other ones that fit, please lmk.

You can do arrayOfModels.create(on: db, onMiddlewareFailure: .insertSucceeded) - This is the default one and saves all of the models where the middleware for that specific model did not fail, any other models where the middleware failed are not saved. I think this is the most useful one, in most cases I wouldn't want a batch of 100 models to fail if a single one had an issue with some middleware. But again open for discussion.

The other option is to do: arrayOfModels.create(on: db, onMiddlewareFailure: .failOnFirst) which doesn't save any models if any of the middleware fails, it fails fast on the first failure.

@tanner0101 tanner0101 added the enhancement New feature or request label Mar 26, 2020
@tanner0101 tanner0101 changed the base branch from master to gm May 12, 2020 14:59
Copy link
Member

@tanner0101 tanner0101 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@tanner0101 tanner0101 merged commit 071e164 into gm May 12, 2020
@tanner0101 tanner0101 deleted the batch-middleware branch May 12, 2020 15:01
tanner0101 added a commit that referenced this pull request May 29, 2020
* Uniform field paths (#268)

* unify field path structure for all drivers

* cleanup files

* rm dead code

* nested group option

* protocol cleanup + timestamp updates

* updates

* add Database.inTransaction (#192)

* optional field updates

* transaction + optional updates

* add batch delete, fixes #114

* add constraint names, fixes #118

* support arbitrary join ordering, fixes #128

* add nil update tests, fixes #149

* add EnumBuilder.read(), fixes #194

* support @OptionalParent eager load, fixes #208

* test alias nesting, fixes #223

* parent optional

* Fix dummy db placeholder (#200)

* Add tests for placeholder for dummy database

* Fix placeholder position

Placeholder position should start at 1, not 2.
No need to add 1 to position.

* Rename variable to result

* crud updates

* clear method and middleware in batch creation (#220)

Co-authored-by: Tanner <tannernelson@gmail.com>

* merge conflicts

* todo

* batch delete middleware

* Add entire models to the test database output. (#265)

Co-authored-by: Tanner <tannernelson@gmail.com>

* readble coding errors, fixes #231

* add decode test

* add alter table constraints, fixes #235

* skip constraint test sqlite

* fix @enum and @OptionalEnum decode, fixes #249

* add fluent sql sort overloads, fixes #266

* optional field batch create test, fixes #272

* add join partial select, fixes #274

* remove XCTUnwrap usages, fixes #278

* checkout postgres fluent gm branch

* fix unit tests

* setup dual dbs

* retest

* Make siblings relation properties public (#275)

* add filter to partial select, fixes #274

* fix @OptionalParent.get when nil

* add test for set to nil, fixes #284

* doc blocks

* updat license year

* use sqlite gm branch

* package update

* mysql updates

* fix workflows

* fluent branch

* update mongo

* rm nested

Co-authored-by: Jean-Charles Campagne <jc.campagne@gmail.com>
Co-authored-by: Mads Odgaard <mads@madsodgaard.com>
Co-authored-by: Mathew Polzin <matt.polzin@gmail.com>
Co-authored-by: Florian Friedrich <ffried@me.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants