Skip to content

flyoozes/test-assignment-golang

Repository files navigation

Currency Quote Service

Currency quote service with async API for fetching exchange rates.

Requirements

  • Go 1.25+
  • Docker & Docker Compose
  • Make

Quick Start

# 1. Copy environment file
cp .env.example .env

# 2. Edit .env and set your API key from https://exchangeratesapi.io

# 3. Start services
docker compose up -d

# 4. Run locally (alternative - requires local postgres)
make run

API Endpoints:

Method Endpoint Description
POST /api/v1/quotes Request a quote update
GET /api/v1/quotes/requests/{id} Get quote by request ID
GET /api/v1/quotes/latest?base=EUR&quote=USD Get latest quote for pair

API Examples

1. Create Quote Request

# Basic request
curl -X POST http://localhost:8080/api/v1/quotes \
  -H "Content-Type: application/json" \
  -d '{"base_currency": "EUR", "quote_currency": "USD"}'

# With idempotency key
curl -X POST http://localhost:8080/api/v1/quotes \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
  -d '{"base_currency": "EUR", "quote_currency": "USD"}'

2. Get Quote by Request ID

curl http://localhost:8080/api/v1/quotes/requests/<request-id>

3. Get Latest Quote

curl "http://localhost:8080/api/v1/quotes/latest?base=EUR&quote=USD"

Development

Run tests

make test

Generate code (sqlc, oapi-codegen)

make generate

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published