3.0 KiB
3.0 KiB
Copilot Instructions for tcgdex-golang
Project Overview
This repository implements a Go client for interacting with the tcgdex (Trading Card Game Database) API. The codebase is organized into two main directories:
client/: Contains API client logic and request builders for cards, series, and sets.models/: Defines data structures representing cards, abilities, attacks, items, variants, legalities, series, and sets.
Architecture & Data Flow
- The
clientpackage provides entry points for querying tcgdex data. Each file (e.g.,cards.go,series.go) encapsulates logic for a specific resource type. - The
modelspackage contains Go structs that mirror the API's JSON schema. These are used for unmarshalling API responses and internal data handling. - Data flows from API requests (built in
client/) into model structs, which are then consumed by application logic or returned to callers.
Developer Workflows
- Build: Use
go build ./...from the project root to build all packages. - Test: Run
go test ./...to execute all tests (if present). No test files detected in the current structure. - Coverage: If coverage is needed, use
go test -coverprofile=coverage.out ./.... - Dependencies: Managed via Go modules (
go.mod,go.sum). Usego mod tidyto clean up dependencies. - Makefile: If present, check for custom build/test commands. (No custom targets detected in current context.)
Project-Specific Patterns
- Resource Separation: Each API resource (card, series, set) has its own client and model files. Follow this pattern for new resources.
- Model Naming: Model structs use the
card_,serie_, andset_prefixes to indicate their domain. Maintain this convention for clarity. - Client Builders: Use builder patterns in
client/client_builder.gofor constructing complex queries. - Error Handling: Standard Go error handling is used. Return errors from client methods and propagate them up.
Integration Points
- External API: All data is fetched from the tcgdex API. No other external services detected.
- No Database: The project does not persist data locally; it acts as a pure API client.
Examples
- To add a new resource, create a model in
models/(e.g.,resource.go) and a client inclient/(e.g.,resource.go). - To extend card functionality, update
models/card.goandclient/cards.go.
Key Files
client/cards.go,client/series.go,client/sets.go: API resource clientsmodels/card.go,models/serie.go,models/set.go: Core data modelsclient/client_builder.go: Query builder logicgo.mod,go.sum: Dependency management
Conventions
- Keep resource logic and models in separate files for maintainability.
- Use Go idioms for error handling and struct design.
- Document public methods with GoDoc comments for clarity.
If any section is unclear or missing important details, please specify which part needs improvement or what additional context is required.