2.4. RQL usecases¶
2.4.1. Search bar¶
The search bar is available on a CubicWeb instance to use RQL and it’s use and configuration is described in the doc.
2.4.2. Use of RQL in Card documents - ReST¶
With a CubicWeb instance supporting object types with ReST content (for example Card), one can build content based on RQL queries as dynamic documents.
For this, use the rql and rql-table ReST directive, for more information about custom ReST directives head over to the sphinx documentation which uses them extensively.
2.4.3. rql directive¶
The rql directive takes as input an RQL expression and a view to apply to the result.
For example, create a Card content by opening http://cubicweb_example.org/add/Card and add the following content, as an example : a table of blog entries (10 most recent blog entries table with user and date information)
Recent blog entries ------------------- :rql:`Any B,U,D ORDERBY D DESC LIMIT 10 WHERE B is BlogEntry, B title T, B creation_date D, B created_by U:table`
2.4.4. rql-table directive¶
rql-table enables more customization, enabling you to modify the column (header) contents, and the view applied for a specific column (colvids).
For example, create a Card content by opening http://cubicweb_example.org/add/Card and add the following content
Blog entries with rql-table ----------------------------- .. rql-table:: :vid: table :headers: Title with link, who wrote it, at what date :colvids: 1=sameetypelist Any B,U,D ORDERBY D DESC LIMIT 10 WHERE B is BlogEntry, B title T, B creation_date D, B created_by U
All fields but the RQL string are optional. The
:headers: option can
contain empty column names.
2.4.5. Use in python projects and CLI¶
cwclientlib <https://pypi.org/project/cwclientlib/> enables you to use RQL in your python projects using only web requests. This project also provides a remote command line interface (CLI) you can use to replace a server side cubicweb-ctl shell.
cwclientelements <https://forge.extranet.logilab.fr/open-source/cwclientelements> is a library of reusable React components for building web application with cubicweb and RQL.