doc/book/devrepo/entityclasses/load-sort.rst
author Philippe Pepiot <ph@itsalwaysdns.eu>
Tue, 31 Mar 2020 18:22:05 +0200
changeset 12966 6cd938c29ca3
parent 10491 c67bcee93248
permissions -rw-r--r--
[server] Make connection pooler configurable and set better default values Drop the configuration connections-pool-size and add new configurations options: * connections-pool-min-size. Set to 0 by default so we open connections only when needed. This avoid opening min-size*processes connections at startup, which is, it think, a good default. * connections-pool-max-size. Set to 0 (unlimited) by default, so we move the bottleneck to postgresql. * connections-idle-timeout. Set to 10 minutes. I don't have arguments about this except that this is the default in pgbouncer.


.. _FetchAttrs:

Loaded attributes and default sorting management
````````````````````````````````````````````````

* The class attribute `fetch_attrs` allows to define in an entity class a list of
  names of attributes that should be automatically loaded when entities of this
  type are fetched from the database using ORM methods retrieving entity of this
  type (such as :meth:`related` and :meth:`unrelated`). You can also put relation
  names in there, but we are limited to *subject relations of cardinality `?` or
  `1`*.

* The :meth:`cw_fetch_order` and :meth:`cw_fetch_unrelated_order` class methods
  are respectively responsible to control how entities will be sorted when:

  - retrieving all entities of a given type, or entities related to another

  - retrieving a list of entities for use in drop-down lists enabling relations
    creation in the editing view of an entity

By default entities will be listed on their modification date descending,
i.e. you'll get entities recently modified first. While this is usually a good
default in drop-down list, you'll probably want to change `cw_fetch_order`.

This may easily be done using the :func:`~cubicweb.entities.fetch_config`
function, which simplifies the definition of attributes to load and sorting by
returning a list of attributes to pre-load (considering automatically the
attributes of `AnyEntity`) and a sorting function as described below:

.. autofunction:: cubicweb.entities.fetch_config

In you want something else (such as sorting on the result of a registered
procedure), here is the prototype of those methods:


.. automethod:: cubicweb.entity.Entity.cw_fetch_order

.. automethod:: cubicweb.entity.Entity.cw_fetch_unrelated_order