specs/models/M_TABLE_RECORD_FIELD

Table Record Field

A Table Field, aka a table column, describes a single property of a table record (see Table Record for details). The properties of a Table Record cannot be arbitrary; instead they must come from the fields for that table. This corresponds neatly with the concept of a field or column in a database.

All tables have a special field called the ID field which is added automatically and cannot be edited. In addition, it has a few special properties such as uniqueness and the fact that it cannot be edited after the record is created.

All tables also have 2 metadata fields “Date Created” and “Date Updated”. These are datetime fields that cannot be directly edited by the user, only viewed. They track when the record was created and last updated respectively.

All other fields are added by the user. Other fields are always optional. A record may or may not have an entry for any given field. In addition, when creating a field, the user may select the data type for that field which constraints what types of data can be stored in that field for any given record.

Properties of Fields

Table ID Fields are tied to a table. This is implicit in the UI.
Unique Name A unique name for a column that cannot change after creation. This is not visible in the UI, but is relevant when accessing the Tulip API.
Label The display name of the field. This is shown in the UI. This property can be changed after a field is created.
Description A short description of the field which can be added by the user.
Order The order fields are displayed. This is implicit in the UI.
Field type Entries in this field must be of this data type. See Field Types below for a full list. Cannot be changed after the field is created.
Hidden When deleting fields from a table, they are only soft deleted, which hides them in the UI. Soft deleted fields can later be restored, along with the corresponding data.
Unique Only true for the ID field. Displays an error to the user if they ever tries to create a record with a duplicate value in this field.

Field Types

Text Sometimes known as a string, this corresponds to the “text” type in postgres and can include any series of characters. The only restriction is that it must be less than 1 Gb as enforced by Postgres.
Number Otherwise known as a float, corresponds to a Postgres “double precision”. It can represent any real number with 15 decimal digits of precision.
Boolean A true of false value. Commonly displayed as a localized “Yes” or “No” in the UI.
Integer A number without a decimal point. Uses the Postgres “bigint” type. It can represent an integer between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807
Interval An interval of time. Internally, we represent this as a decimal number of seconds, though we often display with an hour:minutes:seconds.millseconds format.
Image A URL of an image. Users can manually enter a URL or upload the image to our storage.
User A string corresponding to the ID of a user within this Tulip instance
Datetime A Postgres “timestamp with time zone”, this is a specific time on a specific day. By convention, a day with time midnight is often used to refer to whole days.
Color An RGB color corresponding to the standard CSS representation for that color. https://developer.mozilla.org/en-US/docs/Web/CSS/color_value Often we display the color itself in a small palette in the UI.

ID Field

The ID field has a few special properties:

  • Every table includes an ID field when it is created which cannot be edited or removed
  • The ID field must be unique across all records in this table
  • The ID field is always data type "Text"
  • The ID field must be specified when adding a record, and cannot be edited after the record is created.

Date Created & Date Updated Fields

These fields share a few special properties:

  • By default, these fields are not visible. To see them, a user needs to toggle “View Metadata Fields”.
  • Every table is given an ID field when it is created and the field properties cannot be edited not can the fields be removed.
  • The value of these fields are updated automatically when the record is created or updated. (To be more precise, the Date Created field is only updated when the record is first created)
  • The data in these fields cannot be updated by the user.
  • These fields have type Datetime.

User Specified Fields

  • Can be created and deleted from the UI.
  • Users specify the label, type, and description for their field. Label and description can be edited after the field is created, but type cannot.
  • All user specified fields are optional, as in a record can either have a value for a given field or leave it blank
  • All user specified fields are not unique, so multiple records in the same table can have the same value for a given user specified field.
  • “Deleted” fields are really “deactivated” and can be restored
  • A table can have no more than 97 user specified fields.

Tests

IDName
QA-T84Table Management : 05 - Add columns to a table
QA-T85Table Management : 06 - Edit a table column
QA-T86Table Management : 07 - Edit a table column description
QA-T87Table Management : 08 - Delete a table column
QA-T88Table Management : 09 - Restore a deleted table column
QA-T89Table Management : 10 - Reorder table columns
QA-T93Table Management : 13 - Sort table records by column in table view
QA-T242Embedded Tables : 00 - Sort an embedded table
QA-T245Embedded Tables : 00 - Handle deleted fields in embedded tables