touchOnUpdate static method
ModelCrudMetadata
touchOnUpdate({
- required ModelCrudMetadata current,
- required String actor,
- DateTime? timestamp,
- bool bumpVersion = true,
Updates audit metadata for an existing record on modification.
Behavior:
- Keeps recordId, createdBy and createdAt unchanged.
- Sets updatedBy to
actor. - Sets updatedAt to
timestamp(UTC) orDateTime.now().toUtc(). - When
bumpVersionistrue(default), increments version as:(current.version ?? 0) + 1. - When
bumpVersionisfalse, preservescurrent.version.
This is typically used whenever the main record is updated.
Minimal runnable example:
void main() {
final DateTime createdAt = DateTime.utc(2025, 1, 1, 10);
final ModelCrudMetadata base = ModelCrudMetadata(
recordId: 'group-001',
createdBy: 'system@domain.com',
createdAt: createdAt,
updatedBy: 'system@domain.com',
updatedAt: createdAt,
version: 1,
);
final ModelCrudMetadata updated = ModelCrudMetadata.touchOnUpdate(
current: base,
actor: 'admin@domain.com',
);
print(updated.version); // 2
print(updated.updatedBy); // admin@domain.com
}
Implementation
static ModelCrudMetadata touchOnUpdate({
required ModelCrudMetadata current,
required String actor,
DateTime? timestamp,
bool bumpVersion = true,
}) {
final DateTime t = (timestamp ?? DateTime.now()).toUtc();
final int? newVersion =
bumpVersion ? ((current.version ?? 0) + 1) : current.version;
return current.copyWith(
updatedBy: actor,
updatedAt: t,
version: newVersion,
);
}