Skip to content

Commit 4015cb5

Browse files
authored
fix: Call setParents on MemDB tables (#217)
I noticed the [table list for Bitbucket plugin is broken in the Hub](https://hub.cloudquery.io/plugins/source/cloudquery/bitbucket/latest/tables). The reason is that we don't call `setParents` thus publish all tables as top level ones. The UI then tries to render items with duplicate keys and fails. This PR fixes the MemDB plugin in the SDK which is used as a reference for other plugins. I'll fix the Bitbucket plugin in a separate PR. There might be a better way to implicitly initialize the parents but I don't we should spend more time on it
1 parent 8c8e684 commit 4015cb5

File tree

1 file changed

+64
-57
lines changed

1 file changed

+64
-57
lines changed

lib/src/main/java/io/cloudquery/memdb/MemDB.java

Lines changed: 64 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -23,64 +23,71 @@
2323

2424
public class MemDB extends Plugin {
2525
private static List<Table> getTables() {
26-
return List.of(
27-
Table.builder()
28-
.name("table1")
29-
.resolver(
30-
new TableResolver() {
31-
@Override
32-
public void resolve(
33-
ClientMeta clientMeta, Resource parent, TableOutputStream stream) {
34-
stream.write(
35-
Table1Data.builder()
36-
.id(UUID.fromString("46b2b6e6-8f3e-4340-a721-4aa0786b1cc0"))
37-
.name("name1")
38-
.timestamp(LocalDateTime.now())
39-
.json(Map.of("key1", "value1", "key2", "value2"))
40-
.build());
41-
stream.write(
42-
Table1Data.builder()
43-
.id(UUID.fromString("e89f95df-a389-4f1b-9ba6-1fab565523d6"))
44-
.name("name2")
45-
.build());
46-
}
47-
})
48-
.transform(TransformWithClass.builder(Table1Data.class).pkField("id").build())
49-
.build(),
50-
Table.builder()
51-
.name("table2")
52-
.resolver(
53-
new TableResolver() {
54-
@Override
55-
public void resolve(
56-
ClientMeta clientMeta, Resource parent, TableOutputStream stream) {
57-
stream.write(Table2Data.builder().id(1).name("name1").build());
58-
stream.write(Table2Data.builder().id(2).name("name2").build());
59-
}
60-
})
61-
.transform(TransformWithClass.builder(Table2Data.class).pkField("id").build())
62-
.relations(
63-
List.of(
64-
Table.builder()
65-
.name("table2_child")
66-
.resolver(
67-
new TableResolver() {
26+
List<Table> tables =
27+
List.of(
28+
Table.builder()
29+
.name("table1")
30+
.resolver(
31+
new TableResolver() {
32+
@Override
33+
public void resolve(
34+
ClientMeta clientMeta, Resource parent, TableOutputStream stream) {
35+
stream.write(
36+
Table1Data.builder()
37+
.id(UUID.fromString("46b2b6e6-8f3e-4340-a721-4aa0786b1cc0"))
38+
.name("name1")
39+
.timestamp(LocalDateTime.now())
40+
.json(Map.of("key1", "value1", "key2", "value2"))
41+
.build());
42+
stream.write(
43+
Table1Data.builder()
44+
.id(UUID.fromString("e89f95df-a389-4f1b-9ba6-1fab565523d6"))
45+
.name("name2")
46+
.build());
47+
}
48+
})
49+
.transform(TransformWithClass.builder(Table1Data.class).pkField("id").build())
50+
.build(),
51+
Table.builder()
52+
.name("table2")
53+
.resolver(
54+
new TableResolver() {
55+
@Override
56+
public void resolve(
57+
ClientMeta clientMeta, Resource parent, TableOutputStream stream) {
58+
stream.write(Table2Data.builder().id(1).name("name1").build());
59+
stream.write(Table2Data.builder().id(2).name("name2").build());
60+
}
61+
})
62+
.transform(TransformWithClass.builder(Table2Data.class).pkField("id").build())
63+
.relations(
64+
List.of(
65+
Table.builder()
66+
.name("table2_child")
67+
.resolver(
68+
new TableResolver() {
6869

69-
@Override
70-
public void resolve(
71-
ClientMeta clientMeta,
72-
Resource parent,
73-
TableOutputStream stream) {
74-
String parentName = parent.get("name").toString();
75-
stream.write(
76-
Table2ChildData.builder().name(parentName + "_name1").build());
77-
stream.write(
78-
Table2ChildData.builder().name(parentName + "_name2").build());
79-
}
80-
})
81-
.transform(TransformWithClass.builder(Table2ChildData.class).build())
82-
.build()))
83-
.build());
70+
@Override
71+
public void resolve(
72+
ClientMeta clientMeta,
73+
Resource parent,
74+
TableOutputStream stream) {
75+
String parentName = parent.get("name").toString();
76+
stream.write(
77+
Table2ChildData.builder()
78+
.name(parentName + "_name1")
79+
.build());
80+
stream.write(
81+
Table2ChildData.builder()
82+
.name(parentName + "_name2")
83+
.build());
84+
}
85+
})
86+
.transform(TransformWithClass.builder(Table2ChildData.class).build())
87+
.build()))
88+
.build());
89+
Tables.setParents(tables, null);
90+
return tables;
8491
}
8592

8693
private List<Table> allTables;

0 commit comments

Comments
 (0)