Skip to content

Data Builder

The Archie Core Data Builder is a data modeling interface for defining database tables, field types, and relationships between tables.

To open the Data Builder, click Data Model in the sidebar, select the table you want to work on, and then click the Schema tab.

alt text

For each table defined, the Archie Core GraphQL engine creates GraphQL schema object types and the corresponding query, mutation, and subscription fields with resolvers automatically.

This means that all Create, Read, Update, and Delete (CRUD) actions, as well as real-time connections (websockets) are immediately available to use via the workspace’s unique API endpoint.

In the background, Archie Core provisions a dedicated PostgreSQL database instance for your workspace. PostgreSQL is an advanced open-source object-relational database known for its reliability and data integrity. It efficiently handles complex queries and fully supports ACID (Atomicity, Consistency, Isolation, Durability) compliance.

Click the + Add Table button to create a new table. The default name for new tables is “untitled_table”. All tables require unique names (attribute, workspace names and their plural form are reserved and cannot be used in any letter cases).

As soon as a table is created, corresponding GraphQL schema types and query, mutation, and subscription resolvers will be generated automatically.

alt text

After a table is created, fields and relations can be defined. All updates to a table are published in real-time, giving a seamless experience between defining a data model and having it be highly available.

As soon as a table is updated, its corresponding GraphQL schema types and query, mutation, and subscription resolvers will be updated automatically.

To ensure that table related errors and mistakes are minimized, Archie Core protects against many harmful actions. Some of these include:

  • A prompt that requires a Default Value will appear when changing a non-mandatory field to mandatory.
  • Date, Number, and Text field values are automatically converted when an existing field type is updated.
  • When changing a non-unique field to unique, current records are validated for having unique values.

To delete a table:

  1. Go to the table name and click ...
  2. Click Delete this Table.
  3. A confirmation dialog opens. Type in the table name and click Delete.

Danger: Deleted tables cannot be restored and any existing table records will be lost. Additionally, if there are tables that are related to the table being deleted - belongs to and has many, either specified as mandatory or not - those relations will be severed.

alt text

Archie Core supports three types of table relationships to be defined that are congruent with what to expect from relational databases:

TypeA to BB to A
one-to-oneRecords in table A may have_one or belong_to records in table B.Records in table B may have_one or belong_to records in table A.
one-to-manyRecord in table A may have_many records in table B.Records in table B may have_one or belong_to records in table A.

alt text

Defining a relationship between two tables can be accomplished by dragging and dropping one table onto another or by selecting Table as the Data Type when creating a new table field.

For specifying has many, has one and belongs to relationships between tables.

Configurations

  • Name: For selecting what table is to be related.
  • Related Table: The name of the relation as it appears on the corresponding table.
  • Type: Whether the relationship is has one or has many.
  • Description: An optional text box where you can write information about the field.
  • Mandatory: Whether the field relationship is required.

There are three table types: Custom, View and Data Type.

Custom tables are the tables created in any workspace by an administrator. They are fully customizable.

View Tables are virtual tables that aggregate fields from several tables into a single view. Under the hood, they are based on the result-set of an SQL statement. In a workspace, they can be created using the viewCreate GraphQL mutation in the API Explorer.

Types allow you to define a static, ordered set of mutually exclusive values. Unlike standard text fields, an Enum restricts the data entry to a specific list of pre-defined constants.

Common examples include status indicators (e.g., DRAFT, PUBLISHED, ARCHIVED), user roles, or category labels.

Using Enums in your database schema provides several key advantages:

  • Data Integrity: Enums enforce strict data validation at the database level. Since the field only accepts values from the defined list, it eliminates errors caused by typos or inconsistent naming conventions (e.g., preventing a mix of “High”, “high”, and “Hi” for a priority field).
  • Code Consistency: They provide a single source of truth for allowable values, making the application logic more predictable and easier to maintain.
  • Readability: Enums make data self-descriptive. A value like PAYMENT_FAILED is much more meaningful to developers and analysts than an arbitrary numerical code like error_code: 3.
  • Performance: In PostgreSQL, Enums are stored efficiently under the hood but presented as readable strings, offering a balance between performance and human readability.