shim/app/src/main/kotlin/com/vgmlr/shim/ShimBackUp.kt (1.1 kb)
Modified: 02:27:51 66 026 (20 May 026) - 4 Days Ago
Download
package com.vgmlr.shim

import android.content.Context
import androidx.work.CoroutineWorker
import androidx.work.WorkerParameters
import java.io.File
import java.io.FileOutputStream

class ShimBackUp(context: Context, params: WorkerParameters) : CoroutineWorker(context, params) {
    override suspend fun doWork(): Result {
        return try {
            val dbFile = applicationContext.getDatabasePath("shim.db")
            if (!dbFile.exists()) return Result.success()
            
            val externalDir = applicationContext.getExternalFilesDir(null) ?: return Result.failure()
            val backupDir = File(externalDir, "backups")
            if (!backupDir.exists()) {
                backupDir.mkdirs()
            }

            val backupFile = File(backupDir, "shim_backup.db")

            dbFile.inputStream().use { input ->
                FileOutputStream(backupFile).use { output ->
                    input.copyTo(output)
                }
            }

            Result.success()
        } catch (_: Exception) {
            Result.failure()
        }
    }
}