Toql derive reference

The derive provides struct level attributes and field level attributes. Here a list of all available attributes:

Attributes for structs

Attribute Description Example / Remark
tables Table renaming scheme for struct and joins CamelCase, snake_case, SHOUTY_SNAKE_CASE or mixedCase
table Table name for a struct or join table = "User" on struct NewUser will access table User
columns Column renaming scheme Same cases as above.
skip_mut No code for insert, delete and update For structs that are read only.
predicate Define a predicate predicate(name="test", sql="MATCH(..name, ..address) AGAINST (?)")
selection Define a selection selection(name="test", fields="*, address_street")
auto_key Key is generated in database auto_key updates struct keys after inserts.
roles Role restriction for load, update, insert, delete roles(update="admin;teacher", insert="admin")

Attributes for fields

Attribute Description Example / Remark
key Primary key For composite keys use multiple times. Skipped for insert, update.
column column name Use to overide default naming column="UserNamE"
sql Map field to SQL expression sql="..title" or sql="(SELECT o.name FROM Other o WHERE o.id = ..other_id)", skipped for insert, update.
skip Completly ignore field
skip_mut Ignore for updating Automatically added for keys and SQL expressions, add manually for db generated columns or safety restriction
skip_wildcard Don't include this field in wildcard selection Use for expensive subselects
join Required for fields that join other structs join(columns(self="address_id", other="id"))
merge Required for fields that are Vec<> merge(columns(self="address_id", other="id"))
handler Build SQL expression with code handler="get_handler", function returns struct implementing toql::prelude::FieldHandler
aux_param set aux_param Use to give parameters to a field handler aux_param(name="entity", value="USER")
roles role restriction for load, update roles(load="admin")
foreign_key The field is a foreign key. Update that field too, if struct is joined. Rarely needed.