SPECIFICATION VERSION

     1

ABSTRACT

    This document describes TableDef, a way to define table data.

SPECIFICATION

    In this document, hashes are written in JSON or pseudo-JSON (e.g.
    contains ellipsis ... or JavaScript-style comments // ...).

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL "NOT",
    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
    document are to be interpreted as described in RFC 2119.

    A TableDef spec is written in DefHash. It can be used to describe the
    structure of a relational database table, a CSV file, or an array of
    hashes. Tools can be written to convert a TableDef hash to SQL's CREATE
    TABLE statement, or to utilize information in the TableDef hash to
    format an HTML table, to view a DB grid on the web browser, etc.

 Properties

  summary => str

    From DefHash. Table summary.

  description => str

    From DefHash. Table longer description.

  tags => array

    From DefHash.

  fields => hash

    A hash, where the keys are field names and the values field
    specification. See "FIELD SPECIFICATION".

  pk => str | array

    Specify the primary key for the table. Either a string containing a
    single field name, or an array of field names (for multi-field key).

FIELD SPECIFICATION

    A DefHash.

 Properties

  schema* => str | array

    Sah schema. This property is required.

  summary => str

    From DefHash. Field summary.

  description => str

    From DefHash. Field longer description.

  tags => array

    From DefHash.

  pos => int

    Specify the order of field. Must start from 0 and be contiguous.

  req => bool (default: 0)

    Whether this field is mandatory to be present. If 0, then function can
    choose to omit the field.

  sortable => bool (default: 1)

    Specify whether this field can be sorted.

  filterable => bool (default: 1)

    Specify whether this field can be used as a filter.

  unique => bool

    Specify whether this field must contain unique values.

  include_by_default => bool (default: 1)

    This specifies that this field should be shown or included on "default
    view". What default view is will depend on the context or
    implementation. Usually you can set this to 0 if the field content is
    too long or wide. For example, in Perl module
    Perinci::Sub::Gen::AccessTable, if you give detail => 1 to the
    generated function, it will include all fields except fields that has
    this property set to 0. To include such fields, you'll need to
    explicitly issue with.FIELDNAME => 1.

