Core Concepts
Understand QInstance, metadata producers, records, actions, processes, and apps.
Metadata and data
QInstance contains application metadata. QTableMetaData describes a table; QFieldMetaData describes its fields. QRecord holds record values. QRecordEntity is an optional typed Java representation of a record. A metadata table does not itself create a SQL table: supply the schema and the matching backend mapping.
Tables
QTableMetaData, QProcessMetaData, and QAppMetaData are classes with fluent builders, not Java annotations. A table definition can be built directly:
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
QTableMetaData person = new QTableMetaData()
.withName("person")
.withLabel("People")
.withBackendName("rdbmsBackend")
.withPrimaryKeyField("id")
.withField(new QFieldMetaData("id", QFieldType.INTEGER))
.withField(new QFieldMetaData("name", QFieldType.STRING)
.withIsRequired(true));Register the table in a QInstance whose rdbmsBackend is already configured, and supply RDBMSTableBackendDetails for the actual SQL table. See Building Tables.
Actions and processes
Actions perform operations such as query, insert, update, and process execution using typed inputs and outputs. QContext holds the current instance and session for the thread. A process combines backend logic and, optionally, frontend interaction into steps.
Apps and QBits
An app groups tables, processes, and nested apps in the admin navigation. A QBit packages metadata and behavior for reuse in a host QInstance. Its configuration, dependencies, and supported QQQ versions are specific to that component.