Tables - Flaarum Tutorials
A table is a store of similar information. In flaarum a table structure (or definition) is enforced. This helps checks for typing errors and reduces bugs in a setup.
Supported Data Types
The following datatypes are supported in flaarum:
- bool - saved as either 't' or 'f'.
- float - maps to the float64 golang type
- int - maps to the int64 golang type
- string - an indexed string
- text - its actually of golang string. Searchable by full text search and not by exact searches.
Table Defintion Statements
The syntax is very different from SQL. The syntax also does not support comments.
table: users fields: firstname string required surname string required email email unique required dob date biography text ::
- The primary key is automatically created. It is of type `int` and is named `id`. Also it is autoincremented and it is unique.
- Each section is ended with '::' and is compulsory even if only the fields section is present.
table: grades fields: userid int required grade int required creation_dt datetime remarkid int required creation_year int required :: foreign_keys: userid users on_delete_delete remarkid remarks on_delete_empty ::
- Foreign keys in Flaarum only supports linking against the `id` of a table.
- A foreign_key part takes either an on_delete_delete or an on_delete_empty or an on_delete_restrict with on_delete_restrict being the default.
table: logs1 table_type: logs fields: ipaddr string loggedin bool ::
- Tables of type logs have their ids to be set to a random string.
- Tables of types logs have an automatically created "created" field of type datetime
- You can only search a logs table with the created field or the id field.
Supported Actions on Tables
Tables can be deleted, emptied, renamed all from your own programs.