Add db dao, api and model for settings
This commit is contained in:
parent
7b2b6c296c
commit
972f0af82b
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue