Files
mono/components/extension-sdk/src/entities/shared-cooperative.entity.ts
T
coopops 883e597d40
Typecheck / controller (pull_request) Has been cancelled
Typecheck / desktop (pull_request) Has been cancelled
[E10-2] feat(extension-sdk): @coopenomics/extension-sdk — Nest-template subgraph'а
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).
2026-06-03 18:33:24 +00:00

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;
}