Necesidades de almacenamiento - TeamSecurityFirst/GeoGuardianWiki GitHub Wiki

Base de datos Room

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

    /* ... */
}

Base de datos en línea

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.