Repository navigation
Necesidades de almacenamiento
BetaAthe edited this page May 7, 2020
·
7 revisions
GeoGuardian implementa una base de datos Room para almacenar de forma permanente una serie de datos de configuración.
Actualmente se almacena en una tabla config, información referente a la aceptación del EULA y el auth_token utilizado para autenticar al usuario contra el servidor web.
Entidad de la tabla config:
@Entity
public class ConfigDatabase implements Serializable {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "eula")
private boolean eula;
@ColumnInfo(name = "auth_token")
private String auth_token;
/* Getters y setters */
}DAO de la tabla config:
@Dao
public interface DaoConfigDatabase {
@Insert
Long insertConfig(ConfigDatabase config);
@Query("SELECT * FROM ConfigDatabase")
ConfigDatabase fetchConfig();
@Update
void updateConfig(ConfigDatabase config);
@Query("DELETE FROM ConfigDatabase")
void deleteConfig();
}Base de datos de GeoGuardian:
@Database(entities = {ConfigDatabase.class}, version = 2, exportSchema = false)
public abstract class GeoguardianDatabase extends RoomDatabase {
public abstract DaoConfigDatabase DaoConfigDatabase();
}Repositorio de la tabla:
public class ConfigRepository {
private String DB_NAME = "geoguardian";
private GeoguardianDatabase db;
public ConfigRepository(final Context context) {
db = Room.databaseBuilder(context, GeoguardianDatabase.class, DB_NAME).allowMainThreadQueries().fallbackToDestructiveMigration().build();
}
public void initConfig() {
ConfigDatabase config = new ConfigDatabase();
config.setEula(false);
config.setAuth_token(null);
db.DaoConfigDatabase().insertConfig(config);
}
/* ... */
}Se ha desplegado un entorno de pre-producción en https://geoguardian.live con su respectiva api en /api. Desde el cliente Android, se lanzan diferentes peticiones al mismo tal y como se define en el documento de Endpoints del servidor, convirtiéndolo, por tanto, en un lugar de almacenamiento en la nube.