Releases: adonisjs/lucid
Releases · adonisjs/lucid
Added BaseSeeder and accept connection,client in model factories
Fixes to factories and seeds commands
Adding support for factories and seeds
- chore: update validator 1a6ed3b
- refactor: register seeds typings bf1e082
- refactor: bind Adonis/Lucid/Factory to ioc container 7a0c370
- chore: update dependencies 1772663
- feat: add support for seeders a213661
- feat: allow defining custom handler for generating stub ids e755e2e
- feat: add fakerjs fe0febe
- feat: implement factory model hooks and add ids stub calls d494f13
- improvement: rename to 4563a00
- improvement: improve overall factories API 7d8398c
- fix: pivot table insert attributes 934c33d
- ci: add debug log 0952dcc
- improvement: cleanup factory relationships structure 80d63d7
- chore: fix linting issues 28dae25
- feat: implement core of the factories 5c65731
- test: add test for select statement 3d50f77
- fix(commands): correct typo in migration:status description 3141153
- fix(QueryBuilder): support falsy values in between pairs (#556) 2d2e7cb
- test: await the call to refresh ff9fb2e
- feat(Model): make refresh chainable d09e3b5
- improvement(Model): make merge, fill & save chainable (#554) 7a518d8
- feat: add toObject method to model fa8ae6e
- improvement: remove max listeners limit from transaction client 1b99bb8
- fix: cast page and limit to numbers, since paginate receives input from the HTTP request bd38a5d
- fix: use deep equal diff to find dirty values 5ebbc9e
- fix: transform query aliases to lowercase, since postgresql converts them to lowercase ccc1ca4
- test: update expose port in docker test file ecfb1c6
- test: skip dialect version check for now a1e9079
- test: add tests to ensure that relationship query builder handles groupLimit properly 4e5f262
- feat: implement groupLimit for relationship preloading def372c
- chore: update dependencies 76037a6
- refactor: move relationships persistance hydration to relation class e443b20
Adding pagination hooks and bug fixes
Pagination hooks
We have added ORM hooks for pagination too.
beforePaginate
class User extends BaseModel {
@beforePaginate()
public static someMethod ([countQuery, query]) {
}
}
afterPaginate
class User extends BaseModel {
@afterPaginate()
public static someMethod (paginator) {
console.log(paginator.all())
console.log(paginator.total)
}
}
Commits
- chore: update dependencies f7bd18f
- feat: add pagination hooks 1f9b1d3
- fix: re-compute dirty properties after initiating auto update columns b309acb
- chore: update dependencies ef3cf10
- fix(serialization): pick all fields when pick property is undefined fa0a214
- improvement:
updateOrCreate
andupdateOrCreateMany
can handle concurrent updates too 5bee648 - chore: update dependencies 4754a8c
- chore: update dependencies ed90d3a
Improving model serialization process by allowing fields to pick or omit
The serialization process accepts a tree of fields to pick and omit for the model and its relationships. Example:
const user = await User.find(1)
user.serialize({
fields: ['username', 'email', 'id'],
})
// Verbose mode
user.serialize({
fields: {
pick: ['username', 'email', 'id'],
omit: ['id']
},
})
When pick and omit both have the same set of properties, the omit
will win.
Relationships
Quite often you would want to also cherry pick fields for relationships as well.
user.serialize({
fields: {
pick: ['username', 'email', 'id'],
omit: ['id']
},
relations: {
posts: {
fields: ['title', 'body', 'published_at']
}
}
})
Feels verbose?
Well, you will never type these fields to pick or omit manually. Usually, you will be following an API standard like JSONAPI, which allows the consumer of your API to specify the fields. There we will be a preprocessor in between the model.serialize
the user defined query string
options. That preprocessor will convert the query string to this tree.
Commits
- improvement: adding support to pick and omit fields during serialize process d3d4f92
Handful of bug fixes
- improvement: allow whereNot contraints for the unique and the exists rules 1bdf5e6
- feat: add
useTransaction
anduseConnection
methods 789f038 - improvement: making ddl queries compute the query method and not the pretty printer 7d40daf
- fix: update mysql config type to accept mysql2 as a client 2623e66
- fix: use for of loop to iterate over registered connections bfdf53a
Improvements to migrations dry run output
Improvements to logging and some new additions
Bug Fixes
- Fix
SimplePaginator.toJSON
static type
Improvements
- Do not register health checker, until one or more connections have health checks enabled
- Improvements to the query debugging. Now debugging can be control globally, at connection level or at query level.
Additions
- Added
findBy
andfindByOrFail
methods to model
Commits
- improvement: serialize datetime to iso string 7091bab
- feat: query.delete method, it is an alias for the existing .del method ea7166c
- improvement: protect preload method to be called from a deleted instance eaff60a
- feat: add findBy and findByOrFail methods 3d3a8f4
- improvement: streamline query logging by disabling knex logger and user event emitter 21f01d6
- improvement: register health checker only when one or more connections are using it 117ec61
- chore: update dependencies 7611427
- fix(types): fix type returned by SimplePaginator.toJSON (#535) e386e94
Removing redundant log statement
- fix: remove redundant console.log statement 1c1dd25
Improvements to the sync method, along with some bug fixes
- improvement: improve sync method to not select all pivot rows 76ebf32
- fix: always set updatedAt when model is dirty d7e5672
- fix: Database.transaction accept callback to be passed to the query client 5e07ed8
- chore: update dependencies 072c794
- fix(types): correct type of Model.createMany values parameter (#533) 6727f8e