{"id":16100686,"url":"https://github.com/omerjuve2023/java-test","last_synced_at":"2026-04-05T20:31:11.307Z","repository":{"id":221082841,"uuid":"753399190","full_name":"OmerJuve2023/java-test","owner":"OmerJuve2023","description":"Registro de Productos y servicio de soporte para sus funcionalidades. ","archived":false,"fork":false,"pushed_at":"2024-04-01T02:42:39.000Z","size":151,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-02T00:25:22.063Z","etag":null,"topics":["aws","java","jpa-hibernate","junit","learn","maven","mockito","postgresql","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OmerJuve2023.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-06T03:20:08.000Z","updated_at":"2024-04-15T02:32:16.981Z","dependencies_parsed_at":"2024-04-15T02:32:10.873Z","dependency_job_id":"daba17cd-0ad7-4752-ad45-25ab39d4a8c9","html_url":"https://github.com/OmerJuve2023/java-test","commit_stats":null,"previous_names":["omerjuve2023/java-test"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmerJuve2023%2Fjava-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmerJuve2023%2Fjava-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmerJuve2023%2Fjava-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OmerJuve2023%2Fjava-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OmerJuve2023","download_url":"https://codeload.github.com/OmerJuve2023/java-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415928,"owners_count":20935385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","java","jpa-hibernate","junit","learn","maven","mockito","postgresql","spring"],"created_at":"2024-10-09T18:47:43.674Z","updated_at":"2025-12-30T23:06:40.242Z","avatar_url":"https://github.com/OmerJuve2023.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proyecto Spring para Registro de Productos\n\nEste proyecto es una implementación en Spring Boot que proporciona servicios RESTful para la gestión de productos,\ncumpliendo con los requisitos establecidos en la Evaluación Práctica Java. El sistema incluye operaciones de inserción,\nactualización y recuperación de productos, así como la posibilidad de realizar un **\"health check\"** y registrar el\ntiempo\nde respuesta en un archivo de texto.\n\n## Requisitos del Sistema\n\n- Java 17\n- PostgreSQL\n- Spring Boot (última versión)\n- Maven\n- Docker\n\n## Configuración de la Base de Datos\n\nSe asume que ya tienes una base de datos en Docker. Puedes configurar las propiedades de conexión en el\narchivo `application.properties` o `application.yml`. Asegúrate de que las migraciones se realicen correctamente.\n\n```yaml\nspring:\n  datasource:\n    driver-class-name: org.postgresql.Driver\n    username: ${USERNAME_PROD}\n    password: ${PASSWORD_PROD}\n    url: jdbc:postgresql://${HOST_PROD}:${PORT_PROD}/${DATABASE_PROD} \n```\nlos valores reales estan en el archivo [.env](src/main/resources/.env)\n\n\n## Diseño de base de Datos      \n\n![img_1.png](img_1.png)\n\n## Inicialización del Proyecto\n\n1. Construye el proyecto\n\n### `mvn clean install`\n\n2. Creamos la base de datos db_product\n\n```yaml\n  version: \"3.9\"\nservices:\n  db-test:\n    container_name: db_product\n    image: postgres\n    environment:\n      POSTGRES_DB: ms_product\n      POSTGRES_USER: omerSolutions\n      POSTGRES_PASSWORD: Telomere2010\n    ports:\n      - \"2100:2100\"\n    expose:\n      - 2100\n    command: -p 2100\n```\n\n3. Creamos la imagen docker\n\n```dockerfile\nFROM openjdk:17.0.1-jdk-slim\nVOLUME /tmp\nEXPOSE 3000\nCOPY target/java-test-1.0.0.jar java-test.jar\nENTRYPOINT [\"java\",\"-jar\",\"java-test.jar\"]\n```\n\n4. Construye la imagen Docker:\n\n\n      docker build -t my-java-challenge .\n\n\n5. Ejecuta el contenedor:\n\n\n      docker run -p 8080:8080 my-java-challenge\n\n## Endpoints del Servicio\n\nInserta un nuevo producto.\n\n```http request\nPOST http://localhost:8080/api/product/master/insert \n```\n\n```json\n{\n  \"name\": \"String\",\n  \"price\": 0,\n  \"category\": \"String\",\n  \"description\": \"String\"\n}\n```\n\nActualiza un producto existente\n\n```http request\nPUT http://localhost:8080/api/product/master/update\n```\n\n```json\n{\n  \"id\": \"uuid\",\n  \"name\": \"String\",\n  \"price\": 0,\n  \"category\": \"String\",\n  \"description\": \"String\",\n  \"enable\": true\n}\n```\n\nObtiene la información de un producto por su ID.\n\n```http request\nGET http://localhost:8080/api/product/master/getById/{{uuid}} \n```\n\nActualiza el detalle del producto por su ID.\n\n```http request\nPUT http://localhost:8080/api/product/detail/update  \n```\n\n```json\n{\n  \"description\": \"String\",\n  \"id\": \"uuid\"\n}\n```\n\nObtiene la información del detalle del producto por su ID.\n\n```http request\nGET http://localhost:8080/api/product/detail/getById/{{uuid}}\n```\n\n## Configuración del Tiempo de Respuesta\n\nEl tiempo de respuesta de cada servicio se registra en un archivo de texto plano. Puedes encontrar los registros en la\ncarpeta logs del proyecto.\nHealth Check\n\nEl \"health check\" del servicio está disponible en el endpoint:\n\n    GET /actuator/health\n\n```json\n{\n  \"message\": \"Service in operation\"\n}\n```\n\n## Configuración de Propiedades por Ambiente\n\nLas propiedades específicas del ambiente se encuentran en archivos\n[application-dev.yml](/src/main/resources/application-dev.yml) o\n[application-prod.yml](/src/main/resources/application-prod.yml).\nAsegúrate de configurar las URLs del servicio externo según el ambiente.\n\n## Pruebas\n\nSe han implementado pruebas unitarias y una prueba de integración utilizando TDD. Puedes ejecutar las pruebas\ncon el siguiente comando:\n\n### `mvn test`\n\nEste proyecto sigue los principios **SOLID** y utiliza buenas prácticas de codificación para garantizar un código\nlimpio y mantenible\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomerjuve2023%2Fjava-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomerjuve2023%2Fjava-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomerjuve2023%2Fjava-test/lists"}