Add db dao, api and model for settings

This commit is contained in:
M M Arif 2024-03-13 17:16:46 +05:00
parent 7b2b6c296c
commit 972f0af82b
4 changed files with 190 additions and 3 deletions

View File

@ -0,0 +1,72 @@
package org.mian.gitnex.database.api;
import android.content.Context;
import androidx.lifecycle.LiveData;
import java.util.List;
import org.mian.gitnex.database.dao.AppSettingsDao;
import org.mian.gitnex.database.models.AppSettings;
/**
* @author M M Arif
*/
public class AppSettingsApi extends BaseApi {
private final AppSettingsDao appSettingsDao;
AppSettingsApi(Context context) {
super(context);
appSettingsDao = gitnexDatabase.appSettingsDao();
}
public long insertNewSetting(String settingKey, String settingValue, String settingDefault) {
AppSettings appSettings = new AppSettings();
appSettings.setSettingKey(settingKey);
appSettings.setSettingValue(settingValue);
appSettings.setSettingDefault(settingDefault);
return insertSettingAsyncTask(appSettings);
}
public long insertSettingAsyncTask(AppSettings appSettings) {
return appSettingsDao.insertNewSetting(appSettings);
}
public LiveData<List<AppSettings>> fetchAllSettings() {
return appSettingsDao.fetchAllSettings();
}
public AppSettings fetchSettingById(int settingId) {
return appSettingsDao.fetchSettingById(settingId);
}
public AppSettings fetchSettingByKey(String settingKey) {
return appSettingsDao.fetchSettingByKey(settingKey);
}
public Integer fetchTotalSettingsCount() {
return appSettingsDao.fetchTotalSettingsCount();
}
public Integer fetchSettingCountByKey(String settingKey) {
return appSettingsDao.fetchSettingCountByKey(settingKey);
}
public void updateSettingValueByKey(String settingValue, String settingKey) {
executorService.execute(
() -> appSettingsDao.updateSettingValueByKey(settingValue, settingKey));
}
public void updateSettingDefaultByKey(String settingDefault, String settingKey) {
executorService.execute(
() -> appSettingsDao.updateSettingDefaultByKey(settingDefault, settingKey));
}
public void deleteBySettingKey(final String settingKey) {
final AppSettings appSettings = appSettingsDao.fetchSettingByKey(settingKey);
if (appSettings != null) {
executorService.execute(() -> appSettingsDao.deleteBySettingKey(settingKey));
}
}
}

View File

@ -0,0 +1,42 @@
package org.mian.gitnex.database.dao;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import java.util.List;
import org.mian.gitnex.database.models.AppSettings;
/**
* @author M M Arif
*/
@Dao
public interface AppSettingsDao {
@Insert
long insertNewSetting(AppSettings appSettings);
@Query("SELECT * FROM AppSettings")
LiveData<List<AppSettings>> fetchAllSettings();
@Query("SELECT * FROM AppSettings WHERE settingId = :settingId")
AppSettings fetchSettingById(int settingId);
@Query("SELECT * FROM AppSettings WHERE settingKey = :settingKey")
AppSettings fetchSettingByKey(String settingKey);
@Query("SELECT count(settingId) FROM AppSettings")
Integer fetchTotalSettingsCount();
@Query("SELECT count(settingId) FROM AppSettings WHERE settingKey = :settingKey")
Integer fetchSettingCountByKey(String settingKey);
@Query("UPDATE AppSettings SET settingValue = :settingValue WHERE settingKey = :settingKey")
void updateSettingValueByKey(String settingValue, String settingKey);
@Query("UPDATE AppSettings SET settingDefault = :settingDefault WHERE settingKey = :settingKey")
void updateSettingDefaultByKey(String settingDefault, String settingKey);
@Query("DELETE FROM AppSettings WHERE settingKey = :settingKey")
void deleteBySettingKey(String settingKey);
}

View File

@ -7,10 +7,12 @@ import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.migration.Migration;
import androidx.sqlite.db.SupportSQLiteDatabase;
import org.mian.gitnex.database.dao.AppSettingsDao;
import org.mian.gitnex.database.dao.DraftsDao;
import org.mian.gitnex.database.dao.NotesDao;
import org.mian.gitnex.database.dao.RepositoriesDao;
import org.mian.gitnex.database.dao.UserAccountsDao;
import org.mian.gitnex.database.models.AppSettings;
import org.mian.gitnex.database.models.Draft;
import org.mian.gitnex.database.models.Notes;
import org.mian.gitnex.database.models.Repository;
@ -20,8 +22,14 @@ import org.mian.gitnex.database.models.UserAccount;
* @author M M Arif
*/
@Database(
entities = {Draft.class, Repository.class, UserAccount.class, Notes.class},
version = 7,
entities = {
Draft.class,
Repository.class,
UserAccount.class,
Notes.class,
AppSettings.class
},
version = 8,
exportSchema = false)
public abstract class GitnexDatabase extends RoomDatabase {
@ -79,6 +87,16 @@ public abstract class GitnexDatabase extends RoomDatabase {
"CREATE TABLE IF NOT EXISTS 'Notes' ('noteId' INTEGER NOT NULL, 'content' TEXT, 'datetime' INTEGER, 'modified' INTEGER, PRIMARY KEY('noteid'))");
}
};
private static final Migration MIGRATION_7_8 =
new Migration(7, 8) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase database) {
database.execSQL(
"CREATE TABLE IF NOT EXISTS 'appSettings' ('settingId' INTEGER NOT NULL, 'settingKey' TEXT, 'settingValue' TEXT, 'settingDefault' TEXT, PRIMARY KEY('settingId'))");
}
};
private static volatile GitnexDatabase gitnexDatabase;
public static GitnexDatabase getDatabaseInstance(Context context) {
@ -97,7 +115,8 @@ public abstract class GitnexDatabase extends RoomDatabase {
MIGRATION_3_4,
MIGRATION_4_5,
MIGRATION_5_6,
MIGRATION_6_7)
MIGRATION_6_7,
MIGRATION_7_8)
.build();
}
}
@ -113,4 +132,6 @@ public abstract class GitnexDatabase extends RoomDatabase {
public abstract UserAccountsDao userAccountsDao();
public abstract NotesDao notesDao();
public abstract AppSettingsDao appSettingsDao();
}

View File

@ -0,0 +1,52 @@
package org.mian.gitnex.database.models;
import androidx.annotation.Nullable;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import java.io.Serializable;
/**
* @author M M Arif
*/
@Entity(tableName = "appSettings")
public class AppSettings implements Serializable {
@PrimaryKey(autoGenerate = true)
private int settingId;
@Nullable private String settingKey;
private String settingValue;
private String settingDefault;
public int getSettingId() {
return settingId;
}
public void setSettingId(int settingId) {
this.settingId = settingId;
}
@Nullable public String getSettingKey() {
return settingKey;
}
public void setSettingKey(@Nullable String settingKey) {
this.settingKey = settingKey;
}
public String getSettingValue() {
return settingValue;
}
public void setSettingValue(String settingValue) {
this.settingValue = settingValue;
}
public String getSettingDefault() {
return settingDefault;
}
public void setSettingDefault(String settingDefault) {
this.settingDefault = settingDefault;
}
}