The Game Panel specification

ADR-0011: Identifiers are ULIDs generated in PHP

Context

Entities need an identity model, and every entity type needs an identifier of its own.

Some rows need their identifier to exist before they are inserted, as outbox rows and queued jobs do.

The panel depends on symfony/uid, added for generating identifiers.

Decision

Entity identifiers are ULIDs, generated in PHP through symfony/uid before the row is inserted. Each entity type has its own identifier class, extending an abstract readonly EntityId. A ULID is validated when an identifier is constructed, and EntityId::make() generates a new identifier.

Alternatives

No alternatives were weighed.

Consequences

Easier:

Harder:

Constrained:

Sources