From eb5d6480626be6c845313d80f5353009b6b5ab92 Mon Sep 17 00:00:00 2001 From: Bisonfan95 Date: Mon, 17 Jun 2024 02:32:21 -0500 Subject: [PATCH 1/2] =?UTF-8?q?Yape=20Code=20Challenge=20-=20Jos=C3=A9=20P?= =?UTF-8?q?ortilla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 83 +----- ...nd Roadmap for the Yape Code Challenge.pdf | Bin 0 -> 298211 bytes YapeTestsPostmanCollection.json | 124 +++++++++ antifraud/.gitignore | 33 +++ .../.mvn/wrapper/maven-wrapper.properties | 18 ++ antifraud/Dockerfile | 26 ++ antifraud/mvnw | 250 ++++++++++++++++++ antifraud/mvnw.cmd | 146 ++++++++++ antifraud/pom.xml | 64 +++++ .../yape/antifraud/AntifraudApplication.java | 13 + .../yape/antifraud/config/KafkaConfig.java | 72 +++++ .../AntifraudListenerTransactions.java | 21 ++ .../antifraud/services/AntiFraudService.java | 18 ++ .../src/main/resources/application.properties | 13 + .../src/main/webapp/META-INF/MANIFEST.MF | 3 + .../antifraud/AntifraudApplicationTests.java | 13 + transaction/.gitignore | 33 +++ .../.mvn/wrapper/maven-wrapper.properties | 18 ++ transaction/Dockerfile | 23 ++ transaction/mvnw | 250 ++++++++++++++++++ transaction/mvnw.cmd | 146 ++++++++++ transaction/pom.xml | 100 +++++++ ...hallengeTransactionServiceApplication.java | 13 + .../yape/transaction/config/AppConfig.java | 14 + .../transaction/config/GraphQlConfig.java | 17 ++ .../yape/transaction/config/KafkaConfig.java | 77 ++++++ .../dtos/YapeTransactionInsertion.java | 21 ++ .../dtos/YapeTransactionSingleRetrieval.java | 33 +++ .../entities/TransactionStatus.java | 21 ++ .../transaction/entities/TransactionType.java | 21 ++ .../transaction/entities/YapeTransaction.java | 48 ++++ .../listeners/YapeTransactionListener.java | 50 ++++ .../TransactionStatusRepository.java | 7 + .../TransactionTypeRepository.java | 7 + .../YapeTransactionRepository.java | 11 + .../resolvers/YapeTransactionResolver.java | 37 +++ .../services/YapeTransactionService.java | 98 +++++++ .../src/main/resources/application.properties | 40 +++ transaction/src/main/resources/data.sql | 9 + .../main/resources/graphql/schema.graphqls | 35 +++ .../src/main/webapp/META-INF/MANIFEST.MF | 3 + ...ngeTransactionServiceApplicationTests.java | 13 + yape-challenge-environment.yml | 83 ++++++ 43 files changed, 2048 insertions(+), 77 deletions(-) create mode 100644 Report - Analysis and Roadmap for the Yape Code Challenge.pdf create mode 100644 YapeTestsPostmanCollection.json create mode 100644 antifraud/.gitignore create mode 100644 antifraud/.mvn/wrapper/maven-wrapper.properties create mode 100644 antifraud/Dockerfile create mode 100644 antifraud/mvnw create mode 100644 antifraud/mvnw.cmd create mode 100644 antifraud/pom.xml create mode 100644 antifraud/src/main/java/com/yape/antifraud/AntifraudApplication.java create mode 100644 antifraud/src/main/java/com/yape/antifraud/config/KafkaConfig.java create mode 100644 antifraud/src/main/java/com/yape/antifraud/listeners/AntifraudListenerTransactions.java create mode 100644 antifraud/src/main/java/com/yape/antifraud/services/AntiFraudService.java create mode 100644 antifraud/src/main/resources/application.properties create mode 100644 antifraud/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 antifraud/src/test/java/com/yape/antifraud/AntifraudApplicationTests.java create mode 100644 transaction/.gitignore create mode 100644 transaction/.mvn/wrapper/maven-wrapper.properties create mode 100644 transaction/Dockerfile create mode 100644 transaction/mvnw create mode 100644 transaction/mvnw.cmd create mode 100644 transaction/pom.xml create mode 100644 transaction/src/main/java/com/yape/transaction/CodeChallengeTransactionServiceApplication.java create mode 100644 transaction/src/main/java/com/yape/transaction/config/AppConfig.java create mode 100644 transaction/src/main/java/com/yape/transaction/config/GraphQlConfig.java create mode 100644 transaction/src/main/java/com/yape/transaction/config/KafkaConfig.java create mode 100644 transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionInsertion.java create mode 100644 transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionSingleRetrieval.java create mode 100644 transaction/src/main/java/com/yape/transaction/entities/TransactionStatus.java create mode 100644 transaction/src/main/java/com/yape/transaction/entities/TransactionType.java create mode 100644 transaction/src/main/java/com/yape/transaction/entities/YapeTransaction.java create mode 100644 transaction/src/main/java/com/yape/transaction/listeners/YapeTransactionListener.java create mode 100644 transaction/src/main/java/com/yape/transaction/repositories/TransactionStatusRepository.java create mode 100644 transaction/src/main/java/com/yape/transaction/repositories/TransactionTypeRepository.java create mode 100644 transaction/src/main/java/com/yape/transaction/repositories/YapeTransactionRepository.java create mode 100644 transaction/src/main/java/com/yape/transaction/resolvers/YapeTransactionResolver.java create mode 100644 transaction/src/main/java/com/yape/transaction/services/YapeTransactionService.java create mode 100644 transaction/src/main/resources/application.properties create mode 100644 transaction/src/main/resources/data.sql create mode 100644 transaction/src/main/resources/graphql/schema.graphqls create mode 100644 transaction/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 transaction/src/test/java/com/yape/transaction/CodeChallengeTransactionServiceApplicationTests.java create mode 100644 yape-challenge-environment.yml diff --git a/README.md b/README.md index 7f832ad..7b46a19 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,13 @@ # Yape Code Challenge :rocket: -Our code challenge will let you marvel us with your Jedi coding skills :smile:. +For the setup you only need to run 2 commands, that is if you already have docker installed. I assume you do :D -Don't forget that the proper way to submit your work is to fork the repo and create a PR :wink: ... have fun !! +Be sure you are possitioned on the root folder that has the docker compose file and run these commands: -- [Yape Code Challenge :rocket:](#yape-code-challenge-rocket) -- [Problem](#problem) -- [Tech Stack](#tech-stack) - - [Optional](#optional) -- [Send us your challenge](#send-us-your-challenge) +docker-compose.exe -f .\yape-challenge-environment.yml build -# Problem +docker-compose.exe -f .\yape-challenge-environment.yml up -d -Every time a financial transaction is created it must be validated by our anti-fraud microservice and then the same service sends a message back to update the transaction status. -For now, we have only three transaction statuses: +To help you testing my submission I prepared a Postman Collection you can import which can be found in the root folder too. Root folder also contains a Report I made that I invite you to read. -
    -
  1. pending
  2. -
  3. approved
  4. -
  5. rejected
  6. -
- -Every transaction with a value greater than 1000 should be rejected. - -```mermaid - flowchart LR - Transaction -- Save Transaction with pending Status --> transactionDatabase[(Database)] - Transaction --Send transaction Created event--> Anti-Fraud - Anti-Fraud -- Send transaction Status Approved event--> Transaction - Anti-Fraud -- Send transaction Status Rejected event--> Transaction - Transaction -- Update transaction Status event--> transactionDatabase[(Database)] -``` - -# Tech Stack - -
    -
  1. Java. You can use any framework you want
  2. -
  3. Any database
  4. -
  5. Kafka
  6. -
- -We do provide a `Dockerfile` to help you get started with a dev environment. - -You must have two resources: - -1. Resource to create a transaction that must containt: - -```json -{ - "accountExternalIdDebit": "Guid", - "accountExternalIdCredit": "Guid", - "tranferTypeId": 1, - "value": 120 -} -``` - -2. Resource to retrieve a transaction - -```json -{ - "transactionExternalId": "Guid", - "transactionType": { - "name": "" - }, - "transactionStatus": { - "name": "" - }, - "value": 120, - "createdAt": "Date" -} -``` - -## Optional - -You can use any approach to store transaction data but you should consider that we may deal with high volume scenarios where we have a huge amount of writes and reads for the same data at the same time. How would you tackle this requirement? - -You can use Graphql; - -# Send us your challenge - -When you finish your challenge, after forking a repository, you **must** open a pull request to our repository. There are no limitations to the implementation, you can follow the programming paradigm, modularization, and style that you feel is the most appropriate solution. - -If you have any questions, please let us know. \ No newline at end of file +I am thrilled to hear back from you and receive the feedback about my hardwork. \ No newline at end of file diff --git a/Report - Analysis and Roadmap for the Yape Code Challenge.pdf b/Report - Analysis and Roadmap for the Yape Code Challenge.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8c736fba3c8a0119285a2b4a572fcea79a93c1e7 GIT binary patch literal 298211 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%0AY(D^&DkKT=dvnYc1 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%0D8u(utv0=zZpv76&0PW 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 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl="${value-}" ;; + distributionSha256Sum) distributionSha256Sum="${value-}" ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_HOME="$HOME/.m2/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/antifraud/mvnw.cmd b/antifraud/mvnw.cmd new file mode 100644 index 0000000..406932d --- /dev/null +++ b/antifraud/mvnw.cmd @@ -0,0 +1,146 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.1 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/antifraud/pom.xml b/antifraud/pom.xml new file mode 100644 index 0000000..1583c4a --- /dev/null +++ b/antifraud/pom.xml @@ -0,0 +1,64 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.0 + + + com.yape + antifraud + 0.0.1-SNAPSHOT + antifraud + AntiFraud service for the Yape Code Challenge + + 17 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.kafka + spring-kafka + + + + org.springframework.boot + spring-boot-docker-compose + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/antifraud/src/main/java/com/yape/antifraud/AntifraudApplication.java b/antifraud/src/main/java/com/yape/antifraud/AntifraudApplication.java new file mode 100644 index 0000000..05b16c8 --- /dev/null +++ b/antifraud/src/main/java/com/yape/antifraud/AntifraudApplication.java @@ -0,0 +1,13 @@ +package com.yape.antifraud; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AntifraudApplication { + + public static void main(String[] args) { + SpringApplication.run(AntifraudApplication.class, args); + } + +} diff --git a/antifraud/src/main/java/com/yape/antifraud/config/KafkaConfig.java b/antifraud/src/main/java/com/yape/antifraud/config/KafkaConfig.java new file mode 100644 index 0000000..f9fa848 --- /dev/null +++ b/antifraud/src/main/java/com/yape/antifraud/config/KafkaConfig.java @@ -0,0 +1,72 @@ +package com.yape.antifraud.config; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.apache.kafka.common.serialization.StringSerializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.kafka.core.ProducerFactory; + +import java.util.HashMap; +import java.util.Map; + +@Configuration +@EnableKafka +public class KafkaConfig { + + @Value("${spring.kafka.bootstrap-servers}") + private String bootstrapServers; + + @Value("${spring.kafka.consumer.group-id}") + private String groupId; + + @Bean + public Map consumerConfigs() { + Map props = new HashMap<>(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "transaction-service-group"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + return props; + } + + @Bean + public ConsumerFactory consumerFactory() { + return new DefaultKafkaConsumerFactory<>(consumerConfigs()); + } + + @Bean + public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { + ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); + factory.setConsumerFactory(consumerFactory()); + return factory; + } + + @Bean + public Map producerConfigs() { + Map props = new HashMap<>(); + props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + return props; + } + + @Bean + public ProducerFactory producerFactory() { + return new DefaultKafkaProducerFactory<>(producerConfigs()); + } + + @Bean + public KafkaTemplate kafkaTemplate() { + return new KafkaTemplate<>(producerFactory()); + } +} \ No newline at end of file diff --git a/antifraud/src/main/java/com/yape/antifraud/listeners/AntifraudListenerTransactions.java b/antifraud/src/main/java/com/yape/antifraud/listeners/AntifraudListenerTransactions.java new file mode 100644 index 0000000..ff50fdd --- /dev/null +++ b/antifraud/src/main/java/com/yape/antifraud/listeners/AntifraudListenerTransactions.java @@ -0,0 +1,21 @@ +package com.yape.antifraud.listeners; + + +import com.yape.antifraud.services.AntiFraudService; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Service; + +@Service +public class AntifraudListenerTransactions { + + @Autowired + private AntiFraudService antiFraudService; + + @KafkaListener(topics = "transaction-events", groupId = "${spring.kafka.consumer.group-id}") + public void listen(ConsumerRecord record) { + antiFraudService.checkTransaction(record.key(), record.value()); + } +} \ No newline at end of file diff --git a/antifraud/src/main/java/com/yape/antifraud/services/AntiFraudService.java b/antifraud/src/main/java/com/yape/antifraud/services/AntiFraudService.java new file mode 100644 index 0000000..43ecbd2 --- /dev/null +++ b/antifraud/src/main/java/com/yape/antifraud/services/AntiFraudService.java @@ -0,0 +1,18 @@ +package com.yape.antifraud.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.stereotype.Service; + +@Service +public class AntiFraudService { + + @Autowired + private KafkaTemplate kafkaTemplate; + + public void checkTransaction(String transactionId, String value) { + double transactionValue = Double.parseDouble(value); + String status = transactionValue > 1000 || transactionValue <=0 ? "3" : "2"; + kafkaTemplate.send("validated-transactions", transactionId, status); + } +} diff --git a/antifraud/src/main/resources/application.properties b/antifraud/src/main/resources/application.properties new file mode 100644 index 0000000..db447cb --- /dev/null +++ b/antifraud/src/main/resources/application.properties @@ -0,0 +1,13 @@ +spring.application.name=antifraud + +# Kafka Config + +spring.kafka.bootstrap-servers=kafka:9092 +spring.kafka.consumer.auto-offset-reset=earliest +spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer +spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer +spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer +spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer +spring.kafka.consumer.group-id=anti-fraud-service-group +spring.kafka.topic.transaction-events=transaction-events +spring.kafka.topic.validated-transactions=validated-transactions \ No newline at end of file diff --git a/antifraud/src/main/webapp/META-INF/MANIFEST.MF b/antifraud/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/antifraud/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/antifraud/src/test/java/com/yape/antifraud/AntifraudApplicationTests.java b/antifraud/src/test/java/com/yape/antifraud/AntifraudApplicationTests.java new file mode 100644 index 0000000..ac8d891 --- /dev/null +++ b/antifraud/src/test/java/com/yape/antifraud/AntifraudApplicationTests.java @@ -0,0 +1,13 @@ +package com.yape.antifraud; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class AntifraudApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/transaction/.gitignore b/transaction/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/transaction/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/transaction/.mvn/wrapper/maven-wrapper.properties b/transaction/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..aeccdfd --- /dev/null +++ b/transaction/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.1 +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip diff --git a/transaction/Dockerfile b/transaction/Dockerfile new file mode 100644 index 0000000..c560750 --- /dev/null +++ b/transaction/Dockerfile @@ -0,0 +1,23 @@ +# Use a base image with JDK and Maven installed +FROM maven:3.8.4-openjdk-17 AS build + +# Set the working directory in the container +WORKDIR /app + +# Copy the project files into the container +COPY . . + +# Build the application +RUN mvn clean package -DskipTests + +# Use a smaller base image for runtime +FROM openjdk:17-jdk-slim + +# Set the working directory in the container +WORKDIR /app + +# Copy the JAR file from the build stage into the container +COPY --from=build /app/target/transaction-0.0.1-SNAPSHOT.jar app.jar + +# Specify the command to run on container start +CMD ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/transaction/mvnw b/transaction/mvnw new file mode 100644 index 0000000..ba9212a --- /dev/null +++ b/transaction/mvnw @@ -0,0 +1,250 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.1 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl="${value-}" ;; + distributionSha256Sum) distributionSha256Sum="${value-}" ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_HOME="$HOME/.m2/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/transaction/mvnw.cmd b/transaction/mvnw.cmd new file mode 100644 index 0000000..406932d --- /dev/null +++ b/transaction/mvnw.cmd @@ -0,0 +1,146 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.1 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/transaction/pom.xml b/transaction/pom.xml new file mode 100644 index 0000000..41fed3a --- /dev/null +++ b/transaction/pom.xml @@ -0,0 +1,100 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.0 + + + com.yape + transaction + 0.0.1-SNAPSHOT + Code Challenge Transaction Service + Transaction service for the Yape Code Challenge + + 17 + + + + org.springframework.boot + spring-boot-starter-graphql + + + com.graphql-java-kickstart + graphql-java-tools + 11.1.0 + + + org.springframework.graphql + spring-graphql + + + com.fasterxml.jackson.core + jackson-databind + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.kafka + spring-kafka + + + org.apache.kafka + kafka-clients + + + jakarta.validation + jakarta.validation-api + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-docker-compose + runtime + true + + + org.postgresql + postgresql + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + com.graphql-java + graphql-java-extended-scalars + 22.0 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/transaction/src/main/java/com/yape/transaction/CodeChallengeTransactionServiceApplication.java b/transaction/src/main/java/com/yape/transaction/CodeChallengeTransactionServiceApplication.java new file mode 100644 index 0000000..931e1c8 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/CodeChallengeTransactionServiceApplication.java @@ -0,0 +1,13 @@ +package com.yape.transaction; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class CodeChallengeTransactionServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(CodeChallengeTransactionServiceApplication.class, args); + } + +} diff --git a/transaction/src/main/java/com/yape/transaction/config/AppConfig.java b/transaction/src/main/java/com/yape/transaction/config/AppConfig.java new file mode 100644 index 0000000..20274ce --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/config/AppConfig.java @@ -0,0 +1,14 @@ +package com.yape.transaction.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class AppConfig { + + @Bean + public RestTemplate customRestTemplate() { + return new RestTemplate(); + } +} diff --git a/transaction/src/main/java/com/yape/transaction/config/GraphQlConfig.java b/transaction/src/main/java/com/yape/transaction/config/GraphQlConfig.java new file mode 100644 index 0000000..4a0d19d --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/config/GraphQlConfig.java @@ -0,0 +1,17 @@ +package com.yape.transaction.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.graphql.execution.RuntimeWiringConfigurer; + +import graphql.scalars.ExtendedScalars; + +@Configuration +public class GraphQlConfig { + + @Bean + public RuntimeWiringConfigurer runtimeWiringConfigurer() { + return wiringBuilder -> wiringBuilder.scalar(ExtendedScalars.GraphQLBigDecimal).scalar(ExtendedScalars.UUID); + + } +} diff --git a/transaction/src/main/java/com/yape/transaction/config/KafkaConfig.java b/transaction/src/main/java/com/yape/transaction/config/KafkaConfig.java new file mode 100644 index 0000000..7d0dbe5 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/config/KafkaConfig.java @@ -0,0 +1,77 @@ +package com.yape.transaction.config; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.producer.ProducerConfig; +import org.apache.kafka.common.serialization.StringDeserializer; +import org.apache.kafka.common.serialization.StringSerializer; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.kafka.annotation.EnableKafka; +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.kafka.core.ProducerFactory; +/** +import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.support.serializer.ErrorHandlingDeserializer; +import org.springframework.kafka.support.serializer.JsonDeserializer; +import org.springframework.kafka.support.serializer.JsonSerializer; + +import com.yape.transaction.producers.YapeTransactionEventProducer; +**/ + +import java.util.HashMap; +import java.util.Map; + +@Configuration +@EnableKafka +public class KafkaConfig { + + @Value("${spring.kafka.bootstrap-servers}") + private String bootstrapServers; + + @Value("${spring.kafka.consumer.group-id}") + private String groupId; + + @Bean + public ProducerFactory producerFactory() { + Map configProps = new HashMap<>(); + configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); + return new DefaultKafkaProducerFactory<>(configProps); + } + + @Bean + public KafkaTemplate kafkaTemplate() { + return new KafkaTemplate<>(producerFactory()); + } + + @Bean + public Map consumerConfigs() { + Map props = new HashMap<>(); + props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + props.put(ConsumerConfig.GROUP_ID_CONFIG, "transaction-service-group"); + props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); + props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + return props; + } + + @Bean + public ConsumerFactory consumerFactory() { + return new DefaultKafkaConsumerFactory<>(consumerConfigs()); + } + + @Bean + public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() { + ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); + factory.setConsumerFactory(consumerFactory()); + return factory; + } +} diff --git a/transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionInsertion.java b/transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionInsertion.java new file mode 100644 index 0000000..805276b --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionInsertion.java @@ -0,0 +1,21 @@ +package com.yape.transaction.dtos; + +import java.math.BigDecimal; +import java.util.UUID; + +import lombok.Data; + +@Data +public class YapeTransactionInsertion { + private UUID accountExternalIdDebit; + private UUID accountExternalIdCredit; + private int transferTypeId; + private BigDecimal value; + + public YapeTransactionInsertion(UUID accountExternalIdDebit, UUID accountExternalIdCredit, int transferTypeId, BigDecimal value) { + this.accountExternalIdDebit = accountExternalIdDebit; + this.accountExternalIdCredit = accountExternalIdCredit; + this.transferTypeId = transferTypeId; + this.value = value; + } +} diff --git a/transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionSingleRetrieval.java b/transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionSingleRetrieval.java new file mode 100644 index 0000000..80fcda1 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/dtos/YapeTransactionSingleRetrieval.java @@ -0,0 +1,33 @@ +package com.yape.transaction.dtos; + +import java.math.BigDecimal; +import java.util.UUID; + +import com.yape.transaction.entities.TransactionStatus; +import com.yape.transaction.entities.TransactionType; +import com.yape.transaction.entities.YapeTransaction; + +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class YapeTransactionSingleRetrieval { + private UUID transactionExternalId; + private UUID accountExternalIdDebit; + private UUID accountExternalIdCredit; + private TransactionType transactionType; + private BigDecimal value; + private TransactionStatus transactionStatus; + private String createdAt; + + public YapeTransactionSingleRetrieval (YapeTransaction transaction) { + this.accountExternalIdDebit = transaction.getAccountExternalIdDebit(); + this.accountExternalIdCredit = transaction.getAccountExternalIdCredit(); + this.transactionExternalId = transaction.getTransactionExternalId(); + this.transactionType = transaction.getTransactionType(); + this.value = transaction.getValue(); + this.transactionStatus = transaction.getTransactionStatus(); + this.createdAt = transaction.getCreatedAt(); + } +} diff --git a/transaction/src/main/java/com/yape/transaction/entities/TransactionStatus.java b/transaction/src/main/java/com/yape/transaction/entities/TransactionStatus.java new file mode 100644 index 0000000..4254cc0 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/entities/TransactionStatus.java @@ -0,0 +1,21 @@ +package com.yape.transaction.entities; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "transaction_statuses") +@Data +@NoArgsConstructor +public class TransactionStatus { + @Id + private int id; + + @Column(name = "name", nullable = false) + private String name; +} diff --git a/transaction/src/main/java/com/yape/transaction/entities/TransactionType.java b/transaction/src/main/java/com/yape/transaction/entities/TransactionType.java new file mode 100644 index 0000000..f0b3adf --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/entities/TransactionType.java @@ -0,0 +1,21 @@ +package com.yape.transaction.entities; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "transaction_types") +@Data +@NoArgsConstructor +public class TransactionType { + @Id + private int id; + + @Column(name = "name", nullable = false) + private String name; +} diff --git a/transaction/src/main/java/com/yape/transaction/entities/YapeTransaction.java b/transaction/src/main/java/com/yape/transaction/entities/YapeTransaction.java new file mode 100644 index 0000000..7c8854f --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/entities/YapeTransaction.java @@ -0,0 +1,48 @@ +package com.yape.transaction.entities; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.UUID; + +import jakarta.persistence.*; +import jakarta.validation.constraints.AssertTrue; + +@Entity +@Table(name = "transactions") +@Data +@NoArgsConstructor +@EqualsAndHashCode(of = "transactionExternalId") +public class YapeTransaction { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private UUID transactionExternalId; + + @Column(name = "account_external_id_debit") + private UUID accountExternalIdDebit; + + @Column(name = "account_external_id_credit") + private UUID accountExternalIdCredit; + + @ManyToOne + @JoinColumn(name = "transfer_type_id", nullable = false) + private TransactionType transactionType; + + @Column(name = "value", nullable = false) + private BigDecimal value; + + @ManyToOne + @JoinColumn(name = "status_id", nullable = false) + private TransactionStatus transactionStatus; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "created_at", nullable = false) + private String createdAt; + + @AssertTrue(message = "Transaction must either come from debit or credit card") + private boolean isTransactionValid() { + return accountExternalIdDebit != null || accountExternalIdCredit != null; + } +} \ No newline at end of file diff --git a/transaction/src/main/java/com/yape/transaction/listeners/YapeTransactionListener.java b/transaction/src/main/java/com/yape/transaction/listeners/YapeTransactionListener.java new file mode 100644 index 0000000..7a1bcbd --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/listeners/YapeTransactionListener.java @@ -0,0 +1,50 @@ +package com.yape.transaction.listeners; + +import com.yape.transaction.entities.TransactionStatus; +import com.yape.transaction.entities.YapeTransaction; +import com.yape.transaction.repositories.TransactionStatusRepository; +import com.yape.transaction.repositories.YapeTransactionRepository; +import com.yape.transaction.services.YapeTransactionService; + +import java.util.Optional; +import java.util.UUID; + +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.stereotype.Service; + +@Service +public class YapeTransactionListener { + + private final YapeTransactionService transactionService; + + @Autowired + private YapeTransactionRepository transactionRepository; + + @Autowired + private TransactionStatusRepository statusRepository; + + @Autowired + public YapeTransactionListener(YapeTransactionService transactionService) { + this.transactionService = transactionService; + } + + @KafkaListener(topics = "validated-transactions", groupId = "${spring.kafka.consumer.group-id}") + public void listen(ConsumerRecord record) { + String transactionExternalId = record.key(); + int transactionStatus = Integer.parseInt(record.value()); + + Optional transaction = transactionRepository.findById(UUID.fromString(transactionExternalId)); + Optional status = statusRepository.findById(transactionStatus); + + transaction.ifPresent(existingTransaction ->{ + status.ifPresent(existingStatus->{ + existingTransaction.setTransactionStatus(existingStatus); + transactionRepository.save(existingTransaction); + transactionService.handleKafkaResponse(existingTransaction.getTransactionExternalId(), existingTransaction); + + }); + }); + } +} \ No newline at end of file diff --git a/transaction/src/main/java/com/yape/transaction/repositories/TransactionStatusRepository.java b/transaction/src/main/java/com/yape/transaction/repositories/TransactionStatusRepository.java new file mode 100644 index 0000000..0bdbe84 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/repositories/TransactionStatusRepository.java @@ -0,0 +1,7 @@ +package com.yape.transaction.repositories; + +import com.yape.transaction.entities.TransactionStatus; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TransactionStatusRepository extends JpaRepository { +} diff --git a/transaction/src/main/java/com/yape/transaction/repositories/TransactionTypeRepository.java b/transaction/src/main/java/com/yape/transaction/repositories/TransactionTypeRepository.java new file mode 100644 index 0000000..5008a7e --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/repositories/TransactionTypeRepository.java @@ -0,0 +1,7 @@ +package com.yape.transaction.repositories; + +import com.yape.transaction.entities.TransactionType; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TransactionTypeRepository extends JpaRepository { +} diff --git a/transaction/src/main/java/com/yape/transaction/repositories/YapeTransactionRepository.java b/transaction/src/main/java/com/yape/transaction/repositories/YapeTransactionRepository.java new file mode 100644 index 0000000..1613a99 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/repositories/YapeTransactionRepository.java @@ -0,0 +1,11 @@ +package com.yape.transaction.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.yape.transaction.entities.YapeTransaction; + +import java.util.UUID; + +public interface YapeTransactionRepository extends JpaRepository { + YapeTransaction findByTransactionExternalId(UUID transactionExternalId); +} \ No newline at end of file diff --git a/transaction/src/main/java/com/yape/transaction/resolvers/YapeTransactionResolver.java b/transaction/src/main/java/com/yape/transaction/resolvers/YapeTransactionResolver.java new file mode 100644 index 0000000..255f7e1 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/resolvers/YapeTransactionResolver.java @@ -0,0 +1,37 @@ +package com.yape.transaction.resolvers; + +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.stereotype.Controller; + +import com.yape.transaction.dtos.YapeTransactionInsertion; +import com.yape.transaction.dtos.YapeTransactionSingleRetrieval; +import com.yape.transaction.services.YapeTransactionService; + +import graphql.kickstart.tools.GraphQLMutationResolver; +import graphql.kickstart.tools.GraphQLQueryResolver; + +@Controller +public class YapeTransactionResolver implements GraphQLQueryResolver, GraphQLMutationResolver { + + @Autowired + private final YapeTransactionService transactionService; + + public YapeTransactionResolver(YapeTransactionService transactionService) { + this.transactionService = transactionService; + } + + @MutationMapping + public YapeTransactionSingleRetrieval createTransaction(@Argument YapeTransactionInsertion input) { + return transactionService.createTransaction(input); + } + + @QueryMapping + public YapeTransactionSingleRetrieval getTransaction(@Argument UUID transactionExternalId) { + return transactionService.getTransaction(transactionExternalId); + } +} \ No newline at end of file diff --git a/transaction/src/main/java/com/yape/transaction/services/YapeTransactionService.java b/transaction/src/main/java/com/yape/transaction/services/YapeTransactionService.java new file mode 100644 index 0000000..13e6bd6 --- /dev/null +++ b/transaction/src/main/java/com/yape/transaction/services/YapeTransactionService.java @@ -0,0 +1,98 @@ +package com.yape.transaction.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.kafka.core.KafkaTemplate; +import org.springframework.stereotype.Service; + +import com.yape.transaction.dtos.YapeTransactionInsertion; +import com.yape.transaction.dtos.YapeTransactionSingleRetrieval; +import com.yape.transaction.entities.TransactionStatus; +import com.yape.transaction.entities.TransactionType; +import com.yape.transaction.entities.YapeTransaction; +import com.yape.transaction.repositories.TransactionStatusRepository; +import com.yape.transaction.repositories.TransactionTypeRepository; +import com.yape.transaction.repositories.YapeTransactionRepository; + +import java.time.LocalDateTime; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +@Service +public class YapeTransactionService { + + private final ConcurrentHashMap> responseFutures = new ConcurrentHashMap<>(); + + @Autowired + private YapeTransactionRepository transactionRepository; + + @Autowired + private TransactionTypeRepository transactionTypeRepository; + + @Autowired + private TransactionStatusRepository transactionStatusRepository; + + @Autowired + private KafkaTemplate kafkaTemplate; + + @Autowired + public YapeTransactionService(YapeTransactionRepository transactionRepository, KafkaTemplate kafkaTemplate) { + this.transactionRepository = transactionRepository; + this.kafkaTemplate = kafkaTemplate; + } + + public YapeTransactionSingleRetrieval createTransaction(YapeTransactionInsertion request) { + + Optional transactionType = transactionTypeRepository.findById(request.getTransferTypeId()); + if (!transactionType.isPresent()) { + throw new IllegalArgumentException("Invalid transaction type ID: " + request.getTransferTypeId()); + } + + Optional transactionStatus = transactionStatusRepository.findById(1); + if (!transactionStatus.isPresent()) { + throw new IllegalArgumentException("Invalid transaction status ID: 1"); + } + + YapeTransaction transaction = new YapeTransaction(); + CompletableFuture futureResponse = new CompletableFuture<>(); + + transaction.setAccountExternalIdDebit(request.getAccountExternalIdDebit()); + transaction.setAccountExternalIdCredit(request.getAccountExternalIdCredit()); + transaction.setTransactionType(transactionType.get()); + transaction.setValue(request.getValue()); + transaction.setTransactionStatus(transactionStatus.get()); + transaction.setCreatedAt(LocalDateTime.now()+""); + transactionRepository.save(transaction); + responseFutures.put(transaction.getTransactionExternalId(), futureResponse); + + kafkaTemplate.send("transaction-events", transaction.getTransactionExternalId()+"", transaction.getValue()+""); + + try { + return futureResponse.get(30, TimeUnit.SECONDS); + } catch (Exception e) { + throw new RuntimeException("Timeout or interruption while waiting for anti-fraud response", e); + } finally { + responseFutures.remove(transaction.getTransactionExternalId()); + } + + } + + public void handleKafkaResponse(UUID transactionId, YapeTransaction response) { + CompletableFuture future = responseFutures.remove(transactionId); + if (future != null) { + future.complete(new YapeTransactionSingleRetrieval(response)); + } + } + + public YapeTransactionSingleRetrieval getTransaction(UUID transactionExternalId) { + Optional transaction = transactionRepository.findById(transactionExternalId); + YapeTransactionSingleRetrieval response = new YapeTransactionSingleRetrieval(); + if(transaction.isPresent()) { + response = new YapeTransactionSingleRetrieval(transaction.get()); + } + return response; + } + +} diff --git a/transaction/src/main/resources/application.properties b/transaction/src/main/resources/application.properties new file mode 100644 index 0000000..2ca0618 --- /dev/null +++ b/transaction/src/main/resources/application.properties @@ -0,0 +1,40 @@ +spring.application.name=Code Challenge Transaction Service + +# Database Configuration +spring.datasource.url=jdbc:postgresql://postgres:5432/mydatabase +spring.datasource.username=myuser +spring.datasource.password=secret +spring.datasource.driver-class-name=org.postgresql.Driver +spring.jpa.hibernate.ddl-auto=update +spring.datasource.initialization-mode=always +spring.jpa.defer-datasource-initialization=true +spring.sql.init.mode=always + +# Hibernate properties +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true + +# Logging +logging.level.org.hibernate.SQL=DEBUG +logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE + +# URLs and etc +anti-fraud-service.url=http://localhost:8081/anti-fraud + +# Kafka Config +spring.kafka.bootstrap-servers=kafka:9092 +spring.kafka.consumer.auto-offset-reset=earliest +spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer +spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer +spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer +spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer +spring.kafka.consumer.group-id=transaction-service-group +spring.kafka.topic.transaction-events=transaction-events +spring.kafka.topic.validated-transactions=validated-transactions + +# GraphQL Config +spring.graphql.servlet.mapping=/graphql +spring.graphql.servlet.enabled=true +spring.graphql.path=/graphql +logging.level.org.springframework.boot.autoconfigure.graphql=DEBUG +logging.level.graphql=DEBUG \ No newline at end of file diff --git a/transaction/src/main/resources/data.sql b/transaction/src/main/resources/data.sql new file mode 100644 index 0000000..11f33b5 --- /dev/null +++ b/transaction/src/main/resources/data.sql @@ -0,0 +1,9 @@ +-- Insert Transaction Types +INSERT INTO transaction_types (id, name) VALUES (1, 'Outbound Transfer'); +INSERT INTO transaction_types (id, name) VALUES (2, 'Inbound Transfer'); +INSERT INTO transaction_types (id, name) VALUES (3, 'Withdrawal'); + +-- Insert Transaction Statuses +INSERT INTO transaction_statuses (id, name) VALUES (1, 'PENDING'); +INSERT INTO transaction_statuses (id, name) VALUES (2, 'APPROVED'); +INSERT INTO transaction_statuses (id, name) VALUES (3, 'REJECTED'); diff --git a/transaction/src/main/resources/graphql/schema.graphqls b/transaction/src/main/resources/graphql/schema.graphqls new file mode 100644 index 0000000..8cf2c35 --- /dev/null +++ b/transaction/src/main/resources/graphql/schema.graphqls @@ -0,0 +1,35 @@ +scalar BigDecimal +scalar UUID + +type YapeTransactionSingleRetrieval { + transactionExternalId: UUID + accountExternalIdDebit: UUID + accountExternalIdCredit: UUID + transactionType: TransactionType + value: BigDecimal + transactionStatus: TransactionStatus + createdAt: String +} + +input YapeTransactionInsertion { + accountExternalIdDebit: UUID + accountExternalIdCredit: UUID + transferTypeId: Int! + value: BigDecimal! +} + +type TransactionStatus { + name: String +} + +type TransactionType { + name: String +} + +type Query { + getTransaction(transactionExternalId: UUID!): YapeTransactionSingleRetrieval +} + +type Mutation { + createTransaction(input: YapeTransactionInsertion!): YapeTransactionSingleRetrieval +} \ No newline at end of file diff --git a/transaction/src/main/webapp/META-INF/MANIFEST.MF b/transaction/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/transaction/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/transaction/src/test/java/com/yape/transaction/CodeChallengeTransactionServiceApplicationTests.java b/transaction/src/test/java/com/yape/transaction/CodeChallengeTransactionServiceApplicationTests.java new file mode 100644 index 0000000..e8a27e1 --- /dev/null +++ b/transaction/src/test/java/com/yape/transaction/CodeChallengeTransactionServiceApplicationTests.java @@ -0,0 +1,13 @@ +package com.yape.transaction; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class CodeChallengeTransactionServiceApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/yape-challenge-environment.yml b/yape-challenge-environment.yml new file mode 100644 index 0000000..c9f3431 --- /dev/null +++ b/yape-challenge-environment.yml @@ -0,0 +1,83 @@ +version: '3.8' + +services: + + zookeeper: + image: confluentinc/cp-zookeeper:6.2.0 + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + ports: + - 2181:2181 + networks: + - transaction-network + + kafka: + image: confluentinc/cp-kafka:6.2.0 + container_name: kafka + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' + KAFKA_CREATE_TOPICS: "transaction-events:1:1,validated-transactions:1:1" + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_JMX_PORT: 9991 + ports: + - "9092:9092" + - "29092:29092" + depends_on: + - zookeeper + networks: + - transaction-network + + postgres: + image: postgres:latest + container_name: postgres + environment: + POSTGRES_DB: mydatabase + POSTGRES_USER: myuser + POSTGRES_PASSWORD: secret + ports: + - "5432:5432" + networks: + - transaction-network + + transaction-service: + build: + context: ./transaction + container_name: transaction-service + ports: + - "8080:8080" + depends_on: + - postgres + - kafka + environment: + SPRING_PROFILES_ACTIVE: docker + SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/mydatabase + SPRING_DATASOURCE_USERNAME: myuser + SPRING_DATASOURCE_PASSWORD: secret + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + SPRING_KAFKA_CONSUMER_GROUP_ID: transaction-service-group + networks: + - transaction-network + + anti-fraud-service: + build: + context: ./antifraud + container_name: anti-fraud-service + ports: + - "8081:8081" + depends_on: + - kafka + environment: + SPRING_PROFILES_ACTIVE: docker + SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092 + SPRING_KAFKA_CONSUMER_GROUP_ID: transaction-service-group + networks: + - transaction-network + +networks: + transaction-network: + driver: bridge From d48bb2d917680e4da18b9fd07b93f3561ee610ae Mon Sep 17 00:00:00 2001 From: Bisonfan95 Date: Mon, 17 Jun 2024 02:37:50 -0500 Subject: [PATCH 2/2] Fixed: Typos in README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7b46a19..6d19c2e 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ For the setup you only need to run 2 commands, that is if you already have docker installed. I assume you do :D -Be sure you are possitioned on the root folder that has the docker compose file and run these commands: +Be sure you are positioned on the root folder that has the docker compose file and run these commands: docker-compose.exe -f .\yape-challenge-environment.yml build docker-compose.exe -f .\yape-challenge-environment.yml up -d -To help you testing my submission I prepared a Postman Collection you can import which can be found in the root folder too. Root folder also contains a Report I made that I invite you to read. +To help you test my submission I prepared a Postman Collection you can import which can be found in the root folder too. Root folder also contains a Report I made that I invite you to read. I am thrilled to hear back from you and receive the feedback about my hardwork. \ No newline at end of file