feat(iam): add @PrePersist callback to auto-populate User.createdAt
Add onCreate() method with @PrePersist annotation that sets createdAt to LocalDateTime.now() on first persist, consistent with other entities (UserTariff, CommunityTariff, etc.). Guard prevents overwriting existing values. Two new tests verify auto-population and idempotency.
This commit is contained in:
parent
f1cf152091
commit
3e336ca3c9
@ -65,6 +65,13 @@ public class User implements UserDetails {
|
||||
@Column(nullable = false)
|
||||
private boolean enabled = false;
|
||||
|
||||
@PrePersist
|
||||
protected void onCreate() {
|
||||
if (createdAt == null) {
|
||||
createdAt = LocalDateTime.now();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
|
||||
@ -33,4 +33,28 @@ class UserTest {
|
||||
|
||||
assertNull(user.getCreatedAt(), "createdAt should default to null (not auto-generated)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void prePersistSetsCreatedAt() {
|
||||
User user = new User();
|
||||
|
||||
LocalDateTime before = LocalDateTime.now();
|
||||
user.onCreate();
|
||||
LocalDateTime after = LocalDateTime.now();
|
||||
|
||||
assertNotNull(user.getCreatedAt(), "createdAt must be set by @PrePersist callback");
|
||||
assertFalse(user.getCreatedAt().isBefore(before), "createdAt must not be before test start");
|
||||
assertFalse(user.getCreatedAt().isAfter(after), "createdAt must not be after test end");
|
||||
}
|
||||
|
||||
@Test
|
||||
void prePersistDoesNotOverwriteExistingCreatedAt() {
|
||||
User user = new User();
|
||||
LocalDateTime fixed = LocalDateTime.of(2025, 1, 1, 12, 0);
|
||||
user.setCreatedAt(fixed);
|
||||
|
||||
user.onCreate();
|
||||
|
||||
assertEquals(fixed, user.getCreatedAt(), "createdAt must not be overwritten if already set");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user