Структура проекта
Структура проекта
Заголовок раздела «Структура проекта»Организация каталогов, YAML-файлы и соглашения об именовании.
Структура каталогов
Заголовок раздела «Структура каталогов»myapp/├── .wippy.yaml # Конфигурация среды исполнения├── wippy.lock # Пути к исходникам├── .wippy/ # Установленные модули└── src/ # Исходный код ├── _index.yaml # Определения записей ├── api/ │ ├── _index.yaml │ └── *.lua └── workers/ ├── _index.yaml └── *.luaYAML-файлы определений
Заголовок раздела «YAML-файлы определений»Структура файла
Заголовок раздела «Структура файла»Любой YAML с полями version и namespace считается валидным:
version: "1.0"namespace: app.api
entries: - name: get_user kind: function.lua meta: comment: Получает пользователя по ID source: file://get_user.lua method: handler modules: - sql - json
- name: get_user.endpoint kind: http.endpoint meta: comment: API-эндпоинт пользователя method: GET path: /users/{id} func: get_user| Поле | Обязательно | Описание |
|---|---|---|
version | да | Версия схемы (сейчас "1.0") |
namespace | да | Пространство имён для записей |
entries | да | Массив определений записей |
Соглашения об именовании
Заголовок раздела «Соглашения об именовании»Точки (.) разделяют смысловые части, подчёркивания (_) — слова внутри части:
# Функция и её эндпоинт- name: get_user # Функция- name: get_user.endpoint # Её HTTP-эндпоинт
# Несколько эндпоинтов для одной функции- name: list_orders- name: list_orders.endpoint.get- name: list_orders.endpoint.post
# Роутеры- name: api.public # Публичный API- name: api.admin # Админский APIbase_name.variant — точки разделяют смысловые части, подчёркивания — слова внутри части.
Пространства имён
Заголовок раздела «Пространства имён»Пространства имён — идентификаторы через точку:
appapp.apiapp.api.v2app.workersПолный ID записи — пространство имён плюс имя: app.api:get_user
Каталоги исходников
Заголовок раздела «Каталоги исходников»Файл wippy.lock указывает, откуда Wippy загружает определения:
directories: modules: .wippy src: ./srcWippy рекурсивно сканирует эти каталоги в поисках YAML-файлов.
Определения записей
Заголовок раздела «Определения записей»Каждая запись в массиве entries. Свойства на корневом уровне (без обёртки data:):
entries: - name: hello kind: function.lua meta: comment: Возвращает hello world source: file://hello.lua method: handler modules: - http - json
- name: hello.endpoint kind: http.endpoint meta: comment: Hello-эндпоинт method: GET path: /hello func: helloМетаданные
Заголовок раздела «Метаданные»Используйте meta для информации, отображаемой в UI:
- name: payment_handler kind: function.lua meta: title: Обработчик платежей comment: Работает со Stripe source: file://payment.luaСоглашение: meta.title и meta.comment красиво отображаются в интерфейсах управления.
Записи приложения
Заголовок раздела «Записи приложения»Используйте registry.entry для конфигурации уровня приложения:
- name: config kind: registry.entry meta: title: Настройки приложения type: application environment: production features: dark_mode: true beta_access: falseТипы записей
Заголовок раздела «Типы записей»| Тип | Назначение |
|---|---|
registry.entry | Произвольные данные |
function.lua | Вызываемая Lua-функция |
process.lua | Долгоживущий процесс |
http.service | HTTP-сервер |
http.router | Группа маршрутов |
http.endpoint | HTTP-обработчик |
process.host | Супервизор процессов |
Подробнее в справочнике типов записей.
Файлы конфигурации
Заголовок раздела «Файлы конфигурации».wippy.yaml
Заголовок раздела «.wippy.yaml»Конфигурация среды исполнения в корне проекта:
logger: encoding: json
host: worker_count: 16
http: address: :8080Подробнее в руководстве по конфигурации.
wippy.lock
Заголовок раздела «wippy.lock»Определяет каталоги исходников:
directories: modules: .wippy src: ./srcСсылки на записи
Заголовок раздела «Ссылки на записи»Ссылайтесь по полному ID или относительному имени:
# Полный ID (между пространствами имён)- name: main.router kind: http.router endpoints: - app.api:get_user.endpoint - app.api:list_orders.endpoint
# В том же пространстве — просто имя- name: get_user.endpoint kind: http.endpoint func: get_userПример проекта
Заголовок раздела «Пример проекта»myapp/├── .wippy.yaml├── wippy.lock└── src/ ├── _index.yaml # namespace: app ├── api/ │ ├── _index.yaml # namespace: app.api │ ├── users.lua │ └── orders.lua ├── lib/ │ ├── _index.yaml # namespace: app.lib │ └── database.lua └── workers/ ├── _index.yaml # namespace: app.workers └── email_sender.luaСм. также
Заголовок раздела «См. также»- Типы записей — доступные типы
- Конфигурация — параметры среды исполнения
- Собственные типы записей — реализация обработчиков (продвинутый уровень)