The system performs certain actions before and after any CRUD operation. The overview is shown in the image below. We will explain each part in this section.
The system performs three kinds of Access Control before any CRUD operation:
Entity Based Access Control
Row Based Access Control
Column Based Access Control
Entity based checks if user has view access to a table. If user doesn't have view access, then the system throws an exception. And if user has view access, then the system checks which of the
DELETE accesses does the user have.
Row based checks which of the view,
DELETE accesses does the user have for the rows of a table. User can have view access for a table but he may not have view access for some rows of that table (they can see only 10 out of 12 rows for example). Developer can do this by configuring access controls of a table.
Column based check which of the view,
DELETE accesses does the user have for the columns of a table. User can have
UPDATE access for one row but may not have update access for one of the columns (let's say 2nd column) of that row. So, user can update all the columns in that row except that 2nd one. This can be done by configuring access controls of a table field.
The system performs basic column validation such as
Type: String, Integer,etc.
Not null constraint: can it be null or not?
Length constraint: is it in range of min and max length?
Value constraint: is it in range of min and max value?
The system checks if user added table events. Pre-CRUD operations: before insert, before delete, and before update. After-CRUD operations: after insert, after delete, and after update. If there is any operation, the system runs the table event script that user wrote.
The system can log every single action of a user. Like git commits you can see who did what and when. This is important in a business application for security reasons.
In Master-Detail relationship, the system performs all of the actions (in diagram) for detail component as well.
The system has built-in workflow engine that provides certain procedural rules for actions. For example, in order to perform an action
x first it needs to perform actions
The system does conversion from a data source to another data source. For example, when user converts a table to a form. The system takes data from
table table and inserts into
User can configure the system to send email or SMS messages to certain users after actions like update, insert, and delete.
The system creates a message like "user created a table tbl_product" in activity feed. And since our VCS tracks all the metadata, the system shows plus signs next to modified components to let user know that they can commit their changes.