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.