package com.simplemobiletools.launcher.interfaces import androidx.room.* import com.simplemobiletools.launcher.models.HomeScreenGridItem @Dao interface HomeScreenGridItemsDao { @Query("SELECT * FROM home_screen_grid_items") fun getAllItems(): List @Query("SELECT * FROM home_screen_grid_items WHERE parent_id = :folderId") fun getFolderItems(folderId: Long): List @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(item: HomeScreenGridItem): Long @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(items: List) @Query("UPDATE home_screen_grid_items SET title = :title WHERE package_name = :packageName") fun updateAppTitle(title: String, packageName: String) @Query("UPDATE home_screen_grid_items SET title = :title WHERE id = :id") fun updateItemTitle(title: String, id: Long): Int @Query("UPDATE home_screen_grid_items SET `left` = :left, `top` = :top, `right` = :right, `bottom` = :bottom, `page` = :page, `docked` = :docked , `parent_id` = :parentId WHERE id = :id") fun updateItemPosition(left: Int, top: Int, right: Int, bottom: Int, page: Int, docked: Boolean, parentId: Long?, id: Long) @Query("DELETE FROM home_screen_grid_items WHERE id = :id") fun deleteItemById(id: Long) @Query("DELETE FROM home_screen_grid_items WHERE parent_id = :id") fun deleteItemsWithParentId(id: Long) @Transaction fun deleteById(id: Long) { deleteItemById(id) deleteItemsWithParentId(id) } @Query("DELETE FROM home_screen_grid_items WHERE package_name = :packageName") fun deleteItemByPackageName(packageName: String) @Query("DELETE FROM home_screen_grid_items WHERE parent_id IN (SELECT id FROM home_screen_grid_items WHERE package_name = :packageName)") fun deleteItemsByParentPackageName(packageName: String) @Query("UPDATE home_screen_grid_items SET `left` = `left` + :shiftBy WHERE parent_id == :folderId AND `left` >= :shiftFrom") fun shiftFolderItems(folderId: Long, shiftFrom: Int, shiftBy: Int) @Transaction fun deleteByPackageName(packageName: String) { deleteItemByPackageName(packageName) deleteItemsByParentPackageName(packageName) } }