namespace foodmarket.Domain.Common;

/// <summary>Маркер «сущность с optimistic concurrency token». Postgres-маппинг —
/// системная колонка <c>xmin</c> (тип <c>xid</c>), которая инкрементится
/// автоматически при UPDATE; EF читает текущее значение в SELECT и
/// сверяет в WHERE при следующем UPDATE — конкурирующий апдейт упадёт с
/// 0 affected rows и контроллер вернёт 409 Conflict.
///
/// Не требует миграции данных (xmin есть на каждой таблице), требует только
/// `e.UseXminAsConcurrencyToken()` в EF-конфигурации + объявление свойства
/// на entity. PUT-эндпоинты должны принимать <c>xmin</c> в body и
/// присваивать в trackedEntity до SaveChanges.</summary>
public interface IVersionedEntity
{
    uint Xmin { get; set; }
}
