/
alexm
/
Notes
Обзор
Документация
Войти
/
alexm
/
Notes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/com/alex/notes/data/NotesDao.kt
67 строк
2 KB
bolschoy
5.15
11 дек 2025, 21:11
11 дек 2025, 21:11
5264678
Код
Авторство
О чём код?
package com.alex.notes.data import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Transaction import com.alex.notes.domain.ContentItem import kotlinx.coroutines.flow.Flow @Dao interface NotesDao { @Transaction @Query("SELECT * FROM notes ORDER BY updatedAt DESC") fun getAllNotes(): Flow<List<NoteWithContentDbModel>> @Transaction @Query("SELECT * FROM notes WHERE id == :noteID") suspend fun getNote(noteID: Int): NoteWithContentDbModel @Transaction @Query(""" SELECT DISTINCT notes.* FROM notes JOIN content ON notes.id == content.noteId WHERE title LIKE '%' ||:query || '%' OR content LIKE '%' ||:query || '%' ORDER BY updatedAt DESC """) fun searchNotes(query: String): Flow<List<NoteWithContentDbModel>> @Transaction @Query("DELETE FROM notes WHERE id == :noteID") suspend fun deleteNote(noteID: Int) @Query("UPDATE notes SET isPinned = NOT isPinned WHERE id == :noteID") suspend fun switchPinnedStatus(noteID: Int) @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun addNote(noteDbModel: NoteDbModel): Long @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun addNoteContent(content: List<ContentItemDbModel>) @Query("DELETE FROM content WHERE noteId == :noteID") suspend fun deleteNoteContent(noteID: Int) @Transaction suspend fun addNoteWithContent( noteDbModel: NoteDbModel, content: List<ContentItem> ) { val noteId= addNote(noteDbModel).toInt() val contentItems = content.toContentItemDbModels(noteId) addNoteContent(contentItems) } @Transaction suspend fun updateNote( noteDbModel: NoteDbModel, content: List<ContentItemDbModel> ) { addNote(noteDbModel) deleteNoteContent(noteDbModel.id) addNoteContent(content) } }