How nahul100/olx-api works
This Go service exposes a small listings API: clients can check health, list recent listings, create a validated listing, or delete one. The API entry point loads configuration, connects to PostgreSQL, registers routes, and wraps them with request-ID middleware; handlers perform listing queries and format JSON responses or shared errors. A separate migration command applies schema changes or seed data. The tree documents only listing persistence, so no additional product capabilities are assumed. Relationships are limited to those visible in excerpts; migration file contents were not sampled.
Main entry points: api/main.go API Server · migrate/main.go Migration Command · listings.go Listing Handlers · requestid.go Request IDs
Components 13
HTTP API
- API Server
cmd/api/main.go - Health Check
internal/handlers/handlers.go - HTTP Errors
internal/httpx/errors.go
Listing Domain
- Listing Handlers
internal/handlers/listings.go - Create DTO
internal/handlers/dto.go
Runtime Platform
- Request IDs
internal/middleware/requestid.go - Configuration
internal/config/config.go - DB Connector
internal/db/db.go - PostgreSQL
Database Setup
- Migration Command
cmd/migrate/main.go - Schema Migrations
internal/migrations - Listing Seed
internal/seeds/listings.sql
Other components
- API Client
Connections 17
- API Client → API Server: sends requests
- API Server → Configuration: loads settings
cmd/api/main.go - API Server → DB Connector: opens database
cmd/api/main.go - DB Connector → PostgreSQL: pings
internal/db/db.go - API Server → Listing Handlers: registers routes
cmd/api/main.go - API Server → Health Check: registers health
cmd/api/main.go - API Server → Request IDs: wraps routes
cmd/api/main.go - Request IDs → API Server: dispatches requests
internal/middleware/requestid.go - Listing Handlers → PostgreSQL: queries listings
internal/handlers/listings.go - Listing Handlers → Create DTO: validates input
internal/handlers/listings.go - Listing Handlers → HTTP Errors: writes errors
internal/handlers/listings.go - Listing Handlers → Request IDs: reads request ID
internal/handlers/listings.go - Migration Command → Configuration: loads settings
cmd/migrate/main.go - Migration Command → DB Connector: connects for seed
cmd/migrate/main.go - Migration Command → PostgreSQL: applies migrations
cmd/migrate/main.go - Migration Command → Schema Migrations: loads migration files
cmd/migrate/main.go - Migration Command → Listing Seed: executes seed
cmd/migrate/main.go