Архитектура
Apostol CRM объединяет два фреймворка в единый бэкенд: высокопроизводительный HTTP-сервер на C++20 и движок бизнес-логики на PostgreSQL.
Обзор
| Фреймворк | Роль | Возможности |
|---|---|---|
| libapostol | C++20 сервер | HTTP/WebSocket, async PostgreSQL, epoll -- 507K RPS |
| db-platform | Слой PostgreSQL | 26 PL/pgSQL модулей, 100+ таблиц, 800+ функций |
Без PHP, Python или Node.js. HTTP-запросы идут напрямую из C++ в PostgreSQL -- ноль промежуточных слоёв.
Поток запроса
Слой C++ обрабатывает HTTP, TLS, пул соединений, WebSocket, JWT и асинхронный ввод-вывод. Слой БД обрабатывает бизнес-логику, маршрутизацию REST, контроль доступа, переходы состояний и хранение данных.
Архитектура базы данных
Четыре схемы:
| Схема | Роль | Пример |
|---|---|---|
rest | Диспетчер REST | rest.sensor('/sensor/list', '{}') |
api | Публичный API с проверкой доступа | api.list_sensor(...) |
kernel | Бизнес-логика | CreateSensor(...), EditSensor(...) |
db | Таблицы, индексы, триггеры | db.sensor |
Система модулей
Workers -- обработка HTTP/WebSocket
| Модуль | Описание |
|---|---|
| AppServer | REST API с аутентификацией |
| AuthServer | OAuth 2.0, JWT, PKCE |
| WebSocketAPI | JSON-RPC + pub/sub |
| FileServer | Файловый сервер с JWT |
| PGHTTP | HTTP-to-PL/pgSQL |
| WebServer | Статические файлы, Swagger UI |
Processes -- фоновые демоны
| Процесс | Описание |
|---|---|
| MessageServer | Email/SMS/push |
| TaskScheduler | Планировщик задач |
| ReportServer | Генерация отчётов |
Система сущностей
Apostol CRM включает 30 бизнес-сущностей. Каждая следует стандартной конвенции из 8 файлов:
entity/object/document/myentity/
├── table.sql # Таблица, индексы, триггеры
├── view.sql # 3 представления в kernel
├── routine.sql # Create*/Edit*/Get* функции
├── api.sql # API-представление + 6 CRUD-обёрток
├── rest.sql # REST-диспетчер (6 стандартных маршрутов)
├── event.sql # 9 обработчиков событий
├── init.sql # Класс, тип, состояния, методы, переходы
└── create.psql # Мастер-скрипт установки
Движок рабочих процессов
Каждая сущность имеет встроенный автомат состояний:
┌────── restore ───────┐
v |
[Created] --enable--> [Enabled] --disable--> [Disabled]
| | |
|--delete--> [Deleted] <--delete-- [Deleted] <--delete--
Подробнее: Настройка рабочих процессов.
Полная версия доступна на английском языке: db-platform Wiki.