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() } } }