Link Search Menu Expand Document

Views

Before diving into API generation, we need to describe the Views concept. Generally, a View is a subset of the model’s fields. Most often, Views are used to limit the data which is returned by certain API methods. Jinn also uses views to define a subset of fields accepted by create and update API methods. There are no restrictions for using views outside of Jinn-generated API, which is why they have their own definition section.

Let’s check an example:

User:
  properties:
    name: string
    email: { type: string, unique: true }
    password: string
  views:
    default:
      - name
      - email

Here we define a simple view named default which can be used to return user information excluding the password.

Extending Views

Larger entities may require having several similar views. Copying almost all fields into each view will be against Jinn’s ideology, so there is a better way to achieve this: extend views.

User:
  properties:
    name: string
    email: { type: string, unique: true }
    password: string
  views:
    create: ~ #copy all fields into the view
    update: 
      extends: create
      remove:
        - email #we don't want email to be editable
    get:
      extends: update
      remove:
        - password
      add:
        - email

Each view defined here is generated as a class and may be used in the API definition, as described below or elsewhere.


Next: APIs