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 }