Skip to content

Commit b6ca47d

Browse files
authored
Merge pull request #30 from G8XSU/times
Add created_at and last_updated_at timestamps
2 parents 7f492fc + 512c70f commit b6ca47d

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import com.google.inject.Inject;
44
import com.google.protobuf.ByteString;
5+
import java.time.OffsetDateTime;
6+
import java.time.ZoneOffset;
7+
import java.time.temporal.ChronoUnit;
58
import java.util.ArrayList;
69
import java.util.List;
710
import java.util.Map;
@@ -151,36 +154,41 @@ private Query buildPutObjectQuery(DSLContext dsl, VssDbRecord vssRecord) {
151154
private Query buildNonConditionalUpsertRecordQuery(DSLContext dsl, VssDbRecord vssRecord) {
152155
return dsl.insertInto(VSS_DB)
153156
.values(vssRecord.getStoreId(), vssRecord.getKey(),
154-
vssRecord.getValue(), 1)
157+
vssRecord.getValue(), 1, vssRecord.getCreatedAt(), vssRecord.getLastUpdatedAt())
155158
.onConflict(VSS_DB.STORE_ID, VSS_DB.KEY)
156159
.doUpdate()
157160
.set(VSS_DB.VALUE, vssRecord.getValue())
158-
.set(VSS_DB.VERSION, 1L);
161+
.set(VSS_DB.VERSION, 1L)
162+
.set(VSS_DB.LAST_UPDATED_AT, vssRecord.getLastUpdatedAt());
159163
}
160164

161165
private Insert<VssDbRecord> buildConditionalInsertRecordQuery(DSLContext dsl,
162166
VssDbRecord vssRecord) {
163167
return dsl.insertInto(VSS_DB)
164168
.values(vssRecord.getStoreId(), vssRecord.getKey(),
165-
vssRecord.getValue(), 1)
169+
vssRecord.getValue(), 1, vssRecord.getCreatedAt(), vssRecord.getLastUpdatedAt())
166170
.onDuplicateKeyIgnore();
167171
}
168172

169173
private Update<VssDbRecord> buildConditionalUpdateRecordQuery(DSLContext dsl, VssDbRecord vssRecord) {
170174
return dsl.update(VSS_DB)
171175
.set(Map.of(VSS_DB.VALUE, vssRecord.getValue(),
172-
VSS_DB.VERSION, vssRecord.getVersion() + 1))
176+
VSS_DB.VERSION, vssRecord.getVersion() + 1,
177+
VSS_DB.LAST_UPDATED_AT, vssRecord.getLastUpdatedAt()))
173178
.where(VSS_DB.STORE_ID.eq(vssRecord.getStoreId())
174179
.and(VSS_DB.KEY.eq(vssRecord.getKey()))
175180
.and(VSS_DB.VERSION.eq(vssRecord.getVersion())));
176181
}
177182

178183
private VssDbRecord buildVssRecord(String storeId, KeyValue kv) {
184+
OffsetDateTime today = OffsetDateTime.now(ZoneOffset.UTC).truncatedTo(ChronoUnit.DAYS);
179185
return new VssDbRecord()
180186
.setStoreId(storeId)
181187
.setKey(kv.getKey())
182188
.setValue(kv.getValue().toByteArray())
183-
.setVersion(kv.getVersion());
189+
.setVersion(kv.getVersion())
190+
.setCreatedAt(today)
191+
.setLastUpdatedAt(today);
184192
}
185193

186194
@Override

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@ CREATE TABLE vss_db (
33
key character varying(600) NOT NULL,
44
value bytea NULL,
55
version bigint NOT NULL,
6+
created_at TIMESTAMP WITH TIME ZONE,
7+
last_updated_at TIMESTAMP WITH TIME ZONE,
68
PRIMARY KEY (store_id, key)
79
);

app/src/test/java/org/vss/impl/postgres/PostgresBackendImplIntegrationTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ void destroy() throws Exception {
4848
private void createTable(DSLContext dslContext) {
4949
dslContext.execute("CREATE TABLE vss_db ("
5050
+ "store_id character varying(120) NOT NULL CHECK (store_id <> ''),"
51-
+ "key character varying(120) NOT NULL,"
51+
+ "key character varying(600) NOT NULL,"
5252
+ "value bytea NULL,"
5353
+ "version bigint NOT NULL,"
54+
+ "created_at TIMESTAMP WITH TIME ZONE,"
55+
+ "last_updated_at TIMESTAMP WITH TIME ZONE,"
5456
+ "PRIMARY KEY (store_id, key)"
5557
+ ");");
5658
}

0 commit comments

Comments
 (0)