Skip to main content
PersonMedia is a soft-deletable pivot (junction) entity that links a People record to a Media record, enabling a person to have one or more associated media assets (profile photos, avatars, documents). It carries no business attributes beyond its two foreign keys and lifecycle timestamps. The entity is workspace-scoped implicitly through its People relation; it belongs to the Supporting category alongside similar pivot tables such as CompanyMedia and PersonEmail. Every row is authored by the connector sync or enrichment pipeline; no public PATCH route exists for end-users to modify it directly.
Internal object. Not currently exposed on the public REST API. The operations below describe the intended contract.

API operations

Data model

Attributes

Relationships

System-computed

  • pk โ€” auto-increment serial integer, internal join key only; never exposed via the public API.
  • created_at โ€” set by MikroORM onCreate hook (onCreate: () => new Date()) at row insertion; not updated on subsequent writes.
  • deleted_at โ€” managed by the soft-delete lifecycle; NULL on creation, set to current timestamp when the pivot link is logically removed. Queries must always filter deleted_at IS NULL to respect soft-delete semantics.
  • Note on migration parity gap: the Migration20250919154301.ts DDL created the table with an updated_at timestamptz NULL column, but the entity class declares no @Property for updated_at. The column exists in the database but is unmapped in ORM layer โ€” it will remain NULL for all rows unless manually backfilled or the entity is amended.

Example

Source: apps/api/src/database/entities/PersonMedia.ts ยท domain: financial-graph ยท tier: Supporting