Skip to content

Commit 3fa63e8

Browse files
author
Ben Lei
committed
Enable serializing deleted record
1 parent 7d74011 commit 3fa63e8

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

skygear/src/androidTest/java/io/skygear/skygear/RecordSerializerUnitTest.java

+23
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public void testRecordDataKeyValidation() throws Exception {
6363
assertFalse(RecordSerializer.isValidKey("_created_by"));
6464
assertFalse(RecordSerializer.isValidKey("_updated_by"));
6565
assertFalse(RecordSerializer.isValidKey("_access"));
66+
assertFalse(RecordSerializer.isValidKey("_deleted"));
6667
assertFalse(RecordSerializer.isValidKey("_transient"));
6768

6869
assertTrue(RecordSerializer.isValidKey("hello"));
@@ -277,6 +278,17 @@ public void testRecordSerializeNull() throws Exception {
277278
assertTrue(jsonObject.isNull("null-value-key"));
278279
}
279280

281+
@Test
282+
public void testRecordSerializeDeleted() throws Exception {
283+
Record aDeletedNote = new Record("Note");
284+
aDeletedNote.deleted = true;
285+
286+
JSONObject jsonObject = RecordSerializer.serialize(aDeletedNote);
287+
288+
assertNotNull(jsonObject);
289+
assertTrue(jsonObject.getBoolean("_deleted"));
290+
}
291+
280292
@Test
281293
public void testRecordDeserializationNormalFlow() throws Exception {
282294
// prepare reference record data
@@ -532,6 +544,17 @@ public void testRecordDeserializeNull() throws Exception {
532544
assertEquals(JSONObject.NULL, aNote.get("null-value-key"));
533545
}
534546

547+
@Test
548+
public void testRecordDeserializeDeleted() throws Exception {
549+
JSONObject jsonObject = new JSONObject();
550+
jsonObject.put("_recordType", "Note");
551+
jsonObject.put("_recordID", "48092492-0791-4120-B314-022202AD3971");
552+
jsonObject.put("_deleted", true);
553+
554+
Record aDeletedNote = RecordSerializer.deserialize(jsonObject);
555+
assertTrue(aDeletedNote.deleted);
556+
}
557+
535558
@Test
536559
public void testRecordSerializeAndDeserialize() throws Exception {
537560
Record note = new Record("note");

skygear/src/main/java/io/skygear/skygear/Record.java

+4
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public class Record implements Parcelable {
4848
String updaterId;
4949
String ownerId;
5050

51+
boolean deleted;
52+
5153
Map<String, Object> transientMap;
5254

5355
Map<String, Object> data;
@@ -108,6 +110,8 @@ public Record(String type, String id, Map<String, Object>data) {
108110
this.createdAt = null;
109111
this.updatedAt = null;
110112

113+
this.deleted = false;
114+
111115
this.access = AccessControl.defaultAccessControl();
112116

113117
this.transientMap = new HashMap<>();

skygear/src/main/java/io/skygear/skygear/RecordSerializer.java

+9
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class RecordSerializer {
5252
private static final String RecordSerializationCreatorIDKey = "_created_by";
5353
private static final String RecordSerializationUpdaterIDKey = "_updated_by";
5454
private static final String RecordSerializationAccessKey = "_access";
55+
private static final String RecordSerializationDeletedKey = "_deleted";
5556
private static final String RecordSerializationTransientKey = "_transient";
5657

5758
private static final String TAG = "Skygear SDK";
@@ -66,6 +67,7 @@ public class RecordSerializer {
6667
RecordSerializationCreatorIDKey,
6768
RecordSerializationUpdaterIDKey,
6869
RecordSerializationAccessKey,
70+
RecordSerializationDeletedKey,
6971
RecordSerializationTransientKey
7072
);
7173

@@ -205,6 +207,10 @@ public static JSONObject serialize(Record record) {
205207
jsonObject.put(RecordSerializationOwnerIDKey, record.ownerId);
206208
}
207209

210+
if (record.deleted) {
211+
jsonObject.put(RecordSerializationDeletedKey, true);
212+
}
213+
208214
if (record.getAccess() != null) {
209215
jsonObject.put(
210216
RecordSerializationAccessKey,
@@ -276,6 +282,9 @@ public static Record deserialize(JSONObject jsonObject) throws JSONException {
276282
accessJsonArray = jsonObject.getJSONArray(RecordSerializationAccessKey);
277283
}
278284

285+
// handler _deleted
286+
record.deleted = jsonObject.optBoolean(RecordSerializationDeletedKey, false);
287+
279288
// handle _transient
280289
if (!jsonObject.isNull(RecordSerializationTransientKey)) {
281290
JSONObject transientObject = jsonObject.getJSONObject(RecordSerializationTransientKey);

0 commit comments

Comments
 (0)