|
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