Skip to content

Commit af28a05

Browse files
committed
Modify Cassandra version_successor table
change item_id_set to a singular item_id
1 parent 1a0acce commit af28a05

File tree

3 files changed

+13
-34
lines changed

3 files changed

+13
-34
lines changed

app/dao/versions/cassandra/CassandraVersionHistoryDagFactory.java

+7-14
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,21 @@
1515
package dao.versions.cassandra;
1616

1717
import com.google.common.base.CaseFormat;
18-
1918
import dao.versions.VersionHistoryDagFactory;
2019
import db.CassandraClient;
21-
import db.CassandraResults;
22-
import db.DbClient;
2320
import db.DbDataContainer;
2421
import exceptions.GroundException;
22+
import java.util.ArrayList;
23+
import java.util.HashSet;
24+
import java.util.List;
25+
import java.util.Set;
2526
import models.models.Structure;
2627
import models.versions.GroundType;
2728
import models.versions.Item;
2829
import models.versions.Version;
2930
import models.versions.VersionHistoryDag;
3031
import models.versions.VersionSuccessor;
3132

32-
import java.util.ArrayList;
33-
import java.util.HashSet;
34-
import java.util.List;
35-
import java.util.Set;
36-
3733
public class CassandraVersionHistoryDagFactory implements VersionHistoryDagFactory {
3834
private final CassandraClient dbClient;
3935
private final CassandraVersionSuccessorFactory versionSuccessorFactory;
@@ -87,14 +83,11 @@ public void addEdge(VersionHistoryDag dag, long parentId, long childId, long ite
8783
VersionSuccessor successor = this.versionSuccessorFactory.create(parentId, childId);
8884

8985
// Adding to the entry with id = successor.getId()
90-
List<DbDataContainer> predicate = new ArrayList<>();
86+
List<DbDataContainer> newValue = new ArrayList<>(), predicate = new ArrayList<>();
87+
newValue.add(new DbDataContainer("item_id", GroundType.LONG, itemId));
9188
predicate.add(new DbDataContainer("id", GroundType.LONG, successor.getId()));
9289

93-
// To add to a set column, must pass in a set containing the value(s) to add. See CasandraClient.addToSet
94-
Set<Long> setValues = new HashSet<>();
95-
setValues.add(itemId);
96-
97-
this.dbClient.addToSet("version_successor", "item_id_set", setValues, predicate);
90+
this.dbClient.update(newValue, predicate, "version_successor");
9891
dag.addEdge(parentId, childId, successor.getId());
9992
}
10093

app/dao/versions/cassandra/CassandraVersionSuccessorFactory.java

+5-17
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,13 @@
2020
import db.DbClient;
2121
import db.DbDataContainer;
2222
import exceptions.GroundException;
23+
import java.util.ArrayList;
24+
import java.util.List;
2325
import models.versions.GroundType;
2426
import models.versions.Version;
2527
import models.versions.VersionSuccessor;
2628
import util.IdGenerator;
2729

28-
import java.util.ArrayList;
29-
import java.util.HashSet;
30-
import java.util.List;
31-
import java.util.Set;
32-
3330
public class CassandraVersionSuccessorFactory implements VersionSuccessorFactory {
3431
private final CassandraClient dbClient;
3532
private final IdGenerator idGenerator;
@@ -73,11 +70,9 @@ public <T extends Version> List<VersionSuccessor<T>> retrieveFromDatabaseByItemI
7370
CassandraResults resultSet;
7471

7572
List<VersionSuccessor<T>> versionSuccessors = new ArrayList<>();
76-
resultSet = this.dbClient.selectWhereCollectionContains(
77-
"version_successor",
78-
DbClient.SELECT_STAR,
79-
"item_id_set",
80-
new DbDataContainer(null, GroundType.LONG, itemId));
73+
List<DbDataContainer> predicate = new ArrayList<>();
74+
predicate.add(new DbDataContainer("item_id", GroundType.LONG, itemId));
75+
resultSet = this.dbClient.equalitySelect("version_successor", DbClient.SELECT_STAR, predicate);
8176

8277
if (resultSet.isEmpty()) {
8378
throw new GroundException("No VersionSuccessor found with itemId " + itemId + ".");
@@ -142,13 +137,6 @@ public void deleteFromDestination(long toId, long itemId) throws GroundException
142137
do {
143138
long dbId = resultSet.getLong("id");
144139

145-
predicates.clear();
146-
predicates.add(new DbDataContainer("id", GroundType.LONG, dbId));
147-
Set<Long> value = new HashSet<>();
148-
value.add(itemId);
149-
150-
this.dbClient.deleteFromSet("version_successor", "item_id_set", value, predicates);
151-
152140
predicates.clear();
153141
predicates.add(new DbDataContainer("id", GroundType.LONG, dbId));
154142

scripts/cassandra/cassandra.cql

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ CREATE TABLE IF NOT EXISTS version_successor (
2222
id bigint PRIMARY KEY,
2323
from_version_id bigint,
2424
to_version_id bigint,
25-
item_id_set set<bigint>
25+
item_id bigint
2626
);
2727

28-
CREATE INDEX IF NOT EXISTS version_successor_ind on version_successor (item_id_set);
29-
3028
CREATE TABLE IF NOT EXISTS item (
3129
id bigint PRIMARY KEY
3230
);

0 commit comments

Comments
 (0)