check(R... allowedRoles) {
@@ -29,7 +30,7 @@ public abstract class AbstractAuthGuard & IUserRole> {
return;
}
- int userId = JWTManager.getInstance().extractUserId(token);
+ UUID userId = JWTManager.getInstance().extractUserId(token);
String roleStr = JWTManager.getInstance().extractRole(token);
R role;
diff --git a/backlib/src/main/java/net/miarma/api/backlib/security/JWTManager.java b/backlib/src/main/java/net/miarma/api/backlib/security/JWTManager.java
index 8d90128..c86f85b 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/security/JWTManager.java
+++ b/backlib/src/main/java/net/miarma/api/backlib/security/JWTManager.java
@@ -1,83 +1,87 @@
package net.miarma.api.backlib.security;
import java.util.Date;
-
+import java.util.UUID;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier;
-
-import net.miarma.api.backlib.ConfigManager;
-import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.interfaces.IUserRole;
-/**
- * Clase de gestión de JSON Web Tokens (JWT).
- * Proporciona métodos para generar, verificar y decodificar tokens JWT.
- *
- * Esta clase sigue el patron Singleton para asegurar una sola instancia.
- *
- * @author José Manuel Amador Gallardo
- */
public class JWTManager {
- private final ConfigManager config = ConfigManager.getInstance();
+ private final ConfigManager config = ConfigManager.getInstance();
private final Algorithm algorithm;
private final JWTVerifier verifier;
private static JWTManager instance;
private JWTManager() {
- this.algorithm = Algorithm.HMAC256(config.getStringProperty("jwt.secret"));
- this.verifier = JWT.require(algorithm).build();
- }
+ this.algorithm = Algorithm.HMAC256(config.getStringProperty("jwt.secret"));
+ this.verifier = JWT.require(algorithm).build();
+ }
- /**
- * Obtiene la instancia única de JWTManager.
- *
- * @return La instancia única de JWTManager.
- */
public static synchronized JWTManager getInstance() {
- if (instance == null) {
- instance = new JWTManager();
- }
- return instance;
- }
-
- /**
- * Genera un token JWT para un usuario.
- *
- * @param user El usuario para el cual se generará el token.
- * @param keepLoggedIn Indica si el token debe tener una duración prolongada.
- * @return El token JWT generado.
- */
- public String generateToken(String user_name, Integer user_id, IUserRole role, boolean keepLoggedIn) {
- final long EXPIRATION_TIME_MS = 1000L * (keepLoggedIn ? config.getIntProperty("jwt.expiration") : config.getIntProperty("jwt.expiration.short"));
- return JWT.create()
- .withSubject(user_name)
- .withClaim("userId", user_id)
- .withClaim("role", role.name())
- .withClaim("isAdmin", role == Constants.CoreUserRole.ADMIN)
- .withIssuedAt(new Date())
- .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATION_TIME_MS))
- .sign(algorithm);
+ if (instance == null) {
+ instance = new JWTManager();
+ }
+ return instance;
}
/**
- * Decodifica un token JWT sin verificar su firma.
- *
- * @param token El token JWT a decodificar.
- * @return Un objeto DecodedJWT que contiene la información del token.
+ * Genera un token JWT usando UUID para el usuario.
*/
- public DecodedJWT decodeWithoutVerification(String token) {
- return JWT.decode(token);
+ public String generateToken(
+ String userName,
+ UUID userId,
+ IUserRole role,
+ Integer serviceId,
+ boolean keepLoggedIn
+ ) {
+ final long expiration = 1000L * (
+ keepLoggedIn
+ ? config.getIntProperty("jwt.expiration")
+ : config.getIntProperty("jwt.expiration.short")
+ );
+
+ return JWT.create()
+ .withSubject(userName)
+ .withClaim("userId", userId.toString())
+ .withClaim("serviceId", serviceId)
+ .withClaim("role", role.name())
+ .withIssuedAt(new Date())
+ .withExpiresAt(new Date(System.currentTimeMillis() + expiration))
+ .sign(algorithm);
+ }
+
+ public UUID extractUserId(String token) {
+ try {
+ DecodedJWT jwt = verifier.verify(token);
+ String uuidStr = jwt.getClaim("userId").asString();
+ return UUID.fromString(uuidStr);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public Integer extractServiceId(String token) {
+ try {
+ DecodedJWT jwt = verifier.verify(token);
+ return jwt.getClaim("serviceId").asInt();
+ } catch (Exception e) {
+ return -1;
+ }
+ }
+
+ public String extractRole(String token) {
+ try {
+ DecodedJWT jwt = verifier.verify(token);
+ return jwt.getClaim("role").asString();
+ } catch (Exception e) {
+ return null;
+ }
}
- /**
- * Verifica la validez de un token JWT.
- *
- * @param token El token JWT a verificar.
- * @return true si el token es válido, false en caso contrario.
- */
public boolean isValid(String token) {
try {
verifier.verify(token);
@@ -86,77 +90,4 @@ public class JWTManager {
return false;
}
}
-
- /**
- * Verifica si un token JWT pertenece a un usuario administrador.
- *
- * @param token El token JWT a verificar.
- * @return true si el token pertenece a un administrador, false en caso contrario.
- */
- public boolean isAdmin(String token) {
- try {
- DecodedJWT jwt = verifier.verify(token);
- return jwt.getClaim("isAdmin").asBoolean();
- } catch (Exception e) {
- return false;
- }
- }
-
- /**
- * Obtiene el ID de usuario a partir de un token JWT.
- *
- * @param token El token JWT del cual se extraerá el ID de usuario.
- * @return El ID de usuario si el token es válido, -1 en caso contrario.
- */
- public int getUserId(String token) {
- try {
- DecodedJWT jwt = verifier.verify(token);
- return jwt.getClaim("userId").asInt();
- } catch (Exception e) {
- return -1;
- }
- }
-
- /**
- * Obtiene el sub especificado en un token JWT, que generalmente es el nombre de usuario.
- *
- * @param token El token JWT del cual se extraerá el nombre de usuario.
- * @return El nombre de usuario si el token es válido, null en caso contrario.
- */
- public String getSubject(String token) {
- try {
- DecodedJWT jwt = verifier.verify(token);
- return jwt.getSubject();
- } catch (Exception e) {
- return null;
- }
- }
-
- /**
- * Extrae el ID de usuario de un token JWT.
- * @param token El token JWT del cual se extraerá el ID de usuario.
- * @return El ID de usuario si el token es válido, -1 en caso contrario.
- */
- public int extractUserId(String token) {
- try {
- DecodedJWT jwt = verifier.verify(token);
- return jwt.getClaim("userId").asInt();
- } catch (Exception e) {
- return -1;
- }
- }
-
- /**
- * Extrae el rol de usuario de un token JWT.
- * @param token El token JWT del cual se extraerá el ID de usuario.
- * @return El rol de usuario si el token es válido, null en caso contrario.
- */
- public String extractRole(String token) {
- try {
- DecodedJWT jwt = verifier.verify(token);
- return jwt.getClaim("role").asString();
- } catch (Exception e) {
- return null;
- }
- }
-}
+}
\ No newline at end of file
diff --git a/backlib/src/main/java/net/miarma/api/backlib/security/SecretManager.java b/backlib/src/main/java/net/miarma/api/backlib/security/SecretManager.java
index 9cd38af..3631201 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/security/SecretManager.java
+++ b/backlib/src/main/java/net/miarma/api/backlib/security/SecretManager.java
@@ -1,7 +1,5 @@
package net.miarma.api.backlib.security;
-import net.miarma.api.backlib.ConfigManager;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -10,6 +8,8 @@ import java.security.SecureRandom;
import java.util.List;
import java.util.Properties;
+import net.miarma.api.backlib.config.ConfigManager;
+
/**
* Clase encargada de generar los secrets necesarios para la autenticación JWT.
* Si el secret ya existe en el archivo de configuración, lo devuelve.
diff --git a/backlib/src/main/java/net/miarma/api/backlib/util/JsonUtil.java b/backlib/src/main/java/net/miarma/api/backlib/util/JsonUtil.java
index 985259f..870ddcf 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/util/JsonUtil.java
+++ b/backlib/src/main/java/net/miarma/api/backlib/util/JsonUtil.java
@@ -3,7 +3,7 @@ package net.miarma.api.backlib.util;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.RoutingContext;
-import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.gson.GsonProvider;
import net.miarma.api.backlib.http.ApiResponse;
import net.miarma.api.backlib.http.ApiStatus;
@@ -26,7 +26,7 @@ public class JsonUtil {
.put("data", data);
ctx.response().end(response.encode());
} else {
- ctx.response().end(Constants.GSON.toJson(new ApiResponse<>(status, message, data)));
+ ctx.response().end(GsonProvider.get().toJson(new ApiResponse<>(status, message, data)));
}
}
diff --git a/backlib/src/main/java/net/miarma/api/backlib/util/RouterUtil.java b/backlib/src/main/java/net/miarma/api/backlib/util/RouterUtil.java
index 3867e4e..1ff6d39 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/util/RouterUtil.java
+++ b/backlib/src/main/java/net/miarma/api/backlib/util/RouterUtil.java
@@ -1,14 +1,17 @@
package net.miarma.api.backlib.util;
+import org.slf4j.Logger;
+
import io.vertx.ext.web.Router;
-import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.log.LoggerProvider;
/**
* Clase de utilidad para adjuntar un logger a un router de Vert.x.
* @author José Manuel Amador Gallardo
*/
public class RouterUtil {
-
+ private final static Logger LOGGER = LoggerProvider.getLogger();
+
public static void attachLogger(Router router) {
router.route().handler(ctx -> {
long startTime = System.currentTimeMillis();
@@ -46,7 +49,7 @@ public class RouterUtil {
duration
);
- Constants.LOGGER.info(log);
+ LOGGER.info(log);
});
ctx.next();
diff --git a/bootstrap/pom.xml b/bootstrap/pom.xml
index ed796cc..0a33e7f 100644
--- a/bootstrap/pom.xml
+++ b/bootstrap/pom.xml
@@ -5,8 +5,8 @@
net.miarma.api
- miarma-ecosystem
- 1.2.1
+ miarma-backend
+ 2.0.0
bootstrap
@@ -51,7 +51,7 @@
net.miarma.api
- miarmacraft
+ minecraft
${project.version}
diff --git a/bootstrap/src/main/java/net/miarma/api/AppInitializer.java b/bootstrap/src/main/java/net/miarma/api/AppInitializer.java
index befd14e..139ca1c 100644
--- a/bootstrap/src/main/java/net/miarma/api/AppInitializer.java
+++ b/bootstrap/src/main/java/net/miarma/api/AppInitializer.java
@@ -1,18 +1,19 @@
package net.miarma.api;
-import net.miarma.api.backlib.ConfigManager;
-import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.security.SecretManager;
-import net.miarma.api.backlib.vertx.VertxJacksonConfig;
-import net.miarma.api.backlib.util.MessageUtil;
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
+import org.slf4j.Logger;
+
import io.vertx.core.Launcher;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.log.LoggerProvider;
+import net.miarma.api.backlib.security.SecretManager;
+import net.miarma.api.backlib.util.MessageUtil;
+import net.miarma.api.backlib.vertx.VertxJacksonConfig;
/**
* Punto de entrada para inicializar la aplicación.
@@ -24,12 +25,13 @@ import io.vertx.core.Launcher;
* - Desplegar el Verticle Master
*/
public class AppInitializer {
+ private final static Logger LOGGER = LoggerProvider.getLogger();
public static void main(String[] args) {
AppInitializer initializer = new AppInitializer();
initializer.init();
initializer.deployMaster();
- Constants.LOGGER.info("✅ App initialized successfully!");
+ LOGGER.info("✅ App initialized successfully!");
}
private final ConfigManager configManager;
@@ -49,7 +51,7 @@ public class AppInitializer {
private void initializeDirectories() {
File baseDir = new File(configManager.getBaseDir());
if (!baseDir.exists() && baseDir.mkdirs()) {
- Constants.LOGGER.info("Created base directory: " + baseDir.getAbsolutePath());
+ LOGGER.info("Created base directory: " + baseDir.getAbsolutePath());
}
}
@@ -59,12 +61,12 @@ public class AppInitializer {
try (InputStream in = getClass().getClassLoader().getResourceAsStream("default.properties")) {
if (in != null) {
Files.copy(in, configFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
- Constants.LOGGER.info("Copied default.properties to: " + configFile.getAbsolutePath());
+ LOGGER.info("Copied default.properties to: " + configFile.getAbsolutePath());
} else {
- Constants.LOGGER.error(MessageUtil.notFound("Default config", "resources"));
+ LOGGER.error(MessageUtil.notFound("Default config", "resources"));
}
} catch (IOException e) {
- Constants.LOGGER.error(MessageUtil.failedTo("copy", "default config", e));
+ LOGGER.error(MessageUtil.failedTo("copy", "default config", e));
}
}
}
diff --git a/bootstrap/src/main/java/net/miarma/api/MasterVerticle.java b/bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
index 8a02d5d..c782e0f 100644
--- a/bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
+++ b/bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
@@ -1,32 +1,36 @@
package net.miarma.api;
-import java.util.Set;
+import org.slf4j.Logger;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.Promise;
-import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.LogAccumulator;
+import net.miarma.api.backlib.log.LogAccumulator;
+import net.miarma.api.backlib.log.LoggerProvider;
import net.miarma.api.backlib.util.DeploymentUtil;
import net.miarma.api.microservices.core.verticles.CoreMainVerticle;
import net.miarma.api.microservices.huertos.verticles.HuertosMainVerticle;
import net.miarma.api.microservices.huertosdecine.verticles.CineMainVerticle;
-import net.miarma.api.microservices.miarmacraft.verticles.MMCMainVerticle;
+import net.miarma.api.microservices.minecraft.verticles.MMCMainVerticle;
import net.miarma.api.microservices.mpaste.verticles.MPasteMainVerticle;
+@SuppressWarnings("unused")
public class MasterVerticle extends AbstractVerticle {
+ private final Logger LOGGER = LoggerProvider.getLogger();
+
@Override
public void start(Promise startPromise) {
deploy()
.onSuccess(v -> {
vertx.setTimer(300, id -> {
- LogAccumulator.flushToLogger(Constants.LOGGER);
+ LogAccumulator.flushToLogger(LOGGER);
startPromise.complete();
});
})
.onFailure(startPromise::fail);
}
+ @SuppressWarnings("unused")
private Future deploy() {
Promise promise = Promise.promise();
diff --git a/bootstrap/src/main/resources/default.properties b/bootstrap/src/main/resources/default.properties
index e75ab2e..4037d3c 100644
--- a/bootstrap/src/main/resources/default.properties
+++ b/bootstrap/src/main/resources/default.properties
@@ -1,3 +1,25 @@
+# App Configuration
+app.name=miarma-backend
+app.version=v2
+
+# API Configuration
+api.base=/api
+
+api.core.prefix=/core/${app.version}
+api.auth.prefix=/auth/${app.version}
+api.huertos.prefix=/huertos/${app.version}
+api.minecraft.prefix=/minecraft/${app.version}
+api.cine.prefix=/cine/${app.version}
+api.mpaste.prefix=/mpaste/${app.version}
+
+# EventBus Configuration
+eventbus.auth.address=auth.eventbus
+eventbus.core.address=core.eventbus
+eventbus.huertos.address=huertos.eventbus
+eventbus.minecraft.address=minecraft.eventbus
+eventbus.cine.address=cine.eventbus
+eventbus.mpaste.address=mpaste.eventbus
+
# DB Configuration
db.protocol=jdbc:mariadb
db.host=localhost
@@ -11,8 +33,8 @@ dp.poolSize=5
inet.host=localhost
sso.logic.port=8080
sso.data.port=8081
-mmc.logic.port=8100
-mmc.data.port=8101
+minecraft.logic.port=8100
+minecraft.data.port=8101
huertos.logic.port=8120
huertos.data.port=8121
cine.data.port = 8140
diff --git a/microservices/core/pom.xml b/microservices/core/pom.xml
index f366763..d7515d3 100644
--- a/microservices/core/pom.xml
+++ b/microservices/core/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
core
- 1.2.1
+ 2.0.0
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.1
+ 2.0.0
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/CredentialDAO.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/CredentialDAO.java
new file mode 100644
index 0000000..b2abfad
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/CredentialDAO.java
@@ -0,0 +1,172 @@
+package net.miarma.api.microservices.core.dao;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import io.vertx.core.Future;
+import io.vertx.core.Promise;
+import io.vertx.sqlclient.Pool;
+import net.miarma.api.microservices.core.entities.CredentialEntity;
+import net.miarma.api.backlib.db.DataAccessObject;
+import net.miarma.api.backlib.db.DatabaseManager;
+import net.miarma.api.backlib.db.QueryBuilder;
+import net.miarma.api.backlib.http.QueryFilters;
+import net.miarma.api.backlib.http.QueryParams;
+
+public class CredentialDAO implements DataAccessObject {
+
+ private final DatabaseManager db;
+
+ public CredentialDAO(Pool pool) {
+ this.db = DatabaseManager.getInstance(pool);
+ }
+
+ @Override
+ public Future> getAll() {
+ return getAll(new QueryParams(Map.of(), new QueryFilters()));
+ }
+
+ @Override
+ public Future getById(UUID id) {
+ Promise promise = Promise.promise();
+ String query = QueryBuilder
+ .select(CredentialEntity.class)
+ .where(Map.of("credential_id", id.toString()))
+ .build();
+
+ db.executeOne(query, CredentialEntity.class,
+ promise::complete,
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ public Future> getAll(QueryParams params) {
+ Promise> promise = Promise.promise();
+ String query = QueryBuilder
+ .select(CredentialEntity.class)
+ .where(params.getFilters())
+ .orderBy(params.getQueryFilters().getSort(), params.getQueryFilters().getOrder())
+ .limit(params.getQueryFilters().getLimit())
+ .offset(params.getQueryFilters().getOffset())
+ .build();
+
+ db.execute(query, CredentialEntity.class,
+ list -> promise.complete(list.isEmpty() ? List.of() : list),
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ /**
+ * Útil para el login: busca la credencial por servicio y usuario
+ */
+ public Future getByServiceAndUsername(int serviceId, String username) {
+ Promise promise = Promise.promise();
+ String query = QueryBuilder
+ .select(CredentialEntity.class)
+ .where(Map.of("service_id", String.valueOf(serviceId), "username", username))
+ .build();
+
+ db.executeOne(query, CredentialEntity.class,
+ promise::complete,
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ public Future> getByUserId(UUID userId) {
+ Promise> promise = Promise.promise();
+ String query = QueryBuilder
+ .select(CredentialEntity.class)
+ .where(Map.of("user_id", userId.toString()))
+ .build();
+
+ db.execute(query, CredentialEntity.class,
+ promise::complete,
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ @Override
+ public Future insert(CredentialEntity credential) {
+ Promise promise = Promise.promise();
+ // Si no tiene ID, se lo generamos antes de insertar
+ if (credential.getCredentialId() == null) {
+ credential.setCredentialId(UUID.randomUUID());
+ }
+
+ String query = QueryBuilder.insert(credential).build();
+
+ db.executeOne(query, CredentialEntity.class,
+ promise::complete,
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ @Override
+ public Future upsert(CredentialEntity credential, String... conflictKeys) {
+ Promise promise = Promise.promise();
+ String query = QueryBuilder.upsert(credential, conflictKeys).build();
+
+ db.executeOne(query, CredentialEntity.class,
+ promise::complete,
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ @Override
+ public Future update(CredentialEntity credential) {
+ Promise promise = Promise.promise();
+ String query = QueryBuilder.update(credential).build();
+
+ db.executeOne(query, CredentialEntity.class,
+ _ -> promise.complete(credential),
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ @Override
+ public Future delete(UUID id) {
+ Promise promise = Promise.promise();
+ CredentialEntity cred = new CredentialEntity();
+ cred.setCredentialId(id);
+
+ String query = QueryBuilder.delete(cred).build();
+
+ db.executeOne(query, CredentialEntity.class,
+ result -> promise.complete(result != null),
+ promise::fail
+ );
+
+ return promise.future();
+ }
+
+ @Override
+ public Future exists(UUID id) {
+ Promise promise = Promise.promise();
+ String query = QueryBuilder
+ .select(CredentialEntity.class)
+ .where(Map.of("credential_id", id.toString()))
+ .build();
+
+ db.executeOne(query, CredentialEntity.class,
+ result -> promise.complete(result != null),
+ promise::fail
+ );
+
+ return promise.future();
+ }
+}
\ No newline at end of file
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/dao/FileDAO.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/FileDAO.java
similarity index 90%
rename from backlib/src/main/java/net/miarma/api/backlib/core/dao/FileDAO.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/dao/FileDAO.java
index 739a232..dae38d0 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/dao/FileDAO.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/FileDAO.java
@@ -1,4 +1,8 @@
-package net.miarma.api.backlib.core.dao;
+package net.miarma.api.microservices.core.dao;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
import io.vertx.core.Future;
import io.vertx.core.Promise;
@@ -8,12 +12,9 @@ import net.miarma.api.backlib.db.DatabaseManager;
import net.miarma.api.backlib.db.QueryBuilder;
import net.miarma.api.backlib.http.QueryFilters;
import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.backlib.core.entities.FileEntity;
+import net.miarma.api.microservices.core.entities.FileEntity;
-import java.util.List;
-import java.util.Map;
-
-public class FileDAO implements DataAccessObject {
+public class FileDAO implements DataAccessObject {
private final DatabaseManager db;
@@ -27,7 +28,7 @@ public class FileDAO implements DataAccessObject {
}
@Override
- public Future getById(Integer id) {
+ public Future getById(UUID id) {
Promise promise = Promise.promise();
String query = QueryBuilder
.select(FileEntity.class)
@@ -60,7 +61,7 @@ public class FileDAO implements DataAccessObject {
return promise.future();
}
- public Future> getUserFiles(Integer userId) {
+ public Future> getUserFiles(UUID userId) {
Promise> promise = Promise.promise();
String query = QueryBuilder
.select(FileEntity.class)
@@ -115,7 +116,7 @@ public class FileDAO implements DataAccessObject {
}
@Override
- public Future exists(Integer id) {
+ public Future exists(UUID id) {
Promise promise = Promise.promise();
String query = QueryBuilder
.select(FileEntity.class)
@@ -131,10 +132,10 @@ public class FileDAO implements DataAccessObject {
}
@Override
- public Future delete(Integer id) {
+ public Future delete(UUID id) {
Promise promise = Promise.promise();
FileEntity file = new FileEntity();
- file.setFile_id(id);
+ file.setFileId(id);
String query = QueryBuilder.delete(file).build();
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/dao/UserDAO.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/UserDAO.java
similarity index 74%
rename from backlib/src/main/java/net/miarma/api/backlib/core/dao/UserDAO.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/dao/UserDAO.java
index be6b6ea..22d90bb 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/dao/UserDAO.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/dao/UserDAO.java
@@ -1,19 +1,20 @@
-package net.miarma.api.backlib.core.dao;
+package net.miarma.api.microservices.core.dao;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import io.vertx.core.Future;
import io.vertx.core.Promise;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.core.entities.UserEntity;
+import net.miarma.api.microservices.core.entities.UserEntity;
import net.miarma.api.backlib.db.DataAccessObject;
import net.miarma.api.backlib.db.DatabaseManager;
import net.miarma.api.backlib.db.QueryBuilder;
import net.miarma.api.backlib.http.QueryFilters;
import net.miarma.api.backlib.http.QueryParams;
-public class UserDAO implements DataAccessObject {
+public class UserDAO implements DataAccessObject {
private final DatabaseManager db;
@@ -27,7 +28,7 @@ public class UserDAO implements DataAccessObject {
}
@Override
- public Future getById(Integer id) {
+ public Future getById(UUID id) {
Promise promise = Promise.promise();
String query = QueryBuilder
.select(UserEntity.class)
@@ -60,36 +61,6 @@ public class UserDAO implements DataAccessObject {
return promise.future();
}
- public Future getByEmail(String email) {
- Promise promise = Promise.promise();
- String query = QueryBuilder
- .select(UserEntity.class)
- .where(Map.of("email", email))
- .build();
-
- db.executeOne(query, UserEntity.class,
- promise::complete,
- promise::fail
- );
-
- return promise.future();
- }
-
- public Future getByUserName(String userName) {
- Promise promise = Promise.promise();
- String query = QueryBuilder
- .select(UserEntity.class)
- .where(Map.of("user_name", userName))
- .build();
-
- db.executeOne(query, UserEntity.class,
- promise::complete,
- promise::fail
- );
-
- return promise.future();
- }
-
@Override
public Future insert(UserEntity user) {
Promise promise = Promise.promise();
@@ -130,10 +101,10 @@ public class UserDAO implements DataAccessObject {
}
@Override
- public Future delete(Integer id) {
+ public Future delete(UUID id) {
Promise promise = Promise.promise();
UserEntity user = new UserEntity();
- user.setUser_id(id);
+ user.setUserId(id);
String query = QueryBuilder.delete(user).build();
@@ -146,7 +117,7 @@ public class UserDAO implements DataAccessObject {
}
@Override
- public Future exists(Integer id) {
+ public Future exists(UUID id) {
Promise promise = Promise.promise();
String query = QueryBuilder
.select(UserEntity.class)
@@ -160,4 +131,4 @@ public class UserDAO implements DataAccessObject {
return promise.future();
}
-}
+}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/CredentialEntity.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/CredentialEntity.java
new file mode 100644
index 0000000..8ee297c
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/CredentialEntity.java
@@ -0,0 +1,110 @@
+package net.miarma.api.microservices.core.entities;
+
+import com.google.gson.annotations.SerializedName;
+
+import net.miarma.api.backlib.annotations.APIDontReturn;
+import net.miarma.api.backlib.annotations.Table;
+import java.util.UUID;
+import java.time.LocalDateTime;
+
+@Table("credentials")
+public class CredentialEntity {
+
+ @SerializedName("credential_id")
+ private UUID credentialId;
+
+ @SerializedName("user_id")
+ private UUID userId;
+
+ @SerializedName("service_id")
+ private int serviceId;
+
+ private String username;
+
+ private String email;
+
+ @APIDontReturn
+ private String password;
+
+ private int status;
+
+ @SerializedName("created_at")
+ private LocalDateTime createdAt;
+
+ @SerializedName("updated_at")
+ private LocalDateTime updatedAt;
+
+ public CredentialEntity() {}
+
+ public UUID getCredentialId() {
+ return credentialId;
+ }
+
+ public void setCredentialId(UUID credentialId) {
+ this.credentialId = credentialId;
+ }
+
+ public UUID getUserId() {
+ return userId;
+ }
+
+ public void setUserId(UUID userId) {
+ this.userId = userId;
+ }
+
+ public int getServiceId() {
+ return serviceId;
+ }
+
+ public void setServiceId(int serviceId) {
+ this.serviceId = serviceId;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public LocalDateTime getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(LocalDateTime createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public LocalDateTime getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(LocalDateTime updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/FileEntity.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/FileEntity.java
new file mode 100644
index 0000000..b9bdd73
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/FileEntity.java
@@ -0,0 +1,99 @@
+package net.miarma.api.microservices.core.entities;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+import com.google.gson.annotations.SerializedName;
+
+import io.vertx.sqlclient.Row;
+import net.miarma.api.backlib.annotations.Table;
+import net.miarma.api.backlib.db.AbstractEntity;
+import net.miarma.api.microservices.core.enums.CoreFileContext;
+
+@Table("files")
+public class FileEntity extends AbstractEntity {
+
+ @SerializedName("file_id")
+ private UUID fileId;
+
+ @SerializedName("file_name")
+ private String fileName;
+
+ @SerializedName("file_path")
+ private String filePath;
+
+ @SerializedName("mime_type")
+ private String mimeType;
+
+ @SerializedName("uploaded_by")
+ private UUID uploadedBy;
+
+ private CoreFileContext context;
+
+ @SerializedName("uploaded_at")
+ private LocalDateTime uploadedAt;
+
+ public FileEntity() {
+ super();
+ }
+
+ public FileEntity(Row row) {
+ super(row);
+ }
+
+ public UUID getFileId() {
+ return fileId;
+ }
+
+ public void setFileId(UUID fileId) {
+ this.fileId = fileId;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getFilePath() {
+ return filePath;
+ }
+
+ public void setFilePath(String filePath) {
+ this.filePath = filePath;
+ }
+
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ public void setMimeType(String mimeType) {
+ this.mimeType = mimeType;
+ }
+
+ public UUID getUploadedBy() {
+ return uploadedBy;
+ }
+
+ public void setUploadedBy(UUID uploadedBy) {
+ this.uploadedBy = uploadedBy;
+ }
+
+ public CoreFileContext getContext() {
+ return context;
+ }
+
+ public void setContext(CoreFileContext context) {
+ this.context = context;
+ }
+
+ public LocalDateTime getUploadedAt() {
+ return uploadedAt;
+ }
+
+ public void setUploadedAt(LocalDateTime uploadedAt) {
+ this.uploadedAt = uploadedAt;
+ }
+}
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/UserEntity.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/UserEntity.java
new file mode 100644
index 0000000..b4ea1fd
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/entities/UserEntity.java
@@ -0,0 +1,53 @@
+package net.miarma.api.microservices.core.entities;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+import io.vertx.sqlclient.Row;
+import net.miarma.api.backlib.annotations.Table;
+import net.miarma.api.backlib.db.AbstractEntity;
+import net.miarma.api.microservices.core.enums.CoreUserGlobalRole;
+import net.miarma.api.microservices.core.enums.CoreUserGlobalStatus;
+
+@Table("users")
+public class UserEntity extends AbstractEntity {
+ private UUID userId;
+ private String userName;
+ private String email;
+ private String displayName;
+ private String avatar;
+ private CoreUserGlobalStatus globalStatus;
+ private CoreUserGlobalRole globalRole;
+ private LocalDateTime createdAt;
+ private LocalDateTime updatedAt;
+
+ public UserEntity() { }
+ public UserEntity(Row row) { super(row); }
+
+ public UUID getUserId() { return userId; }
+ public void setUserId(UUID userId) { this.userId = userId; }
+
+ public String getUserName() { return userName; }
+ public void setUserName(String userName) { this.userName = userName; }
+
+ public String getEmail() { return email; }
+ public void setEmail(String email) { this.email = email; }
+
+ public String getDisplayName() { return displayName; }
+ public void setDisplayName(String displayName) { this.displayName = displayName; }
+
+ public String getAvatar() { return avatar; }
+ public void setAvatar(String avatar) { this.avatar = avatar; }
+
+ public CoreUserGlobalStatus getGlobalStatus() { return globalStatus; }
+ public void setGlobalStatus(CoreUserGlobalStatus globalStatus) { this.globalStatus = globalStatus; }
+
+ public CoreUserGlobalRole getGlobalRole() { return globalRole; }
+ public void setGlobalRole(CoreUserGlobalRole role) { this.globalRole = role; }
+
+ public LocalDateTime getCreatedAt() { return createdAt; }
+ public void setCreatedAt(LocalDateTime createdAt) { this.createdAt = createdAt; }
+
+ public LocalDateTime getUpdatedAt() { return updatedAt; }
+ public void setUpdatedAt(LocalDateTime updatedAt) { this.updatedAt = updatedAt; }
+}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreFileContext.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreFileContext.java
new file mode 100644
index 0000000..9bf4b45
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreFileContext.java
@@ -0,0 +1,37 @@
+package net.miarma.api.microservices.core.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum CoreFileContext implements IValuableEnum {
+ CORE(0),
+ HUERTOS(1),
+ MMC(2),
+ CINE(3);
+
+ private final int value;
+
+ CoreFileContext(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public String toCtxString() {
+ return switch(this) {
+ case CORE -> "core";
+ case HUERTOS -> "huertos";
+ case MMC -> "miarmacraft";
+ case CINE -> "cine";
+ };
+ }
+
+ public static CoreFileContext fromInt(int i) {
+ for (CoreFileContext context : values()) {
+ if (context.value == i) return context;
+ }
+ throw new IllegalArgumentException("Invalid CoreFileContext value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreUserGlobalRole.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreUserGlobalRole.java
new file mode 100644
index 0000000..3e563ec
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreUserGlobalRole.java
@@ -0,0 +1,26 @@
+package net.miarma.api.microservices.core.enums;
+
+import net.miarma.api.backlib.interfaces.IUserRole;
+
+public enum CoreUserGlobalRole implements IUserRole {
+ USER(0),
+ ADMIN(1);
+
+ private final int value;
+
+ CoreUserGlobalRole(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static CoreUserGlobalRole fromInt(int i) {
+ for (CoreUserGlobalRole role : values()) {
+ if (role.value == i) return role;
+ }
+ throw new IllegalArgumentException("Invalid CoreUserGlobalRole value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreUserGlobalStatus.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreUserGlobalStatus.java
new file mode 100644
index 0000000..181a9eb
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/enums/CoreUserGlobalStatus.java
@@ -0,0 +1,26 @@
+package net.miarma.api.microservices.core.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum CoreUserGlobalStatus implements IValuableEnum {
+ INACTIVE(0),
+ ACTIVE(1);
+
+ private final int value;
+
+ CoreUserGlobalStatus(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static CoreUserGlobalStatus fromInt(int i) {
+ for (CoreUserGlobalStatus status : values()) {
+ if (status.value == i) return status;
+ }
+ throw new IllegalArgumentException("Invalid CoreUserGlobalStatus value: " + i);
+ }
+}
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/FileDataHandler.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/FileDataHandler.java
similarity index 76%
rename from backlib/src/main/java/net/miarma/api/backlib/core/handlers/FileDataHandler.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/FileDataHandler.java
index 332ff39..0cd172c 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/FileDataHandler.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/FileDataHandler.java
@@ -1,25 +1,33 @@
-package net.miarma.api.backlib.core.handlers;
+package net.miarma.api.microservices.core.handlers;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.UUID;
+
+import org.slf4j.Logger;
+
+import com.google.gson.Gson;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.FileUpload;
import io.vertx.ext.web.RoutingContext;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.Constants.CoreFileContext;
+import net.miarma.api.backlib.gson.GsonProvider;
import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.backlib.core.entities.FileEntity;
-import net.miarma.api.backlib.core.services.FileService;
+import net.miarma.api.backlib.log.LoggerProvider;
import net.miarma.api.backlib.util.JsonUtil;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
+import net.miarma.api.microservices.core.entities.FileEntity;
+import net.miarma.api.microservices.core.enums.CoreFileContext;
+import net.miarma.api.microservices.core.services.FileService;
@SuppressWarnings("unused")
public class FileDataHandler {
+ private final Logger LOGGER = LoggerProvider.getLogger();
+ private final Gson GSON = GsonProvider.get();
private final FileService fileService;
public FileDataHandler(Pool pool) {
@@ -35,7 +43,7 @@ public class FileDataHandler {
}
public void getById(RoutingContext ctx) {
- Integer fileId = Integer.parseInt(ctx.pathParam("file_id"));
+ UUID fileId = UUID.fromString(ctx.pathParam("file_id"));
fileService.getById(fileId)
.onSuccess(file -> JsonUtil.sendJson(ctx, ApiStatus.OK, file))
@@ -46,7 +54,7 @@ public class FileDataHandler {
try {
String fileName = ctx.request().getFormAttribute("file_name");
String mimeType = ctx.request().getFormAttribute("mime_type");
- int uploadedBy = Integer.parseInt(ctx.request().getFormAttribute("uploaded_by"));
+ UUID uploadedBy = UUID.fromString(ctx.request().getFormAttribute("uploaded_by"));
int contextValue = Integer.parseInt(ctx.request().getFormAttribute("context"));
FileUpload upload = ctx.fileUploads().stream()
@@ -58,23 +66,23 @@ public class FileDataHandler {
byte[] fileBinary = buffer.getBytes();
FileEntity file = new FileEntity();
- file.setFile_name(fileName);
- file.setMime_type(mimeType);
- file.setUploaded_by(uploadedBy);
+ file.setFileName(fileName);
+ file.setMimeType(mimeType);
+ file.setUploadedBy(uploadedBy);
file.setContext(CoreFileContext.fromInt(contextValue));
fileService.create(file, fileBinary)
.onSuccess(result -> JsonUtil.sendJson(ctx, ApiStatus.CREATED, result))
.onFailure(err -> JsonUtil.sendJson(ctx, ApiStatus.fromException(err), null, err.getMessage()));
} catch (Exception e) {
- Constants.LOGGER.error(e.getMessage(), e);
+ LOGGER.error(e.getMessage(), e);
JsonUtil.sendJson(ctx, ApiStatus.INTERNAL_SERVER_ERROR, null, e.getMessage());
}
}
public void update(RoutingContext ctx) {
- FileEntity file = Constants.GSON.fromJson(ctx.body().asString(), FileEntity.class);
+ FileEntity file = GSON.fromJson(ctx.body().asString(), FileEntity.class);
fileService.update(file)
.onSuccess(result -> JsonUtil.sendJson(ctx, ApiStatus.OK, result))
@@ -82,14 +90,14 @@ public class FileDataHandler {
}
public void delete(RoutingContext ctx) {
- Integer fileId = Integer.parseInt(ctx.pathParam("file_id"));
+ UUID fileId = UUID.fromString(ctx.pathParam("file_id"));
JsonObject body = ctx.body().asJsonObject();
String filePath = body.getString("file_path");
try {
Files.deleteIfExists(Paths.get(filePath));
} catch (IOException e) {
- Constants.LOGGER.error(e.getMessage(), e);
+ LOGGER.error(e.getMessage(), e);
JsonUtil.sendJson(ctx, ApiStatus.INTERNAL_SERVER_ERROR, null, e.getMessage());
return;
}
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/FileLogicHandler.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/FileLogicHandler.java
similarity index 72%
rename from backlib/src/main/java/net/miarma/api/backlib/core/handlers/FileLogicHandler.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/FileLogicHandler.java
index ab10c87..5c29156 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/FileLogicHandler.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/FileLogicHandler.java
@@ -1,9 +1,11 @@
-package net.miarma.api.backlib.core.handlers;
+package net.miarma.api.microservices.core.handlers;
+
+import java.util.UUID;
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.RoutingContext;
-import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.security.JWTManager;
import net.miarma.api.backlib.util.JsonUtil;
@@ -11,6 +13,8 @@ import net.miarma.api.backlib.util.JsonUtil;
public class FileLogicHandler {
private final Vertx vertx;
+ private final String CORE_EVENT_BUS = ConfigManager.getInstance()
+ .getStringProperty("eventbus.core.address");
public FileLogicHandler(Vertx vertx) {
this.vertx = vertx;
@@ -25,14 +29,14 @@ public class FileLogicHandler {
}
String token = authHeader.substring(7);
- int userId = JWTManager.getInstance().getUserId(token);
+ UUID userId = JWTManager.getInstance().extractUserId(token);
- if (userId <= 0) {
- JsonUtil.sendJson(ctx, ApiStatus.UNAUTHORIZED, null, "Invalid token");
+ if (userId == null) {
+ JsonUtil.sendJson(ctx, ApiStatus.UNAUTHORIZED, null, "Invalid or expired token");
return false;
}
- request.put("userId", userId);
+ request.put("userId", userId.toString());
return true;
}
@@ -40,7 +44,7 @@ public class FileLogicHandler {
JsonObject request = new JsonObject().put("action", "getUserFiles");
if (!validateAuth(ctx, request)) return;
- vertx.eventBus().request(Constants.CORE_EVENT_BUS, request, ar -> {
+ vertx.eventBus().request(CORE_EVENT_BUS, request, ar -> {
if (ar.succeeded()) {
JsonUtil.sendJson(ctx, ApiStatus.OK, ar.result().body());
} else {
@@ -50,13 +54,15 @@ public class FileLogicHandler {
}
public void downloadFile(RoutingContext ctx) {
+ UUID fileId = UUID.fromString(ctx.pathParam("file_id"));
+
JsonObject request = new JsonObject()
.put("action", "downloadFile")
- .put("fileId", Integer.parseInt(ctx.pathParam("file_id")));
+ .put("fileId", fileId.toString());
if (!validateAuth(ctx, request)) return;
- vertx.eventBus().request(Constants.CORE_EVENT_BUS, request, ar -> {
+ vertx.eventBus().request(CORE_EVENT_BUS, request, ar -> {
if (ar.succeeded()) {
JsonUtil.sendJson(ctx, ApiStatus.OK, ar.result().body());
} else {
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/ScreenshotHandler.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/ScreenshotHandler.java
similarity index 95%
rename from backlib/src/main/java/net/miarma/api/backlib/core/handlers/ScreenshotHandler.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/ScreenshotHandler.java
index b238252..bf2383b 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/ScreenshotHandler.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/ScreenshotHandler.java
@@ -1,4 +1,4 @@
-package net.miarma.api.backlib.core.handlers;
+package net.miarma.api.microservices.core.handlers;
import io.vertx.core.Vertx;
import io.vertx.ext.web.RoutingContext;
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/UserDataHandler.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/UserDataHandler.java
similarity index 83%
rename from backlib/src/main/java/net/miarma/api/backlib/core/handlers/UserDataHandler.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/UserDataHandler.java
index c99512f..34b6c59 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/UserDataHandler.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/UserDataHandler.java
@@ -1,17 +1,21 @@
-package net.miarma.api.backlib.core.handlers;
+package net.miarma.api.microservices.core.handlers;
+
+import com.google.gson.Gson;
import io.vertx.ext.web.RoutingContext;
import io.vertx.sqlclient.Pool;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.gson.GsonProvider;
import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.http.QueryParams;
import net.miarma.api.backlib.util.JsonUtil;
-import net.miarma.api.backlib.core.entities.UserEntity;
-import net.miarma.api.backlib.core.services.UserService;
+import net.miarma.api.microservices.core.entities.UserEntity;
+import net.miarma.api.microservices.core.services.UserService;
@SuppressWarnings("unused")
public class UserDataHandler {
+ private final Gson GSON = GsonProvider.get();
private final UserService userService;
public UserDataHandler(Pool pool) {
@@ -39,7 +43,7 @@ public class UserDataHandler {
}
public void create(RoutingContext ctx) {
- UserEntity user = Constants.GSON.fromJson(ctx.body().asString(), UserEntity.class);
+ UserEntity user = GSON.fromJson(ctx.body().asString(), UserEntity.class);
userService.register(user)
.onSuccess(result -> JsonUtil.sendJson(ctx, ApiStatus.CREATED, result)).onFailure(err -> {
@@ -49,7 +53,7 @@ public class UserDataHandler {
}
public void update(RoutingContext ctx) {
- UserEntity user = Constants.GSON.fromJson(ctx.body().asString(), UserEntity.class);
+ UserEntity user = GSON.fromJson(ctx.body().asString(), UserEntity.class);
userService.update(user)
.onSuccess(result -> JsonUtil.sendJson(ctx, ApiStatus.NO_CONTENT, result)).onFailure(err -> {
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/UserLogicHandler.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/UserLogicHandler.java
similarity index 98%
rename from backlib/src/main/java/net/miarma/api/backlib/core/handlers/UserLogicHandler.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/UserLogicHandler.java
index 90e96f2..b2b7887 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/handlers/UserLogicHandler.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/handlers/UserLogicHandler.java
@@ -1,4 +1,4 @@
-package net.miarma.api.backlib.core.handlers;
+package net.miarma.api.microservices.core.handlers;
import com.auth0.jwt.interfaces.DecodedJWT;
@@ -10,7 +10,7 @@ import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.security.JWTManager;
import net.miarma.api.backlib.util.EventBusUtil;
import net.miarma.api.backlib.util.JsonUtil;
-import net.miarma.api.backlib.core.entities.UserEntity;
+import net.miarma.api.microservices.core.entities.UserEntity;
public class UserLogicHandler {
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreDataRouter.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreDataRouter.java
index 114ca94..6dc361a 100644
--- a/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreDataRouter.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreDataRouter.java
@@ -5,9 +5,9 @@ import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
import net.miarma.api.backlib.Constants.CoreUserRole;
-import net.miarma.api.backlib.core.handlers.FileDataHandler;
-import net.miarma.api.backlib.core.handlers.UserDataHandler;
-import net.miarma.api.backlib.core.services.UserService;
+import net.miarma.api.microservices.core.handlers.FileDataHandler;
+import net.miarma.api.microservices.core.handlers.UserDataHandler;
+import net.miarma.api.microservices.core.services.UserService;
import net.miarma.api.microservices.core.routing.middlewares.CoreAuthGuard;
public class CoreDataRouter {
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreLogicRouter.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreLogicRouter.java
index c62a53a..27c3658 100644
--- a/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreLogicRouter.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/CoreLogicRouter.java
@@ -5,10 +5,10 @@ import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
import net.miarma.api.backlib.Constants.CoreUserRole;
-import net.miarma.api.backlib.core.handlers.FileLogicHandler;
-import net.miarma.api.backlib.core.handlers.ScreenshotHandler;
-import net.miarma.api.backlib.core.handlers.UserLogicHandler;
-import net.miarma.api.backlib.core.services.UserService;
+import net.miarma.api.microservices.core.handlers.FileLogicHandler;
+import net.miarma.api.microservices.core.handlers.ScreenshotHandler;
+import net.miarma.api.microservices.core.handlers.UserLogicHandler;
+import net.miarma.api.microservices.core.services.UserService;
import net.miarma.api.microservices.core.routing.middlewares.CoreAuthGuard;
public class CoreLogicRouter {
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/middlewares/CoreAuthGuard.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/middlewares/CoreAuthGuard.java
index 503da6b..5cef285 100644
--- a/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/middlewares/CoreAuthGuard.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/routing/middlewares/CoreAuthGuard.java
@@ -5,8 +5,8 @@ import java.util.function.Consumer;
import io.vertx.ext.web.RoutingContext;
import net.miarma.api.backlib.Constants.CoreUserRole;
import net.miarma.api.backlib.middlewares.AbstractAuthGuard;
-import net.miarma.api.backlib.core.entities.UserEntity;
-import net.miarma.api.backlib.core.services.UserService;
+import net.miarma.api.microservices.core.entities.UserEntity;
+import net.miarma.api.microservices.core.services.UserService;
public class CoreAuthGuard extends AbstractAuthGuard {
private final UserService userService;
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/services/AuthService.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/services/AuthService.java
new file mode 100644
index 0000000..bbc217a
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/services/AuthService.java
@@ -0,0 +1,91 @@
+package net.miarma.api.microservices.core.services;
+
+import java.util.UUID;
+
+import io.vertx.core.Future;
+import io.vertx.core.json.JsonObject;
+import io.vertx.sqlclient.Pool;
+import net.miarma.api.backlib.exceptions.BadRequestException;
+import net.miarma.api.backlib.exceptions.ForbiddenException;
+import net.miarma.api.backlib.exceptions.NotFoundException;
+import net.miarma.api.backlib.security.JWTManager;
+import net.miarma.api.backlib.security.PasswordHasher;
+import net.miarma.api.microservices.core.dao.CredentialDAO;
+import net.miarma.api.microservices.core.dao.UserDAO;
+import net.miarma.api.microservices.core.entities.CredentialEntity;
+import net.miarma.api.microservices.core.entities.UserEntity;
+import net.miarma.api.microservices.core.enums.CoreUserGlobalRole;
+import net.miarma.api.microservices.core.enums.CoreUserGlobalStatus;
+
+public class AuthService {
+
+ private final UserDAO userDAO;
+ private final CredentialDAO credentialDAO;
+ private final int serviceId;
+
+ public AuthService(Pool pool, int serviceId) {
+ this.userDAO = new UserDAO(pool);
+ this.credentialDAO = new CredentialDAO(pool);
+ this.serviceId = serviceId;
+ }
+
+ /**
+ * Login: Comprueba credenciales y devuelve el token + datos del usuario
+ */
+ public Future login(String login, String plainPassword, boolean keepLoggedIn) {
+ return credentialDAO.getByServiceAndUsername(this.serviceId, login).compose(cred -> {
+ if (cred == null) {
+ return Future.failedFuture(new BadRequestException("Invalid credentials"));
+ }
+
+ if (!PasswordHasher.verify(plainPassword, cred.getPassword())) {
+ return Future.failedFuture(new BadRequestException("Invalid credentials"));
+ }
+
+ return userDAO.getById(cred.getUserId()).compose(user -> {
+ if (user == null) {
+ return Future.failedFuture(new NotFoundException("User not found"));
+ }
+
+ if (user.getGlobalStatus() != CoreUserGlobalStatus.ACTIVE) {
+ return Future.failedFuture(new ForbiddenException("User is inactive"));
+ }
+
+ String token = JWTManager.getInstance().generateToken(
+ cred.getUsername(),
+ user.getUserId(),
+ user.getGlobalRole(),
+ this.serviceId,
+ keepLoggedIn
+ );
+
+ JsonObject response = new JsonObject()
+ .put("token", token)
+ .put("user", JsonObject.mapFrom(user));
+
+ return Future.succeededFuture(response);
+ });
+ });
+ }
+
+ /**
+ * Register: Crea el perfil global y la credencial de servicio
+ */
+ public Future register(UserEntity profile, String username, String email, String password) {
+ profile.setUserId(UUID.randomUUID());
+ profile.setGlobalRole(CoreUserGlobalRole.USER);
+ profile.setGlobalStatus(CoreUserGlobalStatus.ACTIVE);
+
+ return userDAO.insert(profile).compose(savedUser -> {
+ CredentialEntity cred = new CredentialEntity();
+ cred.setCredentialId(UUID.randomUUID());
+ cred.setUserId(savedUser.getUserId());
+ cred.setServiceId(this.serviceId);
+ cred.setUsername(username);
+ cred.setEmail(email);
+ cred.setPassword(PasswordHasher.hash(password));
+ cred.setStatus(1);
+ return credentialDAO.insert(cred).map(savedUser);
+ });
+ }
+}
\ No newline at end of file
diff --git a/backlib/src/main/java/net/miarma/api/backlib/core/services/FileService.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/services/FileService.java
similarity index 63%
rename from backlib/src/main/java/net/miarma/api/backlib/core/services/FileService.java
rename to microservices/core/src/main/java/net/miarma/api/microservices/core/services/FileService.java
index 1b2dde1..7b01af2 100644
--- a/backlib/src/main/java/net/miarma/api/backlib/core/services/FileService.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/services/FileService.java
@@ -1,27 +1,35 @@
-package net.miarma.api.backlib.core.services;
-
-import io.vertx.core.Future;
-import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
-import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.OSType;
-import net.miarma.api.backlib.exceptions.NotFoundException;
-import net.miarma.api.backlib.exceptions.ValidationException;
-import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.backlib.core.dao.FileDAO;
-import net.miarma.api.backlib.core.entities.FileEntity;
-import net.miarma.api.backlib.core.validators.FileValidator;
+package net.miarma.api.microservices.core.services;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
+import java.util.UUID;
+
+import org.slf4j.Logger;
+
+import com.google.gson.Gson;
+
+import io.vertx.core.Future;
+import io.vertx.sqlclient.Pool;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.config.OSType;
+import net.miarma.api.backlib.exceptions.NotFoundException;
+import net.miarma.api.backlib.exceptions.ValidationException;
+import net.miarma.api.backlib.gson.GsonProvider;
+import net.miarma.api.backlib.http.QueryParams;
+import net.miarma.api.backlib.log.LoggerProvider;
+import net.miarma.api.microservices.core.dao.FileDAO;
+import net.miarma.api.microservices.core.entities.FileEntity;
+import net.miarma.api.microservices.core.validators.FileValidator;
public class FileService {
private final FileDAO fileDAO;
private final FileValidator fileValidator;
+ private final Gson GSON = GsonProvider.get();
+ private final Logger LOGGER = LoggerProvider.getLogger();
public FileService(Pool pool) {
this.fileDAO = new FileDAO(pool);
@@ -32,7 +40,7 @@ public class FileService {
return fileDAO.getAll(params);
}
- public Future getById(Integer id) {
+ public Future getById(UUID id) {
return fileDAO.getById(id).compose(file -> {
if (file == null) {
return Future.failedFuture(new NotFoundException("File not found with id: " + id));
@@ -41,28 +49,28 @@ public class FileService {
});
}
- public Future> getUserFiles(Integer userId) {
+ public Future> getUserFiles(UUID userId) {
return fileDAO.getUserFiles(userId);
}
public Future create(FileEntity file, byte[] fileBinary) {
- return fileValidator.validate(file, fileBinary.length).compose(validation -> {
+ return fileValidator.validateAsync(file, fileBinary.length).compose(validation -> {
if (!validation.isValid()) {
- return Future.failedFuture(new ValidationException(Constants.GSON.toJson(validation.getErrors())));
+ return Future.failedFuture(new ValidationException(GSON.toJson(validation.getErrors())));
}
String dir = ConfigManager.getInstance()
.getFilesDir(file.getContext().toCtxString());
- String pathString = dir + file.getFile_name();
- Path filePath = Paths.get(dir + file.getFile_name());
- file.setFile_path(ConfigManager.getOS() == OSType.WINDOWS ?
+ String pathString = dir + file.getFileName();
+ Path filePath = Paths.get(dir + file.getFileName());
+ file.setFilePath(ConfigManager.getOS() == OSType.WINDOWS ?
pathString.replace("\\", "\\\\") : pathString);
try {
Files.write(filePath, fileBinary);
} catch (IOException e) {
- Constants.LOGGER.error("Error writing file to disk: ", e);
+ LOGGER.error("Error writing file to disk: ", e);
return Future.failedFuture(e);
}
@@ -70,14 +78,14 @@ public class FileService {
});
}
- public Future downloadFile(Integer fileId) {
+ public Future downloadFile(UUID fileId) {
return getById(fileId);
}
public Future update(FileEntity file) {
- return fileValidator.validate(file).compose(validation -> {
+ return fileValidator.validateAsync(file).compose(validation -> {
if (!validation.isValid()) {
- return Future.failedFuture(new ValidationException(Constants.GSON.toJson(validation.getErrors())));
+ return Future.failedFuture(new ValidationException(GSON.toJson(validation.getErrors())));
}
return fileDAO.update(file);
@@ -85,27 +93,27 @@ public class FileService {
}
public Future upsert(FileEntity file) {
- return fileValidator.validate(file).compose(validation -> {
+ return fileValidator.validateAsync(file).compose(validation -> {
if (!validation.isValid()) {
- return Future.failedFuture(new ValidationException(Constants.GSON.toJson(validation.getErrors())));
+ return Future.failedFuture(new ValidationException(GSON.toJson(validation.getErrors())));
}
return fileDAO.upsert(file, "file_id");
});
}
- public Future delete(Integer fileId) {
+ public Future delete(UUID fileId) {
return getById(fileId).compose(file -> {
String dir = ConfigManager.getInstance()
.getFilesDir(file.getContext().toCtxString());
- String filePath = dir + file.getFile_name();
+ String filePath = dir + file.getFileName();
Path path = Paths.get(filePath);
try {
Files.deleteIfExists(path);
} catch (IOException e) {
- Constants.LOGGER.error("Error deleting file from disk: ", e);
+ LOGGER.error("Error deleting file from disk: ", e);
return Future.failedFuture(e);
}
@@ -118,7 +126,7 @@ public class FileService {
});
}
- public Future exists(Integer fileId) {
+ public Future exists(UUID fileId) {
return fileDAO.exists(fileId);
}
}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/services/UserService.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/services/UserService.java
new file mode 100644
index 0000000..0861c25
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/services/UserService.java
@@ -0,0 +1,55 @@
+package net.miarma.api.microservices.core.services;
+
+import java.util.List;
+import java.util.UUID;
+
+import io.vertx.core.Future;
+import io.vertx.sqlclient.Pool;
+import net.miarma.api.backlib.exceptions.NotFoundException;
+import net.miarma.api.backlib.http.QueryParams;
+import net.miarma.api.microservices.core.dao.UserDAO;
+import net.miarma.api.microservices.core.entities.UserEntity;
+import net.miarma.api.microservices.core.enums.CoreUserGlobalRole;
+import net.miarma.api.microservices.core.enums.CoreUserGlobalStatus;
+
+public class UserService {
+
+ private final UserDAO userDAO;
+
+ public UserService(Pool pool) {
+ this.userDAO = new UserDAO(pool);
+ }
+
+ public Future> getAll(QueryParams params) {
+ return userDAO.getAll(params);
+ }
+
+ public Future getById(UUID id) {
+ return userDAO.getById(id).compose(user -> {
+ if (user == null) return Future.failedFuture(new NotFoundException("User not found"));
+ return Future.succeededFuture(user);
+ });
+ }
+
+ public Future updateProfile(UserEntity user) {
+ return userDAO.update(user);
+ }
+
+ public Future changeRole(UUID userId, CoreUserGlobalRole newRole) {
+ return getById(userId).compose(user -> {
+ user.setGlobalRole(newRole);
+ return userDAO.update(user);
+ });
+ }
+
+ public Future changeStatus(UUID userId, CoreUserGlobalStatus newStatus) {
+ return getById(userId).compose(user -> {
+ user.setGlobalStatus(newStatus);
+ return userDAO.update(user);
+ });
+ }
+
+ public Future deleteUser(UUID id) {
+ return userDAO.delete(id);
+ }
+}
\ No newline at end of file
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/validators/FileValidator.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/validators/FileValidator.java
new file mode 100644
index 0000000..6b5c397
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/validators/FileValidator.java
@@ -0,0 +1,63 @@
+package net.miarma.api.microservices.core.validators;
+
+import io.vertx.core.Future;
+import net.miarma.api.backlib.validation.ValidationResult;
+import net.miarma.api.microservices.core.entities.FileEntity;
+
+public class FileValidator {
+
+ private static final long MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB
+
+ public Future validateAsync(FileEntity file, long size) {
+ ValidationResult result = validate(file);
+
+ if (size <= 0) {
+ result.addError("size", "File size must be greater than 0 bytes");
+ }
+
+ if (size > MAX_FILE_SIZE) {
+ result.addError("size", "File size exceeds the 10 MB limit");
+ }
+
+ return Future.succeededFuture(result);
+ }
+
+ public Future validateAsync(FileEntity file) {
+ ValidationResult result = validate(file);
+ return Future.succeededFuture(result);
+ }
+
+ private ValidationResult validate(FileEntity file) {
+ ValidationResult result = new ValidationResult();
+
+ if (file == null) {
+ return result.addError("file", "File object cannot be null");
+ }
+
+ if (file.getFileName() == null || file.getFileName().isBlank()) {
+ result.addError("file_name", "File name is required");
+ } else if (file.getFileName().length() > 255) {
+ result.addError("file_name", "File name is too long (max 255 characters)");
+ }
+
+ if (file.getFilePath() == null || file.getFilePath().isBlank()) {
+ result.addError("file_path", "File path is required");
+ } else if (file.getFilePath().length() > 255) {
+ result.addError("file_path", "File path is too long (max 255 characters)");
+ }
+
+ if (file.getMimeType() == null || file.getMimeType().isBlank()) {
+ result.addError("mime_type", "MIME type is required");
+ }
+
+ if (file.getContext() == null) {
+ result.addError("context", "File context is required");
+ }
+
+ if (file.getUploadedBy() == null) {
+ result.addError("uploaded_by", "Uploader User ID is required");
+ }
+
+ return result;
+ }
+}
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/validators/UserValidator.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/validators/UserValidator.java
new file mode 100644
index 0000000..5effa70
--- /dev/null
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/validators/UserValidator.java
@@ -0,0 +1,45 @@
+package net.miarma.api.microservices.core.validators;
+
+import io.vertx.core.Future;
+import net.miarma.api.backlib.validation.ValidationResult;
+import net.miarma.api.microservices.core.entities.CredentialEntity;
+import net.miarma.api.microservices.core.entities.UserEntity;
+
+public class UserValidator {
+
+ public Future validateAsync(UserEntity user, CredentialEntity creds) {
+ ValidationResult result = new ValidationResult();
+
+ if (user == null) {
+ return Future.succeededFuture(result.addError("user", "User profile cannot be null"));
+ }
+
+ if (user.getDisplayName() == null || user.getDisplayName().isBlank()) {
+ result.addError("display_name", "Display name is required");
+ }
+
+ if (creds == null) {
+ return Future.succeededFuture(result.addError("credentials", "Credentials are required"));
+ }
+
+ if (creds.getUsername() == null || creds.getUsername().isBlank()) {
+ result.addError("username", "Username is required");
+ }
+
+ if (creds.getEmail() != null && !creds.getEmail().isBlank()) {
+ if (!creds.getEmail().matches("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$")) {
+ result.addError("email", "Invalid email format");
+ }
+ } else {
+ result.addError("email", "Email is required");
+ }
+
+ if (creds.getPassword() == null || creds.getPassword().isBlank()) {
+ result.addError("password", "Password is required");
+ } else if (creds.getPassword().length() < 6) {
+ result.addError("password", "Password must be at least 6 characters long");
+ }
+
+ return Future.succeededFuture(result);
+ }
+}
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreDataVerticle.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreDataVerticle.java
index f5041e0..810a6ca 100644
--- a/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreDataVerticle.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreDataVerticle.java
@@ -9,13 +9,13 @@ import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
import net.miarma.api.backlib.Constants.CoreUserGlobalStatus;
import net.miarma.api.backlib.Constants.CoreUserRole;
-import net.miarma.api.backlib.core.entities.UserEntity;
-import net.miarma.api.backlib.core.services.FileService;
-import net.miarma.api.backlib.core.services.UserService;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.microservices.core.entities.UserEntity;
+import net.miarma.api.microservices.core.services.FileService;
+import net.miarma.api.microservices.core.services.UserService;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.EventBusUtil;
import net.miarma.api.backlib.util.RouterUtil;
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreLogicVerticle.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreLogicVerticle.java
index e6a1603..2e2da70 100644
--- a/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreLogicVerticle.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreLogicVerticle.java
@@ -5,7 +5,7 @@ import io.vertx.core.Promise;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.RouterUtil;
import net.miarma.api.microservices.core.routing.CoreLogicRouter;
diff --git a/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreMainVerticle.java b/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreMainVerticle.java
index a4a13f8..b7dd9bf 100644
--- a/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreMainVerticle.java
+++ b/microservices/core/src/main/java/net/miarma/api/microservices/core/verticles/CoreMainVerticle.java
@@ -4,9 +4,9 @@ import io.vertx.core.AbstractVerticle;
import io.vertx.core.DeploymentOptions;
import io.vertx.core.Promise;
import io.vertx.core.ThreadingModel;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.LogAccumulator;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.log.LogAccumulator;
import net.miarma.api.backlib.util.DeploymentUtil;
public class CoreMainVerticle extends AbstractVerticle {
diff --git a/microservices/huertos/pom.xml b/microservices/huertos/pom.xml
index 98efc1c..3ba4224 100644
--- a/microservices/huertos/pom.xml
+++ b/microservices/huertos/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
huertos
- 1.2.1
+ 2.0.0
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.1
+ 2.0.0
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosAnnouncementPriority.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosAnnouncementPriority.java
new file mode 100644
index 0000000..a512c87
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosAnnouncementPriority.java
@@ -0,0 +1,27 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum HuertosAnnouncementPriority implements IValuableEnum {
+ LOW(0),
+ MEDIUM(1),
+ HIGH(2);
+
+ private final int value;
+
+ HuertosAnnouncementPriority(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosAnnouncementPriority fromInt(int i) {
+ for (HuertosAnnouncementPriority priority : values()) {
+ if (priority.value == i) return priority;
+ }
+ throw new IllegalArgumentException("Invalid HuertosAnnouncementPriority value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosPaymentFrequency.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosPaymentFrequency.java
new file mode 100644
index 0000000..ce87842
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosPaymentFrequency.java
@@ -0,0 +1,26 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum HuertosPaymentFrequency implements IValuableEnum {
+ BIYEARLY(0),
+ YEARLY(1);
+
+ private final int value;
+
+ HuertosPaymentFrequency(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosPaymentFrequency fromInt(int i) {
+ for (HuertosPaymentFrequency frequency : values()) {
+ if (frequency.value == i) return frequency;
+ }
+ throw new IllegalArgumentException("Invalid HuertoPaymentFrequency value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosPaymentType.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosPaymentType.java
new file mode 100644
index 0000000..c5893db
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosPaymentType.java
@@ -0,0 +1,26 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum HuertosPaymentType implements IValuableEnum {
+ BANK(0),
+ CASH(1);
+
+ private final int value;
+
+ HuertosPaymentType(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosPaymentType fromInt(int i) {
+ for (HuertosPaymentType type : values()) {
+ if (type.value == i) return type;
+ }
+ throw new IllegalArgumentException("Invalid HuertoPaymentType value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosRequestStatus.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosRequestStatus.java
new file mode 100644
index 0000000..9977acb
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosRequestStatus.java
@@ -0,0 +1,27 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum HuertosRequestStatus implements IValuableEnum {
+ PENDING(0),
+ APPROVED(1),
+ REJECTED(2);
+
+ private final int value;
+
+ HuertosRequestStatus(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosRequestStatus fromInt(int i) {
+ for (HuertosRequestStatus status : values()) {
+ if (status.value == i) return status;
+ }
+ throw new IllegalArgumentException("Invalid HuertoRequestStatus value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosRequestType.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosRequestType.java
new file mode 100644
index 0000000..e83ce13
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosRequestType.java
@@ -0,0 +1,30 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum HuertosRequestType implements IValuableEnum {
+ REGISTER(0),
+ UNREGISTER(1),
+ ADD_COLLABORATOR(2),
+ REMOVE_COLLABORATOR(3),
+ ADD_GREENHOUSE(4),
+ REMOVE_GREENHOUSE(5);
+
+ private final int value;
+
+ HuertosRequestType(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosRequestType fromInt(int i) {
+ for (HuertosRequestType type : values()) {
+ if (type.value == i) return type;
+ }
+ throw new IllegalArgumentException("Invalid HuertoRequestType value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosUserRole.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosUserRole.java
new file mode 100644
index 0000000..f7b7ce7
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosUserRole.java
@@ -0,0 +1,27 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IUserRole;
+
+public enum HuertosUserRole implements IUserRole {
+ USER(0),
+ ADMIN(1),
+ DEV(2);
+
+ private final int value;
+
+ HuertosUserRole(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosUserRole fromInt(int i) {
+ for (HuertosUserRole role : values()) {
+ if (role.value == i) return role;
+ }
+ throw new IllegalArgumentException("Invalid HuertosUserRole value: " + i);
+ }
+}
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosUserType.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosUserType.java
new file mode 100644
index 0000000..ded83df
--- /dev/null
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/enums/HuertosUserType.java
@@ -0,0 +1,30 @@
+package net.miarma.api.microservices.huertos.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum HuertosUserType implements IValuableEnum {
+ WAIT_LIST(0),
+ MEMBER(1),
+ WITH_GREENHOUSE(2),
+ COLLABORATOR(3),
+ DEVELOPER(5),
+ SUBSIDY(4);
+
+ private final int value;
+
+ HuertosUserType(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static HuertosUserType fromInt(int i) {
+ for (HuertosUserType type : values()) {
+ if (type.value == i) return type;
+ }
+ throw new IllegalArgumentException("Invalid HuertosUserType value: " + i);
+ }
+}
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/handlers/MailHandler.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/handlers/MailHandler.java
index e9b80fc..32f37a5 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/handlers/MailHandler.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/handlers/MailHandler.java
@@ -10,8 +10,8 @@ import io.vertx.core.WorkerExecutor;
import io.vertx.core.json.Json;
import io.vertx.ext.web.RoutingContext;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.security.JWTManager;
import net.miarma.api.microservices.huertos.entities.MemberEntity;
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/ImapReader.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/ImapReader.java
index e25e3c4..156d9c7 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/ImapReader.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/ImapReader.java
@@ -14,7 +14,7 @@ import jakarta.mail.Session;
import jakarta.mail.Store;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeUtility;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
public class ImapReader {
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/MailManager.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/MailManager.java
index 7945ae2..30e44bc 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/MailManager.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/mail/MailManager.java
@@ -23,7 +23,7 @@ import jakarta.mail.Session;
import jakarta.mail.Store;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
public class MailManager {
private final Vertx vertx;
@@ -31,6 +31,9 @@ public class MailManager {
private final int smtpPort;
private final Map clientCache = new ConcurrentHashMap<>();
+ public static final List HUERTOS_ALLOWED_MAIL_FOLDERS =
+ List.of("INBOX", "Drafts", "Sent", "Spam", "Trash");
+
public MailManager(Vertx vertx) {
this.vertx = vertx;
this.smtpHost = ConfigManager.getInstance().getStringProperty("smtp.server");
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosDataVerticle.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosDataVerticle.java
index 5ebd6e0..582faad 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosDataVerticle.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosDataVerticle.java
@@ -9,10 +9,10 @@ import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
import net.miarma.api.backlib.Constants.HuertosUserStatus;
import net.miarma.api.backlib.Constants.HuertosUserType;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.EventBusUtil;
import net.miarma.api.backlib.util.NameCensorer;
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosLogicVerticle.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosLogicVerticle.java
index 80dfc58..dd58d83 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosLogicVerticle.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosLogicVerticle.java
@@ -5,7 +5,7 @@ import io.vertx.core.Promise;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.RouterUtil;
import net.miarma.api.microservices.huertos.routing.HuertosLogicRouter;
diff --git a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosMainVerticle.java b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosMainVerticle.java
index 0ce67f2..08fab03 100644
--- a/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosMainVerticle.java
+++ b/microservices/huertos/src/main/java/net/miarma/api/microservices/huertos/verticles/HuertosMainVerticle.java
@@ -2,9 +2,9 @@ package net.miarma.api.microservices.huertos.verticles;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.LogAccumulator;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.log.LogAccumulator;
import net.miarma.api.backlib.util.DeploymentUtil;
public class HuertosMainVerticle extends AbstractVerticle {
diff --git a/microservices/huertosdecine/pom.xml b/microservices/huertosdecine/pom.xml
index dbe228f..4dfe502 100644
--- a/microservices/huertosdecine/pom.xml
+++ b/microservices/huertosdecine/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
huertosdecine
- 1.2.1
+ 2.0.0
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.1
+ 2.0.0
diff --git a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/enums/CineUserRole.java b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/enums/CineUserRole.java
new file mode 100644
index 0000000..45112fa
--- /dev/null
+++ b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/enums/CineUserRole.java
@@ -0,0 +1,26 @@
+package net.miarma.api.microservices.huertosdecine.enums;
+
+import net.miarma.api.backlib.interfaces.IUserRole;
+
+public enum CineUserRole implements IUserRole {
+ USER(0),
+ ADMIN(1);
+
+ private final int value;
+
+ CineUserRole(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static CineUserRole fromInt(int i) {
+ for (CineUserRole role : values()) {
+ if (role.value == i) return role;
+ }
+ throw new IllegalArgumentException("Invalid CineUserRole value: " + i);
+ }
+}
diff --git a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/handlers/MovieDataHandler.java b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/handlers/MovieDataHandler.java
index b6e5125..cdc0bfa 100644
--- a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/handlers/MovieDataHandler.java
+++ b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/handlers/MovieDataHandler.java
@@ -2,8 +2,8 @@ package net.miarma.api.microservices.huertosdecine.handlers;
import io.vertx.ext.web.RoutingContext;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.http.ApiStatus;
import net.miarma.api.backlib.http.QueryParams;
import net.miarma.api.microservices.huertosdecine.entities.MovieEntity;
diff --git a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineDataVerticle.java b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineDataVerticle.java
index f33dfa6..6b9de03 100644
--- a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineDataVerticle.java
+++ b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineDataVerticle.java
@@ -9,8 +9,8 @@ import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.EventBusUtil;
import net.miarma.api.backlib.util.RouterUtil;
diff --git a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineLogicVerticle.java b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineLogicVerticle.java
index e6a3c6c..4adc597 100644
--- a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineLogicVerticle.java
+++ b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineLogicVerticle.java
@@ -5,7 +5,7 @@ import io.vertx.core.Promise;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.RouterUtil;
import net.miarma.api.microservices.huertosdecine.routing.CineLogicRouter;
diff --git a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineMainVerticle.java b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineMainVerticle.java
index ec6bfaa..b28a22f 100644
--- a/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineMainVerticle.java
+++ b/microservices/huertosdecine/src/main/java/net/miarma/api/microservices/huertosdecine/verticles/CineMainVerticle.java
@@ -2,9 +2,9 @@ package net.miarma.api.microservices.huertosdecine.verticles;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.LogAccumulator;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.log.LogAccumulator;
import net.miarma.api.backlib.util.DeploymentUtil;
public class CineMainVerticle extends AbstractVerticle {
diff --git a/microservices/miarmacraft/pom.xml b/microservices/miarmacraft/pom.xml
index 8123021..fe2d487 100644
--- a/microservices/miarmacraft/pom.xml
+++ b/microservices/miarmacraft/pom.xml
@@ -1,8 +1,8 @@
4.0.0
net.miarma.api
- miarmacraft
- 1.2.1
+ minecraft
+ 2.0.0
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.1
+ 2.0.0
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/ModLogicHandler.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/ModLogicHandler.java
deleted file mode 100644
index 3d398c8..0000000
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/ModLogicHandler.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package net.miarma.api.microservices.miarmacraft.handlers;
-
-public class ModLogicHandler {
-
-}
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/ModDAO.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/ModDAO.java
similarity index 96%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/ModDAO.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/ModDAO.java
index d5828d7..07522eb 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/ModDAO.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/ModDAO.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.dao;
+package net.miarma.api.microservices.minecraft.dao;
import io.vertx.core.Future;
import io.vertx.core.Promise;
@@ -8,7 +8,7 @@ import net.miarma.api.backlib.db.DatabaseManager;
import net.miarma.api.backlib.db.QueryBuilder;
import net.miarma.api.backlib.http.QueryFilters;
import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.microservices.miarmacraft.entities.ModEntity;
+import net.miarma.api.microservices.minecraft.entities.ModEntity;
import java.util.List;
import java.util.Map;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/PlayerDAO.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/PlayerDAO.java
similarity index 96%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/PlayerDAO.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/PlayerDAO.java
index d6d15f8..f14567c 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/PlayerDAO.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/PlayerDAO.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.dao;
+package net.miarma.api.microservices.minecraft.dao;
import io.vertx.core.Future;
import io.vertx.core.Promise;
@@ -8,7 +8,7 @@ import net.miarma.api.backlib.db.DatabaseManager;
import net.miarma.api.backlib.db.QueryBuilder;
import net.miarma.api.backlib.http.QueryFilters;
import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.microservices.miarmacraft.entities.PlayerEntity;
+import net.miarma.api.microservices.minecraft.entities.PlayerEntity;
import java.util.List;
import java.util.Map;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/UserMetadataDAO.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/UserMetadataDAO.java
similarity index 96%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/UserMetadataDAO.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/UserMetadataDAO.java
index 8455a3b..f51c592 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/dao/UserMetadataDAO.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/dao/UserMetadataDAO.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.dao;
+package net.miarma.api.microservices.minecraft.dao;
import io.vertx.core.Future;
import io.vertx.core.Promise;
@@ -8,7 +8,7 @@ import net.miarma.api.backlib.db.DatabaseManager;
import net.miarma.api.backlib.db.QueryBuilder;
import net.miarma.api.backlib.http.QueryFilters;
import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.microservices.miarmacraft.entities.UserMetadataEntity;
+import net.miarma.api.microservices.minecraft.entities.UserMetadataEntity;
import java.util.List;
import java.util.Map;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/ModEntity.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/ModEntity.java
similarity index 95%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/ModEntity.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/ModEntity.java
index 8aa1f76..cb5e096 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/ModEntity.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/ModEntity.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.entities;
+package net.miarma.api.microservices.minecraft.entities;
import io.vertx.sqlclient.Row;
import net.miarma.api.backlib.Constants.MMCModStatus;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/PlayerEntity.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/PlayerEntity.java
similarity index 98%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/PlayerEntity.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/PlayerEntity.java
index da75733..118e149 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/PlayerEntity.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/PlayerEntity.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.entities;
+package net.miarma.api.microservices.minecraft.entities;
import java.time.LocalDateTime;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/UserMetadataEntity.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/UserMetadataEntity.java
similarity index 95%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/UserMetadataEntity.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/UserMetadataEntity.java
index 174e6fa..f67a244 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/entities/UserMetadataEntity.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/entities/UserMetadataEntity.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.entities;
+package net.miarma.api.microservices.minecraft.entities;
import io.vertx.sqlclient.Row;
import net.miarma.api.backlib.Constants.MMCUserRole;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/enums/MinecraftModStatus.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/enums/MinecraftModStatus.java
new file mode 100644
index 0000000..09176da
--- /dev/null
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/enums/MinecraftModStatus.java
@@ -0,0 +1,26 @@
+package net.miarma.api.microservices.minecraft.enums;
+
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum MinecraftModStatus implements IValuableEnum {
+ ACTIVE(0),
+ INACTIVE(1);
+
+ private final int value;
+
+ MinecraftModStatus(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static MinecraftModStatus fromInt(int i) {
+ for (MinecraftModStatus status : values()) {
+ if (status.value == i) return status;
+ }
+ throw new IllegalArgumentException("Invalid MinecraftModStatus value: " + i);
+ }
+}
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/enums/MinecraftUserRole.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/enums/MinecraftUserRole.java
new file mode 100644
index 0000000..8f518c7
--- /dev/null
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/enums/MinecraftUserRole.java
@@ -0,0 +1,27 @@
+package net.miarma.api.microservices.minecraft.enums;
+
+import net.miarma.api.backlib.interfaces.IUserRole;
+import net.miarma.api.backlib.interfaces.IValuableEnum;
+
+public enum MinecraftUserRole implements IUserRole, IValuableEnum {
+ PLAYER(0),
+ ADMIN(1);
+
+ private final int value;
+
+ MinecraftUserRole(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public int getValue() {
+ return value;
+ }
+
+ public static MinecraftUserRole fromInt(int i) {
+ for (MinecraftUserRole role : values()) {
+ if (role.value == i) return role;
+ }
+ throw new IllegalArgumentException("Invalid MinecraftUserRole value: " + i);
+ }
+}
\ No newline at end of file
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/ModDataHandler.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/ModDataHandler.java
similarity index 94%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/ModDataHandler.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/ModDataHandler.java
index 59ec031..61dc49b 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/ModDataHandler.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/ModDataHandler.java
@@ -1,13 +1,13 @@
-package net.miarma.api.microservices.miarmacraft.handlers;
+package net.miarma.api.microservices.minecraft.handlers;
import io.vertx.ext.web.RoutingContext;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.http.ApiStatus;
-import net.miarma.api.microservices.miarmacraft.entities.ModEntity;
-import net.miarma.api.microservices.miarmacraft.services.ModService;
import net.miarma.api.backlib.util.JsonUtil;
+import net.miarma.api.microservices.minecraft.entities.ModEntity;
+import net.miarma.api.microservices.minecraft.services.ModService;
import java.nio.file.Files;
import java.nio.file.Path;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/ModLogicHandler.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/ModLogicHandler.java
new file mode 100644
index 0000000..44a4890
--- /dev/null
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/ModLogicHandler.java
@@ -0,0 +1,5 @@
+package net.miarma.api.microservices.minecraft.handlers;
+
+public class ModLogicHandler {
+
+}
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/PlayerDataHandler.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/PlayerDataHandler.java
similarity index 90%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/PlayerDataHandler.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/PlayerDataHandler.java
index 6754c7e..7b6bf8e 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/PlayerDataHandler.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/PlayerDataHandler.java
@@ -1,12 +1,12 @@
-package net.miarma.api.microservices.miarmacraft.handlers;
+package net.miarma.api.microservices.minecraft.handlers;
import io.vertx.ext.web.RoutingContext;
import io.vertx.sqlclient.Pool;
import net.miarma.api.backlib.Constants;
import net.miarma.api.backlib.http.ApiStatus;
-import net.miarma.api.microservices.miarmacraft.entities.PlayerEntity;
-import net.miarma.api.microservices.miarmacraft.services.PlayerService;
import net.miarma.api.backlib.util.JsonUtil;
+import net.miarma.api.microservices.minecraft.entities.PlayerEntity;
+import net.miarma.api.microservices.minecraft.services.PlayerService;
public class PlayerDataHandler {
private final PlayerService playerService;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/PlayerLogicHandler.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/PlayerLogicHandler.java
similarity index 98%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/PlayerLogicHandler.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/PlayerLogicHandler.java
index 50d66f3..09e8d34 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/handlers/PlayerLogicHandler.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/handlers/PlayerLogicHandler.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.handlers;
+package net.miarma.api.microservices.minecraft.handlers;
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonObject;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCDataRouter.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCDataRouter.java
similarity index 81%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCDataRouter.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCDataRouter.java
index 23ac07c..6f61e93 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCDataRouter.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCDataRouter.java
@@ -1,14 +1,14 @@
-package net.miarma.api.microservices.miarmacraft.routing;
+package net.miarma.api.microservices.minecraft.routing;
import io.vertx.core.Vertx;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
import net.miarma.api.backlib.Constants.MMCUserRole;
-import net.miarma.api.microservices.miarmacraft.handlers.ModDataHandler;
-import net.miarma.api.microservices.miarmacraft.handlers.PlayerDataHandler;
-import net.miarma.api.microservices.miarmacraft.routing.middlewares.MMCAuthGuard;
-import net.miarma.api.microservices.miarmacraft.services.PlayerService;
+import net.miarma.api.microservices.minecraft.handlers.ModDataHandler;
+import net.miarma.api.microservices.minecraft.handlers.PlayerDataHandler;
+import net.miarma.api.microservices.minecraft.routing.middlewares.MMCAuthGuard;
+import net.miarma.api.microservices.minecraft.services.PlayerService;
public class MMCDataRouter {
public static void mount(Router router, Vertx vertx, Pool pool) {
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCEndpoints.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCEndpoints.java
similarity index 95%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCEndpoints.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCEndpoints.java
index 7cd93ac..22ec9fa 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCEndpoints.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCEndpoints.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.routing;
+package net.miarma.api.microservices.minecraft.routing;
import net.miarma.api.backlib.Constants;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCLogicRouter.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCLogicRouter.java
similarity index 82%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCLogicRouter.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCLogicRouter.java
index edda36a..d48acfd 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/MMCLogicRouter.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/MMCLogicRouter.java
@@ -1,12 +1,12 @@
-package net.miarma.api.microservices.miarmacraft.routing;
+package net.miarma.api.microservices.minecraft.routing;
import io.vertx.core.Vertx;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.microservices.miarmacraft.handlers.PlayerLogicHandler;
-import net.miarma.api.microservices.miarmacraft.routing.middlewares.MMCAuthGuard;
-import net.miarma.api.microservices.miarmacraft.services.PlayerService;
+import net.miarma.api.microservices.minecraft.handlers.PlayerLogicHandler;
+import net.miarma.api.microservices.minecraft.routing.middlewares.MMCAuthGuard;
+import net.miarma.api.microservices.minecraft.services.PlayerService;
public class MMCLogicRouter {
public static void mount(Router router, Vertx vertx, Pool pool) {
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/middlewares/MMCAuthGuard.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/middlewares/MMCAuthGuard.java
similarity index 82%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/middlewares/MMCAuthGuard.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/middlewares/MMCAuthGuard.java
index dac2e70..528c3ec 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/routing/middlewares/MMCAuthGuard.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/routing/middlewares/MMCAuthGuard.java
@@ -1,12 +1,12 @@
-package net.miarma.api.microservices.miarmacraft.routing.middlewares;
+package net.miarma.api.microservices.minecraft.routing.middlewares;
import java.util.function.Consumer;
import io.vertx.ext.web.RoutingContext;
import net.miarma.api.backlib.Constants.MMCUserRole;
import net.miarma.api.backlib.middlewares.AbstractAuthGuard;
-import net.miarma.api.microservices.miarmacraft.entities.PlayerEntity;
-import net.miarma.api.microservices.miarmacraft.services.PlayerService;
+import net.miarma.api.microservices.minecraft.entities.PlayerEntity;
+import net.miarma.api.microservices.minecraft.services.PlayerService;
public class MMCAuthGuard extends AbstractAuthGuard {
private final PlayerService playerService;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/services/ModService.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/services/ModService.java
similarity index 91%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/services/ModService.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/services/ModService.java
index a1e7436..f6ff955 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/services/ModService.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/services/ModService.java
@@ -1,16 +1,16 @@
-package net.miarma.api.microservices.miarmacraft.services;
+package net.miarma.api.microservices.minecraft.services;
import com.eduardomcb.discord.webhook.WebhookClient;
import com.eduardomcb.discord.webhook.WebhookManager;
import com.eduardomcb.discord.webhook.models.Message;
import io.vertx.core.Future;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.exceptions.NotFoundException;
import net.miarma.api.backlib.http.QueryParams;
-import net.miarma.api.microservices.miarmacraft.dao.ModDAO;
-import net.miarma.api.microservices.miarmacraft.entities.ModEntity;
+import net.miarma.api.microservices.minecraft.dao.ModDAO;
+import net.miarma.api.microservices.minecraft.entities.ModEntity;
import java.util.List;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/services/PlayerService.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/services/PlayerService.java
similarity index 94%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/services/PlayerService.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/services/PlayerService.java
index 2d1a008..eedd364 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/services/PlayerService.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/services/PlayerService.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.services;
+package net.miarma.api.microservices.minecraft.services;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
@@ -13,13 +13,13 @@ import net.miarma.api.backlib.exceptions.NotFoundException;
import net.miarma.api.backlib.http.QueryParams;
import net.miarma.api.backlib.security.JWTManager;
import net.miarma.api.backlib.security.PasswordHasher;
+import net.miarma.api.microservices.minecraft.dao.PlayerDAO;
+import net.miarma.api.microservices.minecraft.dao.UserMetadataDAO;
+import net.miarma.api.microservices.minecraft.entities.PlayerEntity;
+import net.miarma.api.microservices.minecraft.entities.UserMetadataEntity;
import net.miarma.api.backlib.core.dao.UserDAO;
import net.miarma.api.backlib.core.entities.UserEntity;
import net.miarma.api.backlib.core.services.UserService;
-import net.miarma.api.microservices.miarmacraft.dao.PlayerDAO;
-import net.miarma.api.microservices.miarmacraft.dao.UserMetadataDAO;
-import net.miarma.api.microservices.miarmacraft.entities.PlayerEntity;
-import net.miarma.api.microservices.miarmacraft.entities.UserMetadataEntity;
import java.util.List;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCDataVerticle.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCDataVerticle.java
similarity index 94%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCDataVerticle.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCDataVerticle.java
index a496573..79566f3 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCDataVerticle.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCDataVerticle.java
@@ -1,4 +1,4 @@
-package net.miarma.api.microservices.miarmacraft.verticles;
+package net.miarma.api.microservices.minecraft.verticles;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
@@ -6,15 +6,15 @@ import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
import net.miarma.api.backlib.Constants.MMCUserRole;
import net.miarma.api.backlib.Constants.MMCUserStatus;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.EventBusUtil;
import net.miarma.api.backlib.util.RouterUtil;
-import net.miarma.api.microservices.miarmacraft.routing.MMCDataRouter;
-import net.miarma.api.microservices.miarmacraft.services.PlayerService;
+import net.miarma.api.microservices.minecraft.routing.MMCDataRouter;
+import net.miarma.api.microservices.minecraft.services.PlayerService;
public class MMCDataVerticle extends AbstractVerticle {
private ConfigManager configManager;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCLogicVerticle.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCLogicVerticle.java
similarity index 83%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCLogicVerticle.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCLogicVerticle.java
index 081597b..047522f 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCLogicVerticle.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCLogicVerticle.java
@@ -1,14 +1,14 @@
-package net.miarma.api.microservices.miarmacraft.verticles;
+package net.miarma.api.microservices.minecraft.verticles;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.backlib.util.RouterUtil;
-import net.miarma.api.microservices.miarmacraft.routing.MMCLogicRouter;
+import net.miarma.api.microservices.minecraft.routing.MMCLogicRouter;
public class MMCLogicVerticle extends AbstractVerticle {
private ConfigManager configManager;
diff --git a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCMainVerticle.java b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCMainVerticle.java
similarity index 90%
rename from microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCMainVerticle.java
rename to microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCMainVerticle.java
index 3ba3b8c..4b4e1c9 100644
--- a/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/miarmacraft/verticles/MMCMainVerticle.java
+++ b/microservices/miarmacraft/src/main/java/net/miarma/api/microservices/minecraft/verticles/MMCMainVerticle.java
@@ -1,10 +1,10 @@
-package net.miarma.api.microservices.miarmacraft.verticles;
+package net.miarma.api.microservices.minecraft.verticles;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.LogAccumulator;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.log.LogAccumulator;
import net.miarma.api.backlib.util.DeploymentUtil;
public class MMCMainVerticle extends AbstractVerticle {
diff --git a/microservices/mpaste/pom.xml b/microservices/mpaste/pom.xml
index e344b2e..abc2e9d 100644
--- a/microservices/mpaste/pom.xml
+++ b/microservices/mpaste/pom.xml
@@ -2,7 +2,7 @@
4.0.0
net.miarma.api
mpaste
- 1.2.1
+ 2.0.0
23
@@ -20,7 +20,7 @@
net.miarma.api
backlib
- 1.2.1
+ 2.0.0
diff --git a/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteDataVerticle.java b/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteDataVerticle.java
index 1790dc8..141a53b 100644
--- a/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteDataVerticle.java
+++ b/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteDataVerticle.java
@@ -5,8 +5,8 @@ import io.vertx.core.Promise;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.microservices.mpaste.routing.MPasteDataRouter;
import net.miarma.api.microservices.mpaste.services.PasteService;
diff --git a/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteLogicVerticle.java b/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteLogicVerticle.java
index d6f7e23..fd1ca5b 100644
--- a/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteLogicVerticle.java
+++ b/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteLogicVerticle.java
@@ -4,7 +4,7 @@ import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.ext.web.Router;
import io.vertx.sqlclient.Pool;
-import net.miarma.api.backlib.ConfigManager;
+import net.miarma.api.backlib.config.ConfigManager;
import net.miarma.api.backlib.db.DatabaseProvider;
import net.miarma.api.microservices.mpaste.routing.MPasteLogicRouter;
import net.miarma.api.backlib.util.RouterUtil;
diff --git a/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteMainVerticle.java b/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteMainVerticle.java
index b5314ac..9c638e0 100644
--- a/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteMainVerticle.java
+++ b/microservices/mpaste/src/main/java/net/miarma/api/microservices/mpaste/verticles/MPasteMainVerticle.java
@@ -2,9 +2,9 @@ package net.miarma.api.microservices.mpaste.verticles;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
-import net.miarma.api.backlib.ConfigManager;
import net.miarma.api.backlib.Constants;
-import net.miarma.api.backlib.LogAccumulator;
+import net.miarma.api.backlib.config.ConfigManager;
+import net.miarma.api.backlib.log.LogAccumulator;
import net.miarma.api.backlib.util.DeploymentUtil;
public class MPasteMainVerticle extends AbstractVerticle {
diff --git a/pom.xml b/pom.xml
index a237905..60af061 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,8 +4,8 @@
4.0.0
net.miarma.api
- miarma-ecosystem
- 1.2.1
+ miarma-backend
+ 2.0.0
pom
@@ -13,7 +13,7 @@
bootstrap
microservices/huertos
microservices/huertosdecine
- microservices/miarmacraft
+ microservices/minecraft
microservices/mpaste
microservices/core