8e46d02ed1
Hey! 👋
This PR add some middleware and traits by default.
**Middleware**:
- `AllowGuestOnly` throws an exception if you are authenticated.
- `ConvertEmptyStringsToNull` converts empty strings in the request body to `null`
**Trait**:
- `NoTimestamp` removes the need for `created_at` and `updated_at` fields.
- `FormatDate` formats the date following a convention.
**FormatDate**
The convention is:
- Ends with `_at` => DateTime
- Ends with `_on` => Date
You can change the format you use in your UI with two getters.
```js
class MyModel extends Model {
static get formatDate () { return 'DD.MM.YYYY' }
static get formatDateTime () { return 'DD.MM.YYYY HH:mm' }
}
```
You can also directly change default values inside the Trait since it is a user Trait and not defined in the core.
<hr>
If this is merged, I'll provide the same PR to the `API` blueprint.
18 lines
379 B
JavaScript
18 lines
379 B
JavaScript
'use strict'
|
|
|
|
class ConvertEmptyStringsToNull {
|
|
async handle ({ request }, next) {
|
|
if (Object.keys(request.body).length) {
|
|
request.body = Object.assign(
|
|
...Object.keys(request.body).map(key => ({
|
|
[key]: request.body[key] !== '' ? request.body[key] : null
|
|
}))
|
|
)
|
|
}
|
|
|
|
await next()
|
|
}
|
|
}
|
|
|
|
module.exports = ConvertEmptyStringsToNull
|