Skip to content

Commit

Permalink
avniproject#786 | Added a check for metabaseGroup and permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
ombhardwajj committed Sep 14, 2024
1 parent d336318 commit ec064aa
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public GroupPermissionsGraphResponse getPermissionsGraph() {
return getForObject(url, GroupPermissionsGraphResponse.class);
}

public void updatePermissionsGraph(GroupPermissionsService permissions, int groupId, int databaseId) {
public void updatePermissionsGraph(GroupPermissionsService permissions) {
String url = metabaseApiUrl + "/permissions/graph";
Map<String, Object> requestBody = permissions.getUpdatedPermissionsGraph();
sendPutRequest(url, requestBody);
Expand All @@ -40,4 +40,25 @@ public List<GroupPermissionResponse> getAllGroups() {
GroupPermissionResponse[] response = getForObject(url, GroupPermissionResponse[].class);
return Arrays.asList(response);
}

public void updateGroupPermissions(int groupId, int databaseId) {
GroupPermissionsService groupPermissions = new GroupPermissionsService(getPermissionsGraph());
groupPermissions.updatePermissions(groupId, databaseId);
updatePermissionsGraph(groupPermissions);
}


public Group findOrCreateGroup(String name, int databaseId, int collectionId) {
List<GroupPermissionResponse> existingGroups = getAllGroups();

for (GroupPermissionResponse group : existingGroups) {
if (group.getName().equals(name)) {
return new Group(group.getName(), group.getId());
}
}

Group newGroup = save(new Group(name));
updateGroupPermissions(newGroup.getId(), databaseId);
return newGroup;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.HashMap;
import java.util.Map;

import org.avni.server.dao.metabase.CollectionPermissionsRepository;
import org.springframework.stereotype.Component;

@Component
Expand Down Expand Up @@ -55,4 +56,9 @@ public Map<String, Object> getUpdatedPermissionsGraph() {
public CollectionPermissionsGraphResponse getPermissionsGraph() {
return permissionsGraph;
}

public void updateAndSavePermissions(CollectionPermissionsRepository collectionPermissionsRepository, int groupId, int collectionId) {
updatePermissions(groupId, collectionId);
collectionPermissionsRepository.updateCollectionPermissions(this, groupId, collectionId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class MetabaseService {

Expand Down Expand Up @@ -57,15 +54,12 @@ public void setupMetabase() {
globalCollection = new CollectionInfoResponse(null, metabaseCollection.getId(), false);
}

Group metabaseGroup = findOrCreateGroup(name);
Group metabaseGroup = groupPermissionsRepository.findOrCreateGroup(name, globalDatabase.getId(), globalCollection.getIdAsInt());

GroupPermissionsService groupPermissions = new GroupPermissionsService(groupPermissionsRepository.getPermissionsGraph());
groupPermissions.updatePermissions(metabaseGroup.getId(), globalDatabase.getId());
groupPermissionsRepository.updatePermissionsGraph(groupPermissions, metabaseGroup.getId(), globalDatabase.getId());

CollectionPermissionsService collectionPermissions = new CollectionPermissionsService(collectionPermissionsRepository.getCollectionPermissionsGraph());
collectionPermissions.updatePermissions(metabaseGroup.getId(), globalCollection.getIdAsInt());
collectionPermissionsRepository.updateCollectionPermissions(collectionPermissions, metabaseGroup.getId(), globalCollection.getIdAsInt());
CollectionPermissionsService collectionPermissions = new CollectionPermissionsService(
collectionPermissionsRepository.getCollectionPermissionsGraph()
);
collectionPermissions.updateAndSavePermissions(collectionPermissionsRepository, metabaseGroup.getId(), globalCollection.getIdAsInt());
}

public Database getGlobalDatabase() {
Expand All @@ -91,14 +85,4 @@ public CollectionInfoResponse getGlobalCollection() {
return globalCollection;
}

private Group findOrCreateGroup(String name) {
List<GroupPermissionResponse> existingGroups = groupPermissionsRepository.getAllGroups();
for (GroupPermissionResponse group : existingGroups) {
if (group.getName().equals(name)) {
return new Group( group.getName(),group.getId());
}
}
return groupPermissionsRepository.save(new Group(name));
}

}
14 changes: 14 additions & 0 deletions hs_err_pid11369.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000103ea9627, pid=11369, tid=0x0000000000001303
#
# JRE version: OpenJDK Runtime Environment (8.0_402) (build 1.8.0_402-bre_2024_03_05_05_38-b00)
# Java VM: OpenJDK 64-Bit Server VM (25.402-b00 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x442627] ObjectMonitor::EnterI(Thread*)+0x269
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# https://github.com/Homebrew/homebrew-core/issues

0 comments on commit ec064aa

Please sign in to comment.