Skip to content

Cleanup: remove JSON based SQLite storage #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jul 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -479,12 +479,6 @@ public final class com/apollographql/cache/normalized/api/internal/BlobRecordSer
public final fun serialize (Lcom/apollographql/cache/normalized/api/Record;)[B
}

public final class com/apollographql/cache/normalized/api/internal/JsonRecordSerializer {
public static final field INSTANCE Lcom/apollographql/cache/normalized/api/internal/JsonRecordSerializer;
public final fun deserialize (Ljava/lang/String;Ljava/lang/String;)Lcom/apollographql/cache/normalized/api/Record;
public final fun serialize (Lcom/apollographql/cache/normalized/api/Record;)Ljava/lang/String;
}

public final class com/apollographql/cache/normalized/api/internal/Lock {
public fun <init> ()V
public final fun read (Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ final class com.apollographql.cache.normalized.api/Record : kotlin.collections/M
final val values // com.apollographql.cache.normalized.api/Record.values|{}values[0]
final fun <get-values>(): kotlin.collections/Collection<kotlin/Any?> // com.apollographql.cache.normalized.api/Record.values.<get-values>|<get-values>(){}[0]
final var dates // com.apollographql.cache.normalized.api/Record.dates|{}dates[0]
final fun <get-dates>(): kotlin.collections/Map<kotlin/String, kotlin/Long?>? // com.apollographql.cache.normalized.api/Record.dates.<get-dates>|<get-dates>(){}[0]
final fun <get-dates>(): kotlin.collections/Map<kotlin/String, kotlin/Long?> // com.apollographql.cache.normalized.api/Record.dates.<get-dates>|<get-dates>(){}[0]
final var metadata // com.apollographql.cache.normalized.api/Record.metadata|{}metadata[0]
final fun <get-metadata>(): kotlin.collections/Map<kotlin/String, kotlin.collections/Map<kotlin/String, kotlin/Any?>> // com.apollographql.cache.normalized.api/Record.metadata.<get-metadata>|<get-metadata>(){}[0]
// Targets: [js]
Expand Down Expand Up @@ -382,10 +382,6 @@ final object com.apollographql.cache.normalized.api.internal/BlobRecordSerialize
final fun deserialize(kotlin/String, kotlin/ByteArray): com.apollographql.cache.normalized.api/Record // com.apollographql.cache.normalized.api.internal/BlobRecordSerializer.deserialize|deserialize(kotlin.String;kotlin.ByteArray){}[0]
final fun serialize(com.apollographql.cache.normalized.api/Record): kotlin/ByteArray // com.apollographql.cache.normalized.api.internal/BlobRecordSerializer.serialize|serialize(com.apollographql.cache.normalized.api.Record){}[0]
}
final object com.apollographql.cache.normalized.api.internal/JsonRecordSerializer { // com.apollographql.cache.normalized.api.internal/JsonRecordSerializer|null[0]
final fun deserialize(kotlin/String, kotlin/String): com.apollographql.cache.normalized.api/Record // com.apollographql.cache.normalized.api.internal/JsonRecordSerializer.deserialize|deserialize(kotlin.String;kotlin.String){}[0]
final fun serialize(com.apollographql.cache.normalized.api/Record): kotlin/String // com.apollographql.cache.normalized.api.internal/JsonRecordSerializer.serialize|serialize(com.apollographql.cache.normalized.api.Record){}[0]
}
final object com.apollographql.cache.normalized.api/ApolloCacheHeaders { // com.apollographql.cache.normalized.api/ApolloCacheHeaders|null[0]
final const val DATE // com.apollographql.cache.normalized.api/ApolloCacheHeaders.DATE|{}DATE[0]
final fun <get-DATE>(): kotlin/String // com.apollographql.cache.normalized.api/ApolloCacheHeaders.DATE.<get-DATE>|<get-DATE>(){}[0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,12 @@ class MemoryCache(

private fun internalMerge(record: Record, cacheHeaders: CacheHeaders, recordMerger: RecordMerger): Set<String> {
val oldRecord = loadRecord(record.key, cacheHeaders)
val date = cacheHeaders.date()
val changedKeys = if (oldRecord == null) {
lruCache[record.key] = record
lruCache[record.key] = record.withDate(date)
record.fieldKeys()
} else {
val (mergedRecord, changedKeys) = recordMerger.merge(existing = oldRecord, incoming = record, newDate = null)
val (mergedRecord, changedKeys) = recordMerger.merge(existing = oldRecord, incoming = record, newDate = date)
lruCache[record.key] = mergedRecord
changedKeys
}
Expand Down Expand Up @@ -167,3 +168,20 @@ class MemoryCacheFactory @JvmOverloads constructor(
)
}
}

private fun CacheHeaders.date(): Long? {
return headerValue(ApolloCacheHeaders.DATE)?.toLong()
}

private fun Record.withDate(date: Long?): Record {
if (date == null) {
return this
}
return Record(
key = key,
fields = fields,
mutationId = mutationId,
dates = fields.mapValues { date },
metadata = metadata
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class Record(
val mutationId: Uuid? = null,
) : Map<String, Any?> by fields {

var dates: Map<String, Long?>? = null
var dates: Map<String, Long?> = emptyMap()
private set

/**
Expand All @@ -40,10 +40,10 @@ class Record(
key: String,
fields: Map<String, Any?>,
mutationId: Uuid?,
date: Map<String, Long?>,
dates: Map<String, Long?>,
metadata: Map<String, Map<String, Any?>>,
) : this(key, fields, mutationId) {
this.dates = date
this.dates = dates
this.metadata = metadata
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ object DefaultRecordMerger : RecordMerger {
key = existing.key,
fields = mergedFields,
mutationId = incoming.mutationId,
date = date,
dates = date,
metadata = existing.metadata + incoming.metadata,
) to changedKeys
}
Expand Down Expand Up @@ -115,7 +115,7 @@ class FieldRecordMerger(private val fieldMerger: FieldMerger) : RecordMerger {
key = existing.key,
fields = mergedFields,
mutationId = incoming.mutationId,
date = date,
dates = date,
metadata = mergedMetadata,
) to changedKeys
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ internal class Normalizer(
key = key,
fields = fieldValues,
mutationId = null,
date = emptyMap(),
dates = emptyMap(),
metadata = metadata,
)

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class RecordWeigherTest {
)
)

assertTrue(record.sizeInBytes <= 250)
assertTrue(record.sizeInBytes >= 246) // JS takes less space, maybe for strings?
assertTrue(record.sizeInBytes <= 264)
assertTrue(record.sizeInBytes >= 258) // JS takes less space, maybe for strings?
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,10 @@ public final class com/apollographql/cache/normalized/sql/SqlNormalizedCacheFact
public fun <init> (Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Lkotlin/jvm/functions/Function1;)V
public fun <init> (Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Lkotlin/jvm/functions/Function1;Z)V
public fun <init> (Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Lkotlin/jvm/functions/Function1;ZLjava/lang/Long;)V
public fun <init> (Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Lkotlin/jvm/functions/Function1;ZLjava/lang/Long;Z)V
public synthetic fun <init> (Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Lkotlin/jvm/functions/Function1;ZLjava/lang/Long;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Lapp/cash/sqldelight/db/SqlDriver;Z)V
public synthetic fun <init> (Lapp/cash/sqldelight/db/SqlDriver;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Z)V
public synthetic fun <init> (Ljava/lang/String;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Landroid/content/Context;Ljava/lang/String;Landroidx/sqlite/db/SupportSQLiteOpenHelper$Factory;Lkotlin/jvm/functions/Function1;ZLjava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Lapp/cash/sqldelight/db/SqlDriver;)V
public fun <init> (Ljava/lang/String;)V
public synthetic fun <init> (Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun create ()Lcom/apollographql/cache/normalized/api/NormalizedCache;
}

Expand Down Expand Up @@ -150,71 +148,3 @@ public final class com/apollographql/cache/normalized/sql/internal/blob2/Records
public fun toString ()Ljava/lang/String;
}

public abstract interface class com/apollographql/cache/normalized/sql/internal/json/JsonDatabase : app/cash/sqldelight/Transacter {
public static final field Companion Lcom/apollographql/cache/normalized/sql/internal/json/JsonDatabase$Companion;
public abstract fun getJsonQueries ()Lcom/apollographql/cache/normalized/sql/internal/json/JsonQueries;
}

public final class com/apollographql/cache/normalized/sql/internal/json/JsonDatabase$Companion {
public final fun getSchema ()Lapp/cash/sqldelight/db/SqlSchema;
public final fun invoke (Lapp/cash/sqldelight/db/SqlDriver;)Lcom/apollographql/cache/normalized/sql/internal/json/JsonDatabase;
}

public final class com/apollographql/cache/normalized/sql/internal/json/JsonQueries : app/cash/sqldelight/TransacterImpl {
public fun <init> (Lapp/cash/sqldelight/db/SqlDriver;)V
public final fun changes ()Lapp/cash/sqldelight/ExecutableQuery;
public final fun delete (Ljava/lang/String;)V
public final fun deleteAll ()V
public final fun deleteRecords (Ljava/util/Collection;)V
public final fun deleteRecordsWithKeyMatching (Ljava/lang/String;Ljava/lang/String;)V
public final fun insert (Ljava/lang/String;Ljava/lang/String;)V
public final fun recordForKey (Ljava/lang/String;)Lapp/cash/sqldelight/Query;
public final fun recordForKey (Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Lapp/cash/sqldelight/Query;
public final fun recordsForKeys (Ljava/util/Collection;)Lapp/cash/sqldelight/Query;
public final fun recordsForKeys (Ljava/util/Collection;Lkotlin/jvm/functions/Function2;)Lapp/cash/sqldelight/Query;
public final fun selectRecords ()Lapp/cash/sqldelight/Query;
public final fun selectRecords (Lkotlin/jvm/functions/Function3;)Lapp/cash/sqldelight/Query;
public final fun update (Ljava/lang/String;Ljava/lang/String;)V
}

public final class com/apollographql/cache/normalized/sql/internal/json/RecordForKey {
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/apollographql/cache/normalized/sql/internal/json/RecordForKey;
public static synthetic fun copy$default (Lcom/apollographql/cache/normalized/sql/internal/json/RecordForKey;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/apollographql/cache/normalized/sql/internal/json/RecordForKey;
public fun equals (Ljava/lang/Object;)Z
public final fun getKey ()Ljava/lang/String;
public final fun getRecord ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/apollographql/cache/normalized/sql/internal/json/Records {
public fun <init> (JLjava/lang/String;Ljava/lang/String;)V
public final fun component1 ()J
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun copy (JLjava/lang/String;Ljava/lang/String;)Lcom/apollographql/cache/normalized/sql/internal/json/Records;
public static synthetic fun copy$default (Lcom/apollographql/cache/normalized/sql/internal/json/Records;JLjava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/apollographql/cache/normalized/sql/internal/json/Records;
public fun equals (Ljava/lang/Object;)Z
public final fun getKey ()Ljava/lang/String;
public final fun getRecord ()Ljava/lang/String;
public final fun get_id ()J
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/apollographql/cache/normalized/sql/internal/json/RecordsForKeys {
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lcom/apollographql/cache/normalized/sql/internal/json/RecordsForKeys;
public static synthetic fun copy$default (Lcom/apollographql/cache/normalized/sql/internal/json/RecordsForKeys;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/apollographql/cache/normalized/sql/internal/json/RecordsForKeys;
public fun equals (Ljava/lang/Object;)Z
public final fun getKey ()Ljava/lang/String;
public final fun getRecord ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

Loading