.. _primary key: primary key =========== The *primary key* uniquely identifies each row. By default, Sedentary adds an implicit ``id`` attribute (INT, auto-increment). Use :ref:`ModelOptions.primaryKey` to specify a custom primary key, or :ref:`ModelOptions.parent` to inherit it. .. _ModelOptions: ModelOptions ============ .. code-block:: TypeScript interface ModelOptions { indexes?: IndexesDefinition; int8id?: boolean; parent?: Model; primaryKey?: string; sync?: boolean; tableName?: string; } Specifies the *options* for the :ref:`Model`. .. _ModelOptions.indexes: ModelOptions.indexes -------------------- - default: ``{}`` Defines the *indexes* of the :ref:`Model`. See :ref:`IndexesDefinition` for details. .. _ModelOptions.int8id: ModelOptions.int8id ------------------- - default: ``false`` If ``true``, the implicit ``id`` attribute used as :ref:`primary key` is of type ``INT8``, see :ref:`Data types` for details. .. note:: This option conflicts with :ref:`ModelOptions.parent` and :ref:`ModelOptions.primaryKey` ones. .. _ModelOptions.parent: ModelOptions.parent ------------------- - default: ``undefined`` If provided, defines the *parent* of the :ref:`Model`. This reflects both on *classes hierarchy* at **JavaScript** level and on *tables hierarchy* at *database* level. The :ref:`primary key` is inherited as well: neither an implicit ``id`` attribute is added nor can be specified through :ref:`ModelOptions.primaryKey` *option*. .. warning:: Not all the :ref:`database engine specialized packages` may support this option. .. note:: This option conflicts with :ref:`ModelOptions.int8id` and :ref:`ModelOptions.primaryKey` ones. .. _ModelOptions.primaryKey: ModelOptions.primaryKey ----------------------- - default: ``undefined`` The value must be the name of an attribute. If provided, defines the :ref:`primary key` of the :ref:`Model`. The implicit ``id`` attribute is not added to the :ref:`Model`. .. note:: This option conflicts with :ref:`ModelOptions.int8id` and :ref:`ModelOptions.parent` ones. .. _ModelOptions.sync: ModelOptions.sync ----------------- - default: :ref:`SedentaryOptions.sync` If ``false``, :ref:`Sedentary` does not sync the *table* associated to the :ref:`Model`, it simply checks if the :ref:`Model` is compliant with the *table* at *database* level. .. _ModelOptions.tableName: ModelOptions.tableName ---------------------- - default: same as the model ``name`` Overrides the name of the *table* at *database* level. By default, the table name equals the model name.