-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReferenceDataSyncService.java
More file actions
57 lines (50 loc) · 2.13 KB
/
Copy pathReferenceDataSyncService.java
File metadata and controls
57 lines (50 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package dev.blaauwendraad.recipe_book.config;
import dev.blaauwendraad.recipe_book.data.model.RoleEntity;
import dev.blaauwendraad.recipe_book.data.model.RoleName;
import dev.blaauwendraad.recipe_book.repository.RoleRepository;
import io.quarkus.runtime.StartupEvent;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.event.Observes;
import jakarta.transaction.Transactional;
import java.util.List;
import java.util.Optional;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.jboss.logging.Logger;
@ApplicationScoped
public final class ReferenceDataSyncService {
private static final Logger log = Logger.getLogger(ReferenceDataSyncService.class);
private final RoleRepository roleRepository;
private final DemoDataSyncService demoDataSyncService;
@ConfigProperty(name = "quarkus.profile")
@SuppressWarnings({"NullAway.Init", "UnusedVariable"})
Optional<String> profile;
public ReferenceDataSyncService(DemoDataSyncService demoDataSyncService, RoleRepository roleRepository) {
this.demoDataSyncService = demoDataSyncService;
this.roleRepository = roleRepository;
}
public void syncReferenceData(@Observes StartupEvent startupEvent) {
syncRoles();
validateRoles();
if (profile.isPresent() && "dev".equals(profile.get())) {
demoDataSyncService.insertDemoData();
demoDataSyncService.insertDemoImage();
}
}
private void validateRoles() {
List<RoleEntity> roleEntities = roleRepository.listAll();
if (roleEntities.size() != RoleName.values().length) {
throw new IllegalStateException("Role table does not contain the expected number of roles.");
}
}
@Transactional
void syncRoles() {
for (RoleName roleName : RoleName.values()) {
if (roleRepository.findByName(roleName) == null) {
RoleEntity roleEntity = new RoleEntity();
roleEntity.roleName = roleName;
roleRepository.persistAndFlush(roleEntity);
log.infof("Inserted role with name %s", roleName);
}
}
}
}