Untitled
unknown
plain_text
a year ago
3.1 kB
4
Indexable
package com.example.todolistapplicationtwo
class TodoApplicationRepository(context: Context)
: SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
private const val DATABASE_NAME = "todoList.db"
private const val DATABASE_VERSION = 1
private const val TABLE_TODO = "Todo"
private const val COLUMN_ID = "id"
private const val COLUMN_TITLE = "title"
private const val COLUMN_DESCRIPTION = "description"
private const val COLUMN_PRIORITY = "priority"
private const val COLUMN_IS_DONE = "is_done"
}
override fun onCreate(db: SQLiteDatabase?) {
val createTableQuery = """
CREATE TABLE $TABLE_TODO (
$COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT,
$COLUMN_TITLE TEXT NOT NULL,
$COLUMN_DESCRIPTION TEXT,
$COLUMN_PRIORITY TEXT NOT NULL,
$COLUMN_IS_DONE INTEGER DEFAULT 0
)
""".trimIndent()
db?.execSQL(createTableQuery)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.execSQL("DROP TABLE IF EXISTS $TABLE_TODO")
onCreate(db)
}
fun addTodo(todo: TodoItem): Long {
val db = writableDatabase
val values = ContentValues().apply {
put(COLUMN_TITLE, todo.title)
put(COLUMN_DESCRIPTION, todo.description)
put(COLUMN_PRIORITY, todo.priority)
put(COLUMN_IS_DONE, if (todo.isDone) 1 else 0)
}
val id = db.insert(TABLE_TODO, null, values)
db.close()
return id
}
fun getAllTodos(): List<TodoItem> {
val todoList = mutableListOf<TodoItem>()
val db = readableDatabase
val cursor = db.query(TABLE_TODO, null, null, null, null, null, null)
if (cursor.moveToFirst()) {
do {
val id = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_ID))
val title = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_TITLE))
val description = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_DESCRIPTION))
val priority = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_PRIORITY))
val isDone = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_IS_DONE)) == 1
todoList.add(TodoItem(id, title, description, priority, isDone))
} while (cursor.moveToNext())
}
cursor.close()
db.close()
return todoList
}
fun updateTodoStatus(id: Int, isDone: Boolean): Int {
val db = writableDatabase
val values = ContentValues().apply {
put(COLUMN_IS_DONE, if (isDone) 1 else 0)
}
val rowsAffected = db.update(TABLE_TODO, values, "$COLUMN_ID=?", arrayOf(id.toString()))
db.close()
return rowsAffected
}
fun deleteTodo(id: Int): Int {
val db = writableDatabase
val rowsDeleted = db.delete(TABLE_TODO, "$COLUMN_ID=?", arrayOf(id.toString()))
db.close()
return rowsDeleted
}
}
Editor is loading...
Leave a Comment