diff --git a/backlib/.classpath b/backlib/.classpath
new file mode 100644
index 0000000..653dfd7
--- /dev/null
+++ b/backlib/.classpath
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backlib/.project b/backlib/.project
new file mode 100644
index 0000000..6b0251e
--- /dev/null
+++ b/backlib/.project
@@ -0,0 +1,23 @@
+
+
+ backlib
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+ org.eclipse.m2e.core.maven2Nature
+
+
diff --git a/backlib/.settings/org.eclipse.jdt.apt.core.prefs b/backlib/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 0000000..d4313d4
--- /dev/null
+++ b/backlib/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=false
diff --git a/backlib/.settings/org.eclipse.jdt.core.prefs b/backlib/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..1b6e1ef
--- /dev/null
+++ b/backlib/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/backlib/.settings/org.eclipse.m2e.core.prefs b/backlib/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/backlib/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/backlib/pom.xml b/backlib/pom.xml
new file mode 100644
index 0000000..40541b5
--- /dev/null
+++ b/backlib/pom.xml
@@ -0,0 +1,19 @@
+
+ 4.0.0
+
+ net.miarma
+ backend
+ 1.0.0
+
+ backlib
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.1.1
+
+
+
\ No newline at end of file
diff --git a/core/src/main/java/net/miarma/backend/core/dto/ChangePasswordRequest.java b/backlib/src/main/java/net/miarma/backlib/dto/ChangePasswordRequest.java
similarity index 95%
rename from core/src/main/java/net/miarma/backend/core/dto/ChangePasswordRequest.java
rename to backlib/src/main/java/net/miarma/backlib/dto/ChangePasswordRequest.java
index 46af3fc..41c0e32 100644
--- a/core/src/main/java/net/miarma/backend/core/dto/ChangePasswordRequest.java
+++ b/backlib/src/main/java/net/miarma/backlib/dto/ChangePasswordRequest.java
@@ -1,4 +1,4 @@
-package net.miarma.backend.core.dto;
+package net.miarma.backlib.dto;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
diff --git a/core/src/main/java/net/miarma/backend/core/dto/CredentialDto.java b/backlib/src/main/java/net/miarma/backlib/dto/CredentialDto.java
similarity index 66%
rename from core/src/main/java/net/miarma/backend/core/dto/CredentialDto.java
rename to backlib/src/main/java/net/miarma/backlib/dto/CredentialDto.java
index b5e9cf3..b68547f 100644
--- a/core/src/main/java/net/miarma/backend/core/dto/CredentialDto.java
+++ b/backlib/src/main/java/net/miarma/backlib/dto/CredentialDto.java
@@ -1,12 +1,11 @@
-package net.miarma.backend.core.dto;
+package net.miarma.backlib.dto;
import java.time.Instant;
import java.util.UUID;
-import net.miarma.backend.core.model.Credential;
-
public class CredentialDto {
- private UUID credentialId;
+ private UUID credentialId;
+ private UUID userId;
private Byte serviceId;
private String username;
private String email;
@@ -16,73 +15,64 @@ public class CredentialDto {
public CredentialDto() {}
- public CredentialDto(Credential credential) {
- this.credentialId = credential.getCredentialId();
- this.serviceId = credential.getServiceId();
- this.username = credential.getUsername();
- this.email = credential.getEmail();
- this.status = credential.getStatus();
- this.createdAt = credential.getCreatedAt();
- this.updatedAt = credential.getUpdatedAt();
- }
-
- public static CredentialDto fromEntity(Credential credential) {
- if (credential == null) return null;
- return new CredentialDto(credential);
+ public CredentialDto(UUID credentialId, UUID userId, Byte serviceId, String username, String email,
+ Byte status, Instant createdAt, Instant updatedAt) {
+ this.credentialId = credentialId;
+ this.userId = userId;
+ this.serviceId = serviceId;
+ this.username = username;
+ this.email = email;
+ this.status = status;
+ this.createdAt = createdAt;
+ this.updatedAt = updatedAt;
}
+ // Getters y setters
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 Byte getServiceId() {
return serviceId;
}
-
public void setServiceId(Byte 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 Byte getStatus() {
return status;
}
-
public void setStatus(Byte status) {
this.status = status;
}
-
public Instant getCreatedAt() {
return createdAt;
}
-
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
-
public Instant getUpdatedAt() {
return updatedAt;
}
-
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
diff --git a/core/src/main/java/net/miarma/backend/core/dto/LoginRequest.java b/backlib/src/main/java/net/miarma/backlib/dto/LoginRequest.java
similarity index 94%
rename from core/src/main/java/net/miarma/backend/core/dto/LoginRequest.java
rename to backlib/src/main/java/net/miarma/backlib/dto/LoginRequest.java
index 888949f..8ed9cda 100644
--- a/core/src/main/java/net/miarma/backend/core/dto/LoginRequest.java
+++ b/backlib/src/main/java/net/miarma/backlib/dto/LoginRequest.java
@@ -1,4 +1,4 @@
-package net.miarma.backend.core.dto;
+package net.miarma.backlib.dto;
import jakarta.validation.constraints.NotBlank;
diff --git a/core/src/main/java/net/miarma/backend/core/dto/LoginResponse.java b/backlib/src/main/java/net/miarma/backlib/dto/LoginResponse.java
similarity index 94%
rename from core/src/main/java/net/miarma/backend/core/dto/LoginResponse.java
rename to backlib/src/main/java/net/miarma/backlib/dto/LoginResponse.java
index 3a789a8..d4b22df 100644
--- a/core/src/main/java/net/miarma/backend/core/dto/LoginResponse.java
+++ b/backlib/src/main/java/net/miarma/backlib/dto/LoginResponse.java
@@ -1,4 +1,4 @@
-package net.miarma.backend.core.dto;
+package net.miarma.backlib.dto;
public class LoginResponse {
private String token;
diff --git a/core/src/main/java/net/miarma/backend/core/dto/RegisterRequest.java b/backlib/src/main/java/net/miarma/backlib/dto/RegisterRequest.java
similarity index 95%
rename from core/src/main/java/net/miarma/backend/core/dto/RegisterRequest.java
rename to backlib/src/main/java/net/miarma/backlib/dto/RegisterRequest.java
index f6f8bea..032e0c0 100644
--- a/core/src/main/java/net/miarma/backend/core/dto/RegisterRequest.java
+++ b/backlib/src/main/java/net/miarma/backlib/dto/RegisterRequest.java
@@ -1,4 +1,4 @@
-package net.miarma.backend.core.dto;
+package net.miarma.backlib.dto;
public class RegisterRequest {
private String username;
diff --git a/backlib/src/main/java/net/miarma/backlib/dto/UserDto.java b/backlib/src/main/java/net/miarma/backlib/dto/UserDto.java
new file mode 100644
index 0000000..ac17abc
--- /dev/null
+++ b/backlib/src/main/java/net/miarma/backlib/dto/UserDto.java
@@ -0,0 +1,71 @@
+package net.miarma.backlib.dto;
+
+import java.time.Instant;
+import java.util.UUID;
+
+public class UserDto {
+ private UUID userId;
+ private String displayName;
+ private String avatar;
+ private Byte globalStatus;
+ private Byte globalRole;
+ private Instant createdAt;
+ private Instant updatedAt;
+
+ public UserDto() {}
+
+ public UserDto(UUID userId, String displayName, String avatar, Byte globalStatus, Byte globalRole,
+ Instant createdAt, Instant updatedAt) {
+ this.userId = userId;
+ this.displayName = displayName;
+ this.avatar = avatar;
+ this.globalStatus = globalStatus;
+ this.globalRole = globalRole;
+ this.createdAt = createdAt;
+ this.updatedAt = updatedAt;
+ }
+
+ // Getters y setters
+ public UUID getUserId() {
+ return userId;
+ }
+ public void setUserId(UUID userId) {
+ this.userId = userId;
+ }
+ 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 Byte getGlobalStatus() {
+ return globalStatus;
+ }
+ public void setGlobalStatus(Byte globalStatus) {
+ this.globalStatus = globalStatus;
+ }
+ public Byte getGlobalRole() {
+ return globalRole;
+ }
+ public void setGlobalRole(Byte globalRole) {
+ this.globalRole = globalRole;
+ }
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+}
diff --git a/core/src/main/java/net/miarma/backend/core/util/UuidUtils.java b/backlib/src/main/java/net/miarma/backlib/util/UuidUtil.java
similarity index 87%
rename from core/src/main/java/net/miarma/backend/core/util/UuidUtils.java
rename to backlib/src/main/java/net/miarma/backlib/util/UuidUtil.java
index 4cbf4cd..2d915f3 100644
--- a/core/src/main/java/net/miarma/backend/core/util/UuidUtils.java
+++ b/backlib/src/main/java/net/miarma/backlib/util/UuidUtil.java
@@ -1,9 +1,9 @@
-package net.miarma.backend.core.util;
+package net.miarma.backlib.util;
import java.nio.ByteBuffer;
import java.util.UUID;
-public class UuidUtils {
+public class UuidUtil {
public static byte[] uuidToBin(UUID uuid) {
ByteBuffer bb = ByteBuffer.allocate(16);
bb.putLong(uuid.getMostSignificantBits());
diff --git a/backlib/target/classes/META-INF/MANIFEST.MF b/backlib/target/classes/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a5622f8
--- /dev/null
+++ b/backlib/target/classes/META-INF/MANIFEST.MF
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Build-Jdk-Spec: 21
+Created-By: Maven Integration for Eclipse
+
diff --git a/backlib/target/classes/META-INF/maven/net.miarma/backlib/pom.properties b/backlib/target/classes/META-INF/maven/net.miarma/backlib/pom.properties
new file mode 100644
index 0000000..2cecf85
--- /dev/null
+++ b/backlib/target/classes/META-INF/maven/net.miarma/backlib/pom.properties
@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Sun Jan 18 04:49:28 CET 2026
+artifactId=backlib
+groupId=net.miarma
+m2e.projectLocation=/home/jomaa/git/miarma-backend/backlib
+m2e.projectName=backlib
+version=1.0.0
diff --git a/backlib/target/classes/META-INF/maven/net.miarma/backlib/pom.xml b/backlib/target/classes/META-INF/maven/net.miarma/backlib/pom.xml
new file mode 100644
index 0000000..40541b5
--- /dev/null
+++ b/backlib/target/classes/META-INF/maven/net.miarma/backlib/pom.xml
@@ -0,0 +1,19 @@
+
+ 4.0.0
+
+ net.miarma
+ backend
+ 1.0.0
+
+ backlib
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.1.1
+
+
+
\ No newline at end of file
diff --git a/cine/.project b/cine/.project
index d49c5d8..6572ffe 100644
--- a/cine/.project
+++ b/cine/.project
@@ -15,6 +15,11 @@
+
+ org.springframework.ide.eclipse.boot.validation.springbootbuilder
+
+
+
org.eclipse.jdt.core.javanature
diff --git a/cine/.settings/org.springframework.ide.eclipse.prefs b/cine/.settings/org.springframework.ide.eclipse.prefs
new file mode 100644
index 0000000..a12794d
--- /dev/null
+++ b/cine/.settings/org.springframework.ide.eclipse.prefs
@@ -0,0 +1,2 @@
+boot.validation.initialized=true
+eclipse.preferences.version=1
diff --git a/core/.project b/core/.project
index 529a1c6..7b31b8f 100644
--- a/core/.project
+++ b/core/.project
@@ -15,6 +15,11 @@
+
+ org.springframework.ide.eclipse.boot.validation.springbootbuilder
+
+
+
org.eclipse.jdt.core.javanature
diff --git a/core/.settings/org.springframework.ide.eclipse.prefs b/core/.settings/org.springframework.ide.eclipse.prefs
new file mode 100644
index 0000000..a12794d
--- /dev/null
+++ b/core/.settings/org.springframework.ide.eclipse.prefs
@@ -0,0 +1,2 @@
+boot.validation.initialized=true
+eclipse.preferences.version=1
diff --git a/core/pom.xml b/core/pom.xml
index d3adb50..d87f464 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -63,6 +63,12 @@
0.11.5
runtime
+
+
+ net.miarma
+ backlib
+ 1.0.0
+
\ No newline at end of file
diff --git a/core/src/main/java/net/miarma/backend/core/controller/AuthController.java b/core/src/main/java/net/miarma/backend/core/controller/AuthController.java
index 63bd525..8ffa78f 100644
--- a/core/src/main/java/net/miarma/backend/core/controller/AuthController.java
+++ b/core/src/main/java/net/miarma/backend/core/controller/AuthController.java
@@ -12,14 +12,14 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import jakarta.validation.Valid;
-import net.miarma.backend.core.dto.ChangePasswordRequest;
-import net.miarma.backend.core.dto.LoginRequest;
-import net.miarma.backend.core.dto.LoginResponse;
-import net.miarma.backend.core.dto.RegisterRequest;
import net.miarma.backend.core.model.Credential;
import net.miarma.backend.core.service.AuthService;
import net.miarma.backend.core.service.CredentialService;
import net.miarma.backend.core.service.JwtService;
+import net.miarma.backlib.dto.ChangePasswordRequest;
+import net.miarma.backlib.dto.LoginRequest;
+import net.miarma.backlib.dto.LoginResponse;
+import net.miarma.backlib.dto.RegisterRequest;
@RestController
@RequestMapping("/auth")
diff --git a/core/src/main/java/net/miarma/backend/core/controller/CredentialController.java b/core/src/main/java/net/miarma/backend/core/controller/CredentialController.java
index 5885bfd..f9ae7a3 100644
--- a/core/src/main/java/net/miarma/backend/core/controller/CredentialController.java
+++ b/core/src/main/java/net/miarma/backend/core/controller/CredentialController.java
@@ -13,9 +13,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import net.miarma.backend.core.dto.CredentialDto;
import net.miarma.backend.core.model.Credential;
import net.miarma.backend.core.service.CredentialService;
+import net.miarma.backlib.dto.CredentialDto;
@RestController
@RequestMapping("/credentials")
diff --git a/core/src/main/java/net/miarma/backend/core/controller/UserController.java b/core/src/main/java/net/miarma/backend/core/controller/UserController.java
index 32ee003..4204d23 100644
--- a/core/src/main/java/net/miarma/backend/core/controller/UserController.java
+++ b/core/src/main/java/net/miarma/backend/core/controller/UserController.java
@@ -14,10 +14,11 @@ import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import net.miarma.backend.core.dto.UserDto;
+import net.miarma.backend.core.mapper.UserMapper;
import net.miarma.backend.core.model.User;
import net.miarma.backend.core.service.JwtService;
import net.miarma.backend.core.service.UserService;
+import net.miarma.backlib.dto.UserDto;
@RestController
@RequestMapping("/users")
@@ -36,7 +37,7 @@ public class UserController {
return ResponseEntity.ok(
userService.getAll()
.stream()
- .map(UserDto::fromEntity)
+ .map(UserMapper::toDto)
.toList()
);
}
@@ -45,13 +46,13 @@ public class UserController {
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity getById(@PathVariable("user_id") UUID userId) {
User user = userService.getById(userId);
- return ResponseEntity.ok(UserDto.fromEntity(user));
+ return ResponseEntity.ok(UserMapper.toDto(user));
}
@PutMapping("/{user_id}")
@PreAuthorize("hasRole('ADMIN') or #userId == principal.userId")
public ResponseEntity update(@PathVariable("user_id") UUID userId, @RequestBody UserDto dto) {
- return ResponseEntity.ok(UserDto.fromEntity(userService.update(userId, dto)));
+ return ResponseEntity.ok(UserMapper.toDto(userService.update(userId, dto)));
}
@GetMapping("/{user_id}/avatar")
@@ -75,6 +76,6 @@ public class UserController {
}
User user = userService.getById(userId);
- return ResponseEntity.ok(UserDto.fromEntity(user));
+ return ResponseEntity.ok(UserMapper.toDto(user));
}
}
diff --git a/core/src/main/java/net/miarma/backend/core/dto/UserDto.java b/core/src/main/java/net/miarma/backend/core/dto/UserDto.java
deleted file mode 100644
index 985ce38..0000000
--- a/core/src/main/java/net/miarma/backend/core/dto/UserDto.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package net.miarma.backend.core.dto;
-
-import java.time.Instant;
-import java.util.UUID;
-
-import net.miarma.backend.core.model.User;
-
-public class UserDto {
- private UUID userId;
- private String displayName;
- private String avatar;
- private Byte globalStatus;
- private Byte globalRole;
- private Instant createdAt;
- private Instant updatedAt;
-
- public UserDto() {}
-
- public UserDto(UUID userId, String displayName, String avatar, Byte globalStatus, Byte globalRole,
- Instant createdAt, Instant updatedAt) {
- this.userId = userId;
- this.displayName = displayName;
- this.avatar = avatar;
- this.globalStatus = globalStatus;
- this.globalRole = globalRole;
- this.createdAt = createdAt;
- this.updatedAt = updatedAt;
- }
-
- public static UserDto fromEntity(User user) {
- if (user == null) return null;
-
- return new UserDto(
- user.getUserId(),
- user.getDisplayName(),
- user.getAvatar(),
- user.getGlobalStatus(),
- user.getGlobalRole(),
- user.getCreatedAt(),
- user.getUpdatedAt()
- );
- }
-
- public UUID getUserId() {
- return userId;
- }
-
- public void setUserId(UUID userId) {
- this.userId = userId;
- }
-
- 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 Byte getGlobalStatus() {
- return globalStatus;
- }
-
- public void setGlobalStatus(Byte globalStatus) {
- this.globalStatus = globalStatus;
- }
-
- public Byte getGlobalRole() {
- return globalRole;
- }
-
- public void setGlobalRole(Byte globalRole) {
- this.globalRole = globalRole;
- }
-
- public Instant getCreatedAt() {
- return createdAt;
- }
-
- public void setCreatedAt(Instant createdAt) {
- this.createdAt = createdAt;
- }
-
- public Instant getUpdatedAt() {
- return updatedAt;
- }
-
- public void setUpdatedAt(Instant updatedAt) {
- this.updatedAt = updatedAt;
- }
-}
diff --git a/core/src/main/java/net/miarma/backend/core/mapper/CredentialMapper.java b/core/src/main/java/net/miarma/backend/core/mapper/CredentialMapper.java
new file mode 100644
index 0000000..7b29db4
--- /dev/null
+++ b/core/src/main/java/net/miarma/backend/core/mapper/CredentialMapper.java
@@ -0,0 +1,22 @@
+package net.miarma.backend.core.mapper;
+
+import net.miarma.backend.core.model.Credential;
+import net.miarma.backlib.dto.CredentialDto;
+
+public class CredentialMapper {
+
+ public static CredentialDto toDto(Credential c) {
+ if (c == null) return null;
+
+ return new CredentialDto(
+ c.getCredentialId(),
+ c.getUserId(),
+ c.getServiceId(),
+ c.getUsername(),
+ c.getEmail(),
+ c.getStatus(),
+ c.getCreatedAt(),
+ c.getUpdatedAt()
+ );
+ }
+}
diff --git a/core/src/main/java/net/miarma/backend/core/mapper/UserMapper.java b/core/src/main/java/net/miarma/backend/core/mapper/UserMapper.java
new file mode 100644
index 0000000..30cf440
--- /dev/null
+++ b/core/src/main/java/net/miarma/backend/core/mapper/UserMapper.java
@@ -0,0 +1,20 @@
+package net.miarma.backend.core.mapper;
+
+import net.miarma.backend.core.model.User;
+import net.miarma.backlib.dto.UserDto;
+
+public class UserMapper {
+ public static UserDto toDto(User u) {
+ if (u == null) return null;
+
+ return new UserDto(
+ u.getUserId(),
+ u.getDisplayName(),
+ u.getAvatar(),
+ u.getGlobalStatus(),
+ u.getGlobalRole(),
+ u.getCreatedAt(),
+ u.getUpdatedAt()
+ );
+ }
+}
diff --git a/core/src/main/java/net/miarma/backend/core/model/Credential.java b/core/src/main/java/net/miarma/backend/core/model/Credential.java
index 2a83539..bb779bf 100644
--- a/core/src/main/java/net/miarma/backend/core/model/Credential.java
+++ b/core/src/main/java/net/miarma/backend/core/model/Credential.java
@@ -3,8 +3,10 @@ package net.miarma.backend.core.model;
import java.nio.ByteBuffer;
import java.time.Instant;
import java.util.UUID;
+
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
+
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
@@ -17,6 +19,7 @@ import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import jakarta.persistence.UniqueConstraint;
+import net.miarma.backlib.util.UuidUtil;
@Entity
@Table(name = "credentials",
@@ -59,37 +62,25 @@ public class Credential {
private User user;
@PrePersist
- @PreUpdate
- private void prePersist() {
- if (credentialId != null) {
- ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
- bb.putLong(credentialId.getMostSignificantBits());
- bb.putLong(credentialId.getLeastSignificantBits());
- credentialIdBin = bb.array();
- }
- if (userId != null) {
- ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
- bb.putLong(userId.getMostSignificantBits());
- bb.putLong(userId.getLeastSignificantBits());
- userIdBin = bb.array();
- }
- }
+ @PreUpdate
+ private void prePersist() {
+ if (credentialId != null) {
+ credentialIdBin = UuidUtil.uuidToBin(credentialId);
+ }
+ if (userId != null) {
+ userIdBin = UuidUtil.uuidToBin(userId);
+ }
+ }
- @PostLoad
- private void postLoad() {
- if (credentialIdBin != null) {
- ByteBuffer bb = ByteBuffer.wrap(credentialIdBin);
- long high = bb.getLong();
- long low = bb.getLong();
- credentialId = new UUID(high, low);
- }
- if (userIdBin != null) {
- ByteBuffer bb = ByteBuffer.wrap(userIdBin);
- long high = bb.getLong();
- long low = bb.getLong();
- userId = new UUID(high, low);
- }
- }
+ @PostLoad
+ private void postLoad() {
+ if (credentialIdBin != null) {
+ credentialId = UuidUtil.binToUUID(credentialIdBin);
+ }
+ if (userIdBin != null) {
+ userId = UuidUtil.binToUUID(userIdBin);
+ }
+ }
public UUID getCredentialId() {
if (credentialId == null && credentialIdBin != null) {
diff --git a/core/src/main/java/net/miarma/backend/core/model/File.java b/core/src/main/java/net/miarma/backend/core/model/File.java
index 8d36a25..349845a 100644
--- a/core/src/main/java/net/miarma/backend/core/model/File.java
+++ b/core/src/main/java/net/miarma/backend/core/model/File.java
@@ -6,9 +6,12 @@ import java.util.UUID;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
+import jakarta.persistence.PostLoad;
import jakarta.persistence.PrePersist;
+import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
+import net.miarma.backlib.util.UuidUtil;
@Entity
@Table(name = "files")
@@ -43,12 +46,25 @@ public class File {
private Short context;
@PrePersist
- public void prePersist() {
- if (fileId == null) {
- fileId = UUID.randomUUID();
+ @PreUpdate
+ private void prePersist() {
+ if (fileId != null) {
+ fileIdBin = UuidUtil.uuidToBin(fileId);
}
- if (uploadedAt == null) {
- uploadedAt = Instant.now();
+
+ if (uploadedBy != null) {
+ uploadedByBin = UuidUtil.uuidToBin(uploadedBy);
+ }
+ }
+
+ @PostLoad
+ private void postLoad() {
+ if (fileIdBin != null) {
+ fileId = UuidUtil.binToUUID(fileIdBin);
+ }
+
+ if (uploadedByBin != null) {
+ uploadedBy = UuidUtil.binToUUID(uploadedByBin);
}
}
diff --git a/core/src/main/java/net/miarma/backend/core/model/User.java b/core/src/main/java/net/miarma/backend/core/model/User.java
index 5022bc3..d5edc3b 100644
--- a/core/src/main/java/net/miarma/backend/core/model/User.java
+++ b/core/src/main/java/net/miarma/backend/core/model/User.java
@@ -1,6 +1,5 @@
package net.miarma.backend.core.model;
-import java.nio.ByteBuffer;
import java.time.Instant;
import java.util.UUID;
@@ -15,6 +14,7 @@ import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
+import net.miarma.backlib.util.UuidUtil;
@Entity
@Table(name = "users")
@@ -48,20 +48,14 @@ public class User {
@PreUpdate
private void prePersist() {
if (userId != null) {
- ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
- bb.putLong(userId.getMostSignificantBits());
- bb.putLong(userId.getLeastSignificantBits());
- userIdBin = bb.array();
+ userIdBin = UuidUtil.uuidToBin(userId);
}
}
@PostLoad
private void postLoad() {
if (userIdBin != null) {
- ByteBuffer bb = ByteBuffer.wrap(userIdBin);
- long high = bb.getLong();
- long low = bb.getLong();
- userId = new UUID(high, low);
+ userId = UuidUtil.binToUUID(userIdBin);
}
}
diff --git a/core/src/main/java/net/miarma/backend/core/service/AuthService.java b/core/src/main/java/net/miarma/backend/core/service/AuthService.java
index af0dd42..c565b37 100644
--- a/core/src/main/java/net/miarma/backend/core/service/AuthService.java
+++ b/core/src/main/java/net/miarma/backend/core/service/AuthService.java
@@ -5,13 +5,15 @@ import java.util.UUID;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
-import net.miarma.backend.core.dto.CredentialDto;
-import net.miarma.backend.core.dto.LoginRequest;
-import net.miarma.backend.core.dto.LoginResponse;
-import net.miarma.backend.core.dto.RegisterRequest;
-import net.miarma.backend.core.dto.UserDto;
+import net.miarma.backend.core.mapper.CredentialMapper;
+import net.miarma.backend.core.mapper.UserMapper;
import net.miarma.backend.core.model.Credential;
import net.miarma.backend.core.model.User;
+import net.miarma.backlib.dto.CredentialDto;
+import net.miarma.backlib.dto.LoginRequest;
+import net.miarma.backlib.dto.LoginResponse;
+import net.miarma.backlib.dto.RegisterRequest;
+import net.miarma.backlib.dto.UserDto;
@Service
public class AuthService {
@@ -38,9 +40,9 @@ public class AuthService {
String token = jwtService.generateToken(cred.getUserId(), request.getServiceId());
- UserDto userDto = UserDto.fromEntity(cred.getUser());
+ UserDto userDto = UserMapper.toDto(cred.getUser());
- CredentialDto credentialDto = CredentialDto.fromEntity(cred);
+ CredentialDto credentialDto = CredentialMapper.toDto(cred);
return new LoginResponse(token, userDto, credentialDto);
}
@@ -71,6 +73,6 @@ public class AuthService {
String token = jwtService.generateToken(user.getUserId(), request.getServiceId());
- return new LoginResponse(token, UserDto.fromEntity(user), CredentialDto.fromEntity(cred));
+ return new LoginResponse(token, UserMapper.toDto(user), CredentialMapper.toDto(cred));
}
}
diff --git a/core/src/main/java/net/miarma/backend/core/service/CredentialService.java b/core/src/main/java/net/miarma/backend/core/service/CredentialService.java
index 44e6441..ceba83a 100644
--- a/core/src/main/java/net/miarma/backend/core/service/CredentialService.java
+++ b/core/src/main/java/net/miarma/backend/core/service/CredentialService.java
@@ -7,12 +7,12 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import net.miarma.backend.core.dto.ChangePasswordRequest;
-import net.miarma.backend.core.dto.CredentialDto;
import net.miarma.backend.core.model.Credential;
import net.miarma.backend.core.model.User;
import net.miarma.backend.core.repository.CredentialRepository;
-import net.miarma.backend.core.util.UuidUtils;
+import net.miarma.backlib.dto.ChangePasswordRequest;
+import net.miarma.backlib.dto.CredentialDto;
+import net.miarma.backlib.util.UuidUtil;
@Service
@Transactional
@@ -27,7 +27,7 @@ public class CredentialService {
}
public Credential getById(UUID credentialId) {
- byte[] idBytes = UuidUtils.uuidToBin(credentialId);
+ byte[] idBytes = UuidUtil.uuidToBin(credentialId);
return credentialRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("Credential not found"));
}
@@ -63,7 +63,7 @@ public class CredentialService {
}
public List getByUserId(UUID userId) {
- List creds = credentialRepository.findByUserId(UuidUtils.uuidToBin(userId));
+ List creds = credentialRepository.findByUserId(UuidUtil.uuidToBin(userId));
if (creds.isEmpty()) {
throw new RuntimeException("User has no credentials");
}
@@ -91,14 +91,14 @@ public class CredentialService {
}
public boolean isOwner(UUID credentialId, UUID userId) {
- byte[] idBytes = UuidUtils.uuidToBin(credentialId);
+ byte[] idBytes = UuidUtil.uuidToBin(credentialId);
Credential c = credentialRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("Credential not found"));
return c.getUserId().equals(userId);
}
public Credential update(UUID credentialId, CredentialDto dto) {
- byte[] idBytes = UuidUtils.uuidToBin(credentialId);
+ byte[] idBytes = UuidUtil.uuidToBin(credentialId);
Credential cred = credentialRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("Credential not found"));
@@ -122,7 +122,7 @@ public class CredentialService {
}
public Credential updatePassword(UUID credentialId, ChangePasswordRequest request) {
- byte[] idBytes = UuidUtils.uuidToBin(credentialId);
+ byte[] idBytes = UuidUtil.uuidToBin(credentialId);
Credential cred = credentialRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("Credential not found"));
@@ -136,7 +136,7 @@ public class CredentialService {
}
public void delete(UUID credentialId) {
- byte[] idBytes = UuidUtils.uuidToBin(credentialId);
+ byte[] idBytes = UuidUtil.uuidToBin(credentialId);
if(!credentialRepository.existsById(idBytes))
throw new RuntimeException("Credential not found");
credentialRepository.deleteById(idBytes);
diff --git a/core/src/main/java/net/miarma/backend/core/service/FileService.java b/core/src/main/java/net/miarma/backend/core/service/FileService.java
index 278efb3..dea77d9 100644
--- a/core/src/main/java/net/miarma/backend/core/service/FileService.java
+++ b/core/src/main/java/net/miarma/backend/core/service/FileService.java
@@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
import net.miarma.backend.core.model.File;
import net.miarma.backend.core.repository.FileRepository;
-import net.miarma.backend.core.util.UuidUtils;
+import net.miarma.backlib.util.UuidUtil;
@Service
@Transactional
@@ -28,7 +28,7 @@ public class FileService {
}
public File getById(UUID fileId) {
- byte[] idBytes = UuidUtils.uuidToBin(fileId);
+ byte[] idBytes = UuidUtil.uuidToBin(fileId);
return fileRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("File not found"));
}
@@ -66,7 +66,7 @@ public class FileService {
}
public File update(File file) {
- byte[] idBytes = UuidUtils.uuidToBin(file.getFileId());
+ byte[] idBytes = UuidUtil.uuidToBin(file.getFileId());
if (!fileRepository.existsById(idBytes)) {
throw new RuntimeException("File not found");
}
@@ -74,7 +74,7 @@ public class FileService {
}
public void delete(UUID fileId) {
- byte[] idBytes = UuidUtils.uuidToBin(fileId);
+ byte[] idBytes = UuidUtil.uuidToBin(fileId);
if (!fileRepository.existsById(idBytes)) {
throw new RuntimeException("File not found");
}
@@ -82,7 +82,7 @@ public class FileService {
}
public boolean isOwner(UUID fileId, UUID userId) {
- byte[] fileBytes = UuidUtils.uuidToBin(fileId);
+ byte[] fileBytes = UuidUtil.uuidToBin(fileId);
return fileRepository.findById(fileBytes)
.map(f -> f.getUploadedBy().equals(userId))
.orElse(false);
diff --git a/core/src/main/java/net/miarma/backend/core/service/UserService.java b/core/src/main/java/net/miarma/backend/core/service/UserService.java
index 805d139..4b3dd7a 100644
--- a/core/src/main/java/net/miarma/backend/core/service/UserService.java
+++ b/core/src/main/java/net/miarma/backend/core/service/UserService.java
@@ -6,10 +6,10 @@ import java.util.UUID;
import org.springframework.stereotype.Service;
import jakarta.transaction.Transactional;
-import net.miarma.backend.core.dto.UserDto;
import net.miarma.backend.core.model.User;
import net.miarma.backend.core.repository.UserRepository;
-import net.miarma.backend.core.util.UuidUtils;
+import net.miarma.backlib.dto.UserDto;
+import net.miarma.backlib.util.UuidUtil;
@Service
@Transactional
@@ -25,7 +25,7 @@ public class UserService {
}
public User getById(UUID userId) {
- byte[] idBytes = UuidUtils.uuidToBin(userId);
+ byte[] idBytes = UuidUtil.uuidToBin(userId);
return userRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("User not found"));
}
@@ -46,7 +46,7 @@ public class UserService {
}
public User update(UUID userId, UserDto dto) {
- byte[] idBytes = UuidUtils.uuidToBin(userId);
+ byte[] idBytes = UuidUtil.uuidToBin(userId);
User user = userRepository.findById(idBytes)
.orElseThrow(() -> new RuntimeException("User not found"));
@@ -70,7 +70,7 @@ public class UserService {
}
public void delete(UUID userId) {
- byte[] idBytes = UuidUtils.uuidToBin(userId);
+ byte[] idBytes = UuidUtil.uuidToBin(userId);
if(!userRepository.existsById(idBytes))
throw new RuntimeException("User not found");
userRepository.deleteById(idBytes);
diff --git a/huertos/.project b/huertos/.project
index 85aa542..91b7957 100644
--- a/huertos/.project
+++ b/huertos/.project
@@ -15,6 +15,11 @@
+
+ org.springframework.ide.eclipse.boot.validation.springbootbuilder
+
+
+
org.eclipse.jdt.core.javanature
diff --git a/huertos/.settings/org.springframework.ide.eclipse.prefs b/huertos/.settings/org.springframework.ide.eclipse.prefs
new file mode 100644
index 0000000..a12794d
--- /dev/null
+++ b/huertos/.settings/org.springframework.ide.eclipse.prefs
@@ -0,0 +1,2 @@
+boot.validation.initialized=true
+eclipse.preferences.version=1
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/HuertosApplication.java b/huertos/src/main/java/net/miarma/backend/huertos/HuertosApplication.java
new file mode 100644
index 0000000..119d2c6
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/HuertosApplication.java
@@ -0,0 +1,11 @@
+package net.miarma.backend.huertos;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HuertosApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(HuertosApplication.class, args);
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/Announcement.java b/huertos/src/main/java/net/miarma/backend/huertos/model/Announcement.java
new file mode 100644
index 0000000..46dd81f
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/Announcement.java
@@ -0,0 +1,70 @@
+package net.miarma.backend.huertos.model;
+
+import java.time.Instant;
+import java.util.UUID;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_announces")
+public class Announcement {
+
+ @Id
+ @Column(name = "announce_id", columnDefinition = "BINARY(16)")
+ private UUID announceId;
+
+ @Column(name = "body", nullable = false, columnDefinition = "TEXT")
+ private String body;
+
+ @Column(name = "priority", nullable = false)
+ private Byte priority;
+
+ @Column(name = "published_by", columnDefinition = "BINARY(16)", nullable = false)
+ private UUID publishedBy;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ public UUID getAnnounceId() {
+ return announceId;
+ }
+
+ public void setAnnounceId(UUID announceId) {
+ this.announceId = announceId;
+ }
+
+ public String getBody() {
+ return body;
+ }
+
+ public void setBody(String body) {
+ this.body = body;
+ }
+
+ public Byte getPriority() {
+ return priority;
+ }
+
+ public void setPriority(Byte priority) {
+ this.priority = priority;
+ }
+
+ public UUID getPublishedBy() {
+ return publishedBy;
+ }
+
+ public void setPublishedBy(UUID publishedBy) {
+ this.publishedBy = publishedBy;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/Balance.java b/huertos/src/main/java/net/miarma/backend/huertos/model/Balance.java
new file mode 100644
index 0000000..1beba9d
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/Balance.java
@@ -0,0 +1,58 @@
+package net.miarma.backend.huertos.model;
+
+import java.math.BigDecimal;
+import java.time.Instant;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_balance")
+public class Balance {
+
+ @Id
+ private Byte id = 1;
+
+ @Column(name = "initial_bank", nullable = false)
+ private BigDecimal initialBank;
+
+ @Column(name = "initial_cash", nullable = false)
+ private BigDecimal initialCash;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ public Byte getId() {
+ return id;
+ }
+
+ public void setId(Byte id) {
+ this.id = id;
+ }
+
+ public BigDecimal getInitialBank() {
+ return initialBank;
+ }
+
+ public void setInitialBank(BigDecimal initialBank) {
+ this.initialBank = initialBank;
+ }
+
+ public BigDecimal getInitialCash() {
+ return initialCash;
+ }
+
+ public void setInitialCash(BigDecimal initialCash) {
+ this.initialCash = initialCash;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/Expense.java b/huertos/src/main/java/net/miarma/backend/huertos/model/Expense.java
new file mode 100644
index 0000000..e48dc1e
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/Expense.java
@@ -0,0 +1,93 @@
+package net.miarma.backend.huertos.model;
+
+import java.math.BigDecimal;
+import java.time.Instant;
+import java.util.UUID;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_expenses")
+public class Expense {
+
+ @Id
+ @Column(name = "expense_id", columnDefinition = "BINARY(16)")
+ private UUID expenseId;
+
+ @Column(name = "concept", nullable = false, length = 128)
+ private String concept;
+
+ @Column(name = "amount", nullable = false)
+ private BigDecimal amount;
+
+ @Column(name = "supplier", nullable = false, length = 128)
+ private String supplier;
+
+ @Column(name = "invoice", nullable = false, length = 32)
+ private String invoice;
+
+ @Column(name = "type")
+ private Byte type;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ public UUID getExpenseId() {
+ return expenseId;
+ }
+
+ public void setExpenseId(UUID expenseId) {
+ this.expenseId = expenseId;
+ }
+
+ public String getConcept() {
+ return concept;
+ }
+
+ public void setConcept(String concept) {
+ this.concept = concept;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public String getSupplier() {
+ return supplier;
+ }
+
+ public void setSupplier(String supplier) {
+ this.supplier = supplier;
+ }
+
+ public String getInvoice() {
+ return invoice;
+ }
+
+ public void setInvoice(String invoice) {
+ this.invoice = invoice;
+ }
+
+ public Byte getType() {
+ return type;
+ }
+
+ public void setType(Byte type) {
+ this.type = type;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/HuertosUserMetadata.java b/huertos/src/main/java/net/miarma/backend/huertos/model/HuertosUserMetadata.java
new file mode 100644
index 0000000..9181dc0
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/HuertosUserMetadata.java
@@ -0,0 +1,136 @@
+package net.miarma.backend.huertos.model;
+
+import java.time.Instant;
+import java.util.UUID;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_user_metadata")
+public class HuertosUserMetadata {
+
+ @Id
+ @Column(name = "user_id", columnDefinition = "BINARY(16)")
+ private UUID userId;
+
+ @Column(name = "member_number", nullable = false, unique = true)
+ private Integer memberNumber;
+
+ @Column(name = "plot_number", nullable = false)
+ private Integer plotNumber;
+
+ @Column(name = "dni", nullable = false, unique = true, length = 9)
+ private String dni;
+
+ @Column(name = "phone", nullable = false, length = 20)
+ private String phone;
+
+ @Column(name = "type", nullable = false)
+ private Byte type;
+
+ @Column(name = "role", nullable = false)
+ private Byte role;
+
+ @Column(name = "notes")
+ private String notes;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "assigned_at")
+ private Instant assignedAt;
+
+ @Column(name = "deactivated_at")
+ private Instant deactivatedAt;
+
+ public UUID getUserId() {
+ return userId;
+ }
+
+ public void setUserId(UUID userId) {
+ this.userId = userId;
+ }
+
+ public Integer getMemberNumber() {
+ return memberNumber;
+ }
+
+ public void setMemberNumber(Integer memberNumber) {
+ this.memberNumber = memberNumber;
+ }
+
+ public Integer getPlotNumber() {
+ return plotNumber;
+ }
+
+ public void setPlotNumber(Integer plotNumber) {
+ this.plotNumber = plotNumber;
+ }
+
+ public String getDni() {
+ return dni;
+ }
+
+ public void setDni(String dni) {
+ this.dni = dni;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public Byte getType() {
+ return type;
+ }
+
+ public void setType(Byte type) {
+ this.type = type;
+ }
+
+ public Byte getRole() {
+ return role;
+ }
+
+ public void setRole(Byte role) {
+ this.role = role;
+ }
+
+ public String getNotes() {
+ return notes;
+ }
+
+ public void setNotes(String notes) {
+ this.notes = notes;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getAssignedAt() {
+ return assignedAt;
+ }
+
+ public void setAssignedAt(Instant assignedAt) {
+ this.assignedAt = assignedAt;
+ }
+
+ public Instant getDeactivatedAt() {
+ return deactivatedAt;
+ }
+
+ public void setDeactivatedAt(Instant deactivatedAt) {
+ this.deactivatedAt = deactivatedAt;
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java b/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java
new file mode 100644
index 0000000..eeffd0a
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/Income.java
@@ -0,0 +1,93 @@
+package net.miarma.backend.huertos.model;
+
+import java.math.BigDecimal;
+import java.time.Instant;
+import java.util.UUID;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_incomes")
+public class Income {
+
+ @Id
+ @Column(name = "income_id", columnDefinition = "BINARY(16)")
+ private UUID incomeId;
+
+ @Column(name = "user_id", columnDefinition = "BINARY(16)", nullable = false)
+ private UUID userId;
+
+ @Column(name = "concept", nullable = false, length = 128)
+ private String concept;
+
+ @Column(name = "amount", nullable = false)
+ private BigDecimal amount;
+
+ @Column(name = "type")
+ private Byte type;
+
+ @Column(name = "frequency")
+ private Byte frequency;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ public UUID getIncomeId() {
+ return incomeId;
+ }
+
+ public void setIncomeId(UUID incomeId) {
+ this.incomeId = incomeId;
+ }
+
+ public UUID getUserId() {
+ return userId;
+ }
+
+ public void setUserId(UUID userId) {
+ this.userId = userId;
+ }
+
+ public String getConcept() {
+ return concept;
+ }
+
+ public void setConcept(String concept) {
+ this.concept = concept;
+ }
+
+ public BigDecimal getAmount() {
+ return amount;
+ }
+
+ public void setAmount(BigDecimal amount) {
+ this.amount = amount;
+ }
+
+ public Byte getType() {
+ return type;
+ }
+
+ public void setType(Byte type) {
+ this.type = type;
+ }
+
+ public Byte getFrequency() {
+ return frequency;
+ }
+
+ public void setFrequency(Byte frequency) {
+ this.frequency = frequency;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/PreUser.java b/huertos/src/main/java/net/miarma/backend/huertos/model/PreUser.java
new file mode 100644
index 0000000..4c2b681
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/PreUser.java
@@ -0,0 +1,191 @@
+package net.miarma.backend.huertos.model;
+
+import java.time.Instant;
+import java.util.UUID;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_pre_users")
+public class PreUser {
+
+ @Id
+ @Column(name = "pre_user_id", columnDefinition = "BINARY(16)")
+ private UUID preUserId;
+
+ @Column(name = "request_id", columnDefinition = "BINARY(16)", nullable = false)
+ private UUID requestId;
+
+ @Column(name = "user_name", nullable = false, length = 64)
+ private String userName;
+
+ @Column(name = "display_name", nullable = false, length = 128)
+ private String displayName;
+
+ @Column(name = "dni", nullable = false, length = 9)
+ private String dni;
+
+ @Column(name = "phone", nullable = false, length = 20)
+ private String phone;
+
+ @Column(name = "email", nullable = false, length = 128)
+ private String email;
+
+ @Column(name = "password", length = 256)
+ private String password;
+
+ @Column(name = "address", length = 128)
+ private String address;
+
+ @Column(name = "zip_code", length = 10)
+ private String zipCode;
+
+ @Column(name = "city", length = 64)
+ private String city;
+
+ @Column(name = "member_number")
+ private Integer memberNumber;
+
+ @Column(name = "plot_number")
+ private Integer plotNumber;
+
+ @Column(name = "type", nullable = false)
+ private Byte type;
+
+ @Column(name = "role", nullable = false)
+ private Byte role;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ public UUID getPreUserId() {
+ return preUserId;
+ }
+
+ public void setPreUserId(UUID preUserId) {
+ this.preUserId = preUserId;
+ }
+
+ public UUID getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(UUID requestId) {
+ this.requestId = requestId;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public String getDni() {
+ return dni;
+ }
+
+ public void setDni(String dni) {
+ this.dni = dni;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ 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 String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public String getZipCode() {
+ return zipCode;
+ }
+
+ public void setZipCode(String zipCode) {
+ this.zipCode = zipCode;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public Integer getMemberNumber() {
+ return memberNumber;
+ }
+
+ public void setMemberNumber(Integer memberNumber) {
+ this.memberNumber = memberNumber;
+ }
+
+ public Integer getPlotNumber() {
+ return plotNumber;
+ }
+
+ public void setPlotNumber(Integer plotNumber) {
+ this.plotNumber = plotNumber;
+ }
+
+ public Byte getType() {
+ return type;
+ }
+
+ public void setType(Byte type) {
+ this.type = type;
+ }
+
+ public Byte getRole() {
+ return role;
+ }
+
+ public void setRole(Byte role) {
+ this.role = role;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+}
diff --git a/huertos/src/main/java/net/miarma/backend/huertos/model/Request.java b/huertos/src/main/java/net/miarma/backend/huertos/model/Request.java
new file mode 100644
index 0000000..6851fe0
--- /dev/null
+++ b/huertos/src/main/java/net/miarma/backend/huertos/model/Request.java
@@ -0,0 +1,82 @@
+package net.miarma.backend.huertos.model;
+
+import java.time.Instant;
+import java.util.UUID;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "huertos_requests")
+public class Request {
+
+ @Id
+ @Column(name = "request_id", columnDefinition = "BINARY(16)")
+ private UUID requestId;
+
+ @Column(name = "type", nullable = false)
+ private Byte type;
+
+ @Column(name = "status", nullable = false)
+ private Byte status;
+
+ @Column(name = "requested_by", columnDefinition = "BINARY(16)")
+ private UUID requestedBy;
+
+ @Column(name = "target_user_id", columnDefinition = "BINARY(16)")
+ private UUID targetUserId;
+
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ public UUID getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(UUID requestId) {
+ this.requestId = requestId;
+ }
+
+ public Byte getType() {
+ return type;
+ }
+
+ public void setType(Byte type) {
+ this.type = type;
+ }
+
+ public Byte getStatus() {
+ return status;
+ }
+
+ public void setStatus(Byte status) {
+ this.status = status;
+ }
+
+ public UUID getRequestedBy() {
+ return requestedBy;
+ }
+
+ public void setRequestedBy(UUID requestedBy) {
+ this.requestedBy = requestedBy;
+ }
+
+ public UUID getTargetUserId() {
+ return targetUserId;
+ }
+
+ public void setTargetUserId(UUID targetUserId) {
+ this.targetUserId = targetUserId;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+}
diff --git a/huertos/src/main/resources/application.yml b/huertos/src/main/resources/application.yml
new file mode 100644
index 0000000..294f6a8
--- /dev/null
+++ b/huertos/src/main/resources/application.yml
@@ -0,0 +1,47 @@
+server:
+ port: 8081
+ servlet:
+ context-path: /v2/huertos
+
+spring:
+ application:
+ name: huertos-service
+
+ datasource:
+ url: jdbc:mariadb://localhost:3306/miarma_v2
+ username: admin
+ password: ositovito
+ driver-class-name: org.mariadb.jdbc.Driver
+
+ jpa:
+ open-in-view: false
+ hibernate:
+ ddl-auto: update
+ show-sql: true
+ properties:
+ hibernate:
+ format_sql: true
+ jdbc:
+ time_zone: UTC
+ dialect: org.hibernate.dialect.MariaDBDialect
+
+ jackson:
+ serialization:
+ INDENT_OUTPUT: true
+ date-format: yyyy-MM-dd'T'HH:mm:ss
+ time-zone: Europe/Madrid
+ default-property-inclusion: non_null
+ generator:
+ WRITE_DATES_AS_TIMESTAMPS: false
+
+logging:
+ level:
+ org.hibernate.SQL: DEBUG
+ org.hibernate.orm.jdbc.bind: TRACE
+ org.springframework.security: INFO
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
diff --git a/minecraft/.project b/minecraft/.project
index b356ec0..b644dc0 100644
--- a/minecraft/.project
+++ b/minecraft/.project
@@ -15,6 +15,11 @@
+
+ org.springframework.ide.eclipse.boot.validation.springbootbuilder
+
+
+
org.eclipse.jdt.core.javanature
diff --git a/minecraft/.settings/org.springframework.ide.eclipse.prefs b/minecraft/.settings/org.springframework.ide.eclipse.prefs
new file mode 100644
index 0000000..a12794d
--- /dev/null
+++ b/minecraft/.settings/org.springframework.ide.eclipse.prefs
@@ -0,0 +1,2 @@
+boot.validation.initialized=true
+eclipse.preferences.version=1
diff --git a/mpaste/.project b/mpaste/.project
index 499668e..b4ba4d2 100644
--- a/mpaste/.project
+++ b/mpaste/.project
@@ -15,6 +15,11 @@
+
+ org.springframework.ide.eclipse.boot.validation.springbootbuilder
+
+
+
org.eclipse.jdt.core.javanature
diff --git a/mpaste/.settings/org.springframework.ide.eclipse.prefs b/mpaste/.settings/org.springframework.ide.eclipse.prefs
new file mode 100644
index 0000000..a12794d
--- /dev/null
+++ b/mpaste/.settings/org.springframework.ide.eclipse.prefs
@@ -0,0 +1,2 @@
+boot.validation.initialized=true
+eclipse.preferences.version=1
diff --git a/pom.xml b/pom.xml
index 4e76ab2..6f081fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,6 +16,7 @@
cine
mpaste
websocket
+ backlib