With the two types of extensions we already saw, a lot can be done. We could create an extension that notifies us whenever an entity has been updated, by whom, or create URL-friendly names for entities. We know how to deal with entity versions; we could even extend that behavior to save all the previous versions of an entity and maintain a record history. Some behaviors, though, can still not be achieved with what we have seen.
If we want, we can create a soft delete, or ensure automatically that all database queries include
user_id so that a user can see only data that belongs to them. In the latter case, we will be able to easily add a value to a
user_id field on any entity before it is persisted, but while retrieving ...