51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
# Story 8.2: GraphQL API
|
|
|
|
## Metadata
|
|
- **Story ID**: 8.2
|
|
- **Title**: GraphQL API
|
|
- **Epic**: 8 - Advanced Features & Polish
|
|
- **Status**: Pending
|
|
- **Priority**: Low
|
|
- **Estimated Time**: 8-10 hours
|
|
- **Dependencies**: 1.5, 2.1, 4.1
|
|
|
|
## Goal
|
|
Add optional GraphQL API alongside REST API for flexible data querying.
|
|
|
|
## Description
|
|
This story implements a GraphQL API using gqlgen that provides an alternative to REST endpoints with flexible querying capabilities.
|
|
|
|
## Deliverables
|
|
|
|
### 1. GraphQL Schema
|
|
- Install `github.com/99designs/gqlgen`
|
|
- Create GraphQL schema:
|
|
- User queries
|
|
- Blog queries
|
|
- Mutations
|
|
- Subscriptions (optional)
|
|
|
|
### 2. GraphQL Resolvers
|
|
- Implement resolvers:
|
|
- Use existing services
|
|
- Add authorization checks
|
|
- Error handling
|
|
|
|
### 3. GraphQL Endpoint
|
|
- Add GraphQL endpoint: `POST /graphql`
|
|
- GraphQL playground: `GET /graphql` (development)
|
|
- Integration with authentication
|
|
|
|
## Acceptance Criteria
|
|
- [ ] GraphQL schema is defined
|
|
- [ ] Resolvers work correctly
|
|
- [ ] Authorization is enforced
|
|
- [ ] GraphQL endpoint works
|
|
- [ ] GraphQL playground works (dev)
|
|
|
|
## Files to Create/Modify
|
|
- `api/graphql/schema.graphql` - GraphQL schema
|
|
- `internal/api/graphql/resolvers.go` - Resolvers
|
|
- `internal/server/routes.go` - Add GraphQL route
|
|
|