Skip to content

Commit 864bf8a

Browse files
committed
only add global version when required
1 parent 03e50ad commit 864bf8a

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

app/src/main/java/org/vss/impl/postgres/PostgresBackendImpl.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,22 @@ public GetObjectResponse get(GetObjectRequest request) {
4242
.and(VSS_DB.KEY.eq(request.getKey())))
4343
.fetchOne();
4444

45+
final KeyValue keyValue;
46+
4547
if (vssDbRecord != null) {
46-
return GetObjectResponse.newBuilder()
47-
.setValue(KeyValue.newBuilder()
48-
.setKey(vssDbRecord.getKey())
49-
.setValue(ByteString.copyFrom(vssDbRecord.getValue()))
50-
.setVersion(vssDbRecord.getVersion())
51-
.build())
48+
keyValue = KeyValue.newBuilder()
49+
.setKey(vssDbRecord.getKey())
50+
.setValue(ByteString.copyFrom(vssDbRecord.getValue()))
51+
.setVersion(vssDbRecord.getVersion())
5252
.build();
5353
} else {
54-
return GetObjectResponse.newBuilder()
55-
.setValue(KeyValue.newBuilder()
56-
.setKey(request.getKey()).build())
57-
.build();
54+
keyValue = KeyValue.newBuilder()
55+
.setKey(request.getKey()).build();
5856
}
57+
58+
return GetObjectResponse.newBuilder()
59+
.setValue(keyValue)
60+
.build();
5961
}
6062

6163
@Override
@@ -66,13 +68,15 @@ public PutObjectResponse put(PutObjectRequest request) {
6668
List<VssDbRecord> vssRecords = new ArrayList<>(request.getTransactionItemsList().stream()
6769
.map(kv -> buildVssRecord(storeId, kv)).toList());
6870

69-
VssDbRecord globalVersionRecord = buildVssRecord(storeId,
70-
KeyValue.newBuilder()
71-
.setKey(GLOBAL_VERSION_KEY)
72-
.setVersion(request.getGlobalVersion())
73-
.build());
71+
if (request.hasGlobalVersion()) {
72+
VssDbRecord globalVersionRecord = buildVssRecord(storeId,
73+
KeyValue.newBuilder()
74+
.setKey(GLOBAL_VERSION_KEY)
75+
.setVersion(request.getGlobalVersion())
76+
.build());
7477

75-
vssRecords.add(globalVersionRecord);
78+
vssRecords.add(globalVersionRecord);
79+
}
7680

7781
context.transaction((ctx) -> {
7882
DSLContext dsl = ctx.dsl();
@@ -99,11 +103,9 @@ private Query buildPutObjectQuery(DSLContext dsl, VssDbRecord vssRecord) {
99103

100104
private Insert<VssDbRecord> buildInsertRecordQuery(DSLContext dsl, VssDbRecord vssRecord) {
101105
return dsl.insertInto(VSS_DB)
102-
.select(dsl.select(val(vssRecord.getStoreId()), val(vssRecord.getKey()),
103-
val(vssRecord.getValue()), val(1))
104-
.whereNotExists(dsl.selectOne().from(VSS_DB)
105-
.where(VSS_DB.STORE_ID.eq(vssRecord.getStoreId())
106-
.and(VSS_DB.KEY.eq(vssRecord.getKey())))));
106+
.values(vssRecord.getStoreId(), vssRecord.getKey(),
107+
vssRecord.getValue(), 1)
108+
.onDuplicateKeyIgnore();
107109
}
108110

109111
private Update<VssDbRecord> buildUpdateRecordQuery(DSLContext dsl, VssDbRecord vssRecord) {

app/src/main/java/org/vss/impl/postgres/sql/v0_create_vss_db.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ CREATE TABLE vss_db (
22
store_id character varying(120) NOT NULL,
33
key character varying(120) NOT NULL,
44
value bytea NULL,
5-
version bigint NOT NULL
5+
version bigint NOT NULL,
6+
PRIMARY KEY (store_id, key)
67
);
78

0 commit comments

Comments
 (0)