883e597d40
Epic 10 Story 10.2 — SDK для разработки backend-расширений Apollo Federation v2
subgraph'ов экосистемы кооператива.
Что внутри:
- ExtensionFederationModule.forRoot() — готовый GraphQL модуль с
ApolloFederationDriver + autoSchemaFile.federation: 2
- ExtensionAuthModule.forRoot({ secret }) — passport-jwt стратегия,
валидирует токен который Apollo Gateway forward'ит в Authorization-header.
- ExtensionJwtAuthGuard — guard для GraphQL resolver'ов
- SharedCooperator/SharedCooperative/SharedAccount — federation v2 stub'ы
на core-entity для cross-extension references (@key + @external)
- HealthController GET /_health — обязательный для orchestrator'а
- loadExtensionConfig() — fail-fast загрузчик env'ов
Templates:
- Dockerfile multi-stage (builder + runtime + wget healthcheck)
- docker-compose.snippet.yaml — шаблон service'а для orchestrator'а
Контракт фиксирован Epic 10 PRD (apps-catalog/docs/epics/E10-federation-runtime.md)
и Architecture v3 (blago req 8b-architecture-v3-runtime-federation).
14 lines
492 B
TypeScript
14 lines
492 B
TypeScript
import { Directive, Field, ObjectType } from '@nestjs/graphql';
|
|
|
|
/**
|
|
* Federation v2 ссылка на core-entity `Cooperative` (кооператив / DC).
|
|
* `username` — EOSIO account name кооператива (например `voskhod`, `partner1`).
|
|
*/
|
|
@ObjectType('Cooperative')
|
|
@Directive('@key(fields: "username")')
|
|
export class SharedCooperative {
|
|
@Field(() => String, { description: 'Account name кооператива' })
|
|
@Directive('@external')
|
|
username!: string;
|
|
}
|