Files
tcgdex-golang/.github/copilot-instructions.md

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 client package provides entry points for querying tcgdex data. Each file (e.g., cards.go, series.go) encapsulates logic for a specific resource type.
  • The models package 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). Use go mod tidy to 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_, and set_ prefixes to indicate their domain. Maintain this convention for clarity.
  • Client Builders: Use builder patterns in client/client_builder.go for 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 in client/ (e.g., resource.go).
  • To extend card functionality, update models/card.go and client/cards.go.

Key Files

  • client/cards.go, client/series.go, client/sets.go: API resource clients
  • models/card.go, models/serie.go, models/set.go: Core data models
  • client/client_builder.go: Query builder logic
  • go.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.