we-superapp / apps /api /src /modules /README.md
nenbuj
Initial deploy: «МЫ» супер-апп
c562e21
|
Raw History Blame Contribute Delete
1.81 kB

Модули Кодекса

Сюда Кодекс кладёт файлы-плагины Fastify: finance.js, tasks.js, social.js, calendar.js. Сервер (src/server.js) подхватывает их автоматически — все *.js отсюда.

Шаблон модуля

// src/modules/finance.js
import crypto from 'node:crypto';
import { db } from '../core/db.js';
import { bus } from '../core/bus.js';
import { requireMember } from '../core/guards.js';

export default async function financeRoutes(fastify) {
  fastify.get('/spaces/:id/transactions', async (request) => {
    await requireMember(request, request.params.id);
    const transactions = db
      .prepare('SELECT * FROM transactions WHERE space_id = ? ORDER BY created_at DESC')
      .all(request.params.id);
    return { transactions };
  });

  fastify.post('/spaces/:id/transactions', async (request, reply) => {
    await requireMember(request, request.params.id);
    // ... валидация по CONTRACT.md ...
    const tx = { /* ... */ };
    // db.prepare(...).run(...)
    bus.emit(request.params.id, { type: 'tx.created', space_id: request.params.id, payload: tx });
    return reply.code(201).send({ transaction: tx });
  });
}

Доступно из ядра:

  • db — better-sqlite3 (см. core/db.js)
  • bus — реалтайм-шина: bus.emit(spaceId, { type, space_id, payload })
  • requireMember(request, spaceId) — бросает 403/404 (ядро ловит и форматирует ошибку)

Не трогай core/, server.js. Ошибки из requireMember ядро обрабатывает само (глобальный errorHandler), поэтому можно просто await requireMember(...) без try/catch.