|
2 | 2 |
|
3 | 3 | import com.google.inject.Inject;
|
4 | 4 | import com.google.protobuf.ByteString;
|
| 5 | +import java.time.OffsetDateTime; |
| 6 | +import java.time.ZoneOffset; |
| 7 | +import java.time.temporal.ChronoUnit; |
5 | 8 | import java.util.ArrayList;
|
6 | 9 | import java.util.List;
|
7 | 10 | import java.util.Map;
|
@@ -151,36 +154,41 @@ private Query buildPutObjectQuery(DSLContext dsl, VssDbRecord vssRecord) {
|
151 | 154 | private Query buildNonConditionalUpsertRecordQuery(DSLContext dsl, VssDbRecord vssRecord) {
|
152 | 155 | return dsl.insertInto(VSS_DB)
|
153 | 156 | .values(vssRecord.getStoreId(), vssRecord.getKey(),
|
154 |
| - vssRecord.getValue(), 1) |
| 157 | + vssRecord.getValue(), 1, vssRecord.getCreatedAt(), vssRecord.getLastUpdatedAt()) |
155 | 158 | .onConflict(VSS_DB.STORE_ID, VSS_DB.KEY)
|
156 | 159 | .doUpdate()
|
157 | 160 | .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()); |
159 | 163 | }
|
160 | 164 |
|
161 | 165 | private Insert<VssDbRecord> buildConditionalInsertRecordQuery(DSLContext dsl,
|
162 | 166 | VssDbRecord vssRecord) {
|
163 | 167 | return dsl.insertInto(VSS_DB)
|
164 | 168 | .values(vssRecord.getStoreId(), vssRecord.getKey(),
|
165 |
| - vssRecord.getValue(), 1) |
| 169 | + vssRecord.getValue(), 1, vssRecord.getCreatedAt(), vssRecord.getLastUpdatedAt()) |
166 | 170 | .onDuplicateKeyIgnore();
|
167 | 171 | }
|
168 | 172 |
|
169 | 173 | private Update<VssDbRecord> buildConditionalUpdateRecordQuery(DSLContext dsl, VssDbRecord vssRecord) {
|
170 | 174 | return dsl.update(VSS_DB)
|
171 | 175 | .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())) |
173 | 178 | .where(VSS_DB.STORE_ID.eq(vssRecord.getStoreId())
|
174 | 179 | .and(VSS_DB.KEY.eq(vssRecord.getKey()))
|
175 | 180 | .and(VSS_DB.VERSION.eq(vssRecord.getVersion())));
|
176 | 181 | }
|
177 | 182 |
|
178 | 183 | private VssDbRecord buildVssRecord(String storeId, KeyValue kv) {
|
| 184 | + OffsetDateTime today = OffsetDateTime.now(ZoneOffset.UTC).truncatedTo(ChronoUnit.DAYS); |
179 | 185 | return new VssDbRecord()
|
180 | 186 | .setStoreId(storeId)
|
181 | 187 | .setKey(kv.getKey())
|
182 | 188 | .setValue(kv.getValue().toByteArray())
|
183 |
| - .setVersion(kv.getVersion()); |
| 189 | + .setVersion(kv.getVersion()) |
| 190 | + .setCreatedAt(today) |
| 191 | + .setLastUpdatedAt(today); |
184 | 192 | }
|
185 | 193 |
|
186 | 194 | @Override
|
|
0 commit comments