feat: add NoTimestamp trait + ConvertEmptyStringsToNull middleware (#30)
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.
This commit is contained in:
parent
29d8045f57
commit
8e46d02ed1
17
app/Middleware/ConvertEmptyStringsToNull.js
Normal file
17
app/Middleware/ConvertEmptyStringsToNull.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
'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
|
15
app/Models/Traits/NoTimestamp.js
Normal file
15
app/Models/Traits/NoTimestamp.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
'use strict'
|
||||
|
||||
class NoTimestamp {
|
||||
register (Model) {
|
||||
Object.defineProperties(Model, 'createdAtColumn', {
|
||||
get () { return null }
|
||||
})
|
||||
|
||||
Object.defineProperties(Model, 'updatedAtColumn', {
|
||||
get () { return null }
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = NoTimestamp
|
|
@ -16,7 +16,8 @@ const globalMiddleware = [
|
|||
'Adonis/Middleware/BodyParser',
|
||||
'Adonis/Middleware/Session',
|
||||
'Adonis/Middleware/Shield',
|
||||
'Adonis/Middleware/AuthInit'
|
||||
'Adonis/Middleware/AuthInit',
|
||||
'App/Middleware/ConvertEmptyStringsToNull',
|
||||
]
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue
Block a user