1 package leakcanary.internal.activity.db
2 
3 import android.content.ContentValues
4 import android.database.sqlite.SQLiteDatabase
5 import org.intellij.lang.annotations.Language
6 
7 internal object LeakTraceTable {
8 
9   @Language("RoomSql")
10   const val create = """
11         CREATE TABLE leak_trace
12         (
13         id INTEGER PRIMARY KEY,
14         heap_analysis_id REFERENCES heap_analysis(id),
15         leak_id REFERENCES leak(id),
16         class_simple_name TEXT,
17         leak_trace_index INTEGER
18         )"""
19 
20   @Language("RoomSql")
21   const val drop = "DROP TABLE IF EXISTS leak_trace"
22 
insertnull23   fun insert(
24     db: SQLiteDatabase,
25     leakId: Long,
26     heapAnalysisId: Long,
27     leakTraceIndex: Int,
28     leakingObjectClassSimpleName: String
29   ): Long {
30     val values = ContentValues()
31     values.put("heap_analysis_id", heapAnalysisId)
32     values.put("leak_id", leakId)
33     values.put("class_simple_name", leakingObjectClassSimpleName)
34     values.put("leak_trace_index", leakTraceIndex)
35     return db.insertOrThrow("leak_trace", null, values)
36   }
37 
deleteByHeapAnalysisIdnull38   fun deleteByHeapAnalysisId(
39     db: SQLiteDatabase,
40     heapAnalysisId: Long
41   ) {
42     db.delete("leak_trace", "heap_analysis_id=$heapAnalysisId", null)
43   }
44 }