Skip to content
Updated Sep 12, 2026 by Barča Dvořáková · Owner: analysisactiveconceptgeneric Edit on GitHub

lookupTable ​

Concept layer — frozen. The Lookup Tables generic. Nothing here is written by a normal playbook run; a project's own feature analysis is the live document and takes every edit. This layer names no project and links to none — the dependency runs one way, from an application to its concept.

Feature: Lookup Tables

Entity: lookupTable

Description: The lookup tables store values that are not tightly bound to the core application logic. These values are configurable at runtime — when you add, remove or update them in the database, the changes are automatically reflected across the application without requiring any code changes.

Entity Type: Table — lookupTables

Attribute NameDescriptionData TypeDefault ValueRequired (= Nullable)UniqueFormatValidationsIndexExample
idUnique identifier for the recordUUID v7Auto-generated (in code)YesYes-Must be a unique identifierPrimary Key123e4567-e89b-12d3-a456-426614174000
lookupKeyThe identifier used to retrieve the corresponding lookup values from the lookup table.String-YesNolt.keyMust not be an empty stringname: idx_lookupTables_active_lookupKey, type: btreelt.education
lookupValueThe actual value of the lookup table instance returned from the API.String-YesNo-Must not be an empty string-cs
attributesExtra attributes unique to this lookup tableJSONB-NoNoJSON--{ "isEuCountry": true }
positionUsed for ordering when the lookup table is displayed in a dropdownInteger-NoNoShould be a positive number--1
activeIndicates whether the lookup table is active or notBooleanTrueYesNo--name: idx_lookupTables_active_lookupKey, type: composite btreetrue
createdAtTimestamp of entity creationtimestamp with time zonenow() — assigned in codeYesNoISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ--2025-03-16T18:00:00Z
updatedAtTimestamp of last entity updatetimestamp with time zonenow() — assigned in codeYesNoISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ--2025-03-16T18:00:00Z
deletedAtTimestamp of entity soft delete. Once set (that is, once it is non-null), this value is immutable and cannot be changed.timestamp with time zone-No-ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ--null
createdByIdentifier of the author who created this record.String-YesNotype:actor--user:c2d3f586-1c9a-4f5f-b9ae-45f2c4f69f7e
updatedByString that identifies the author who last updated this record.String-YesNotype:actor--system:migration

Example Data ​

sql
INSERT INTO lookupTables (id, lookupKey, lookupValue, attributes, position, active,
                          createdAt, updatedAt, deletedAt, createdBy, updatedBy)
VALUES
  ('018fa51f-fd9f-7ccd-b7ec-74c755d5fd31', 'lt.locale', 'cs-CZ', null, 1, true,
   '2025-04-18T18:45:00+02:00', '2025-04-18T18:45:00+02:00', null, 'seed:init', 'seed:init'),
  ('018fa51f-fda0-7e61-a1b4-86d842ae27b3', 'lt.locale', 'en-GB', null, null, true,
   '2025-04-18T18:45:00+02:00', '2025-04-18T18:45:00+02:00', null, 'seed:init', 'seed:init');

Constraints & Indexes

  • (lookupKey, lookupValue) is unique among live rows.
  • The locale spelling in the example (cs-CZ) is illustrative, not a convention: a project fixes one spelling for locale values and uses it in the catalogue and in every label key — see Translations.
  • Ordering is by position, nulls last.
  • Index lookupKey together with active — an ordinary composite btree.