feat(skd): support @file references for query text in skd-compile and skd-edit

Allows using "@path/to/file.sql" instead of inline query text.
Path resolved relative to definition file, then CWD; absolute paths supported.

Closes #9

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-03-17 20:06:02 +03:00
parent ffa3189442
commit 05fc7eba27
8 changed files with 133 additions and 11 deletions
+15 -1
View File
@@ -85,12 +85,26 @@
|------|---------|----------|
| `name` | нет | Авто: "НаборДанных1"... |
| `source` | нет | Имя dataSource (авто: первый) |
| `query` | да* | Текст запроса (DataSetQuery) |
| `query` | да* | Текст запроса (DataSetQuery). Поддерживает `@file` — см. ниже |
| `objectName` | да* | Имя объекта (DataSetObject) |
| `items` | да* | Вложенные наборы (DataSetUnion) |
| `fields` | нет | Массив полей |
| `autoFillFields` | нет | `false` — отключить автозаполнение (по умолчанию не выводится = true) |
### Ссылка на внешний файл запроса (@file)
Вместо inline-текста запроса можно указать путь к внешнему файлу с префиксом `@`:
```json
{ "query": "@queries/sales.sql" }
```
Порядок разрешения пути:
1. Абсолютный путь — используется как есть
2. Относительно директории JSON-файла определения
3. Относительно текущей рабочей директории (CWD)
4. Если файл не найден — ошибка компиляции
---
## 4. Поля — shorthand и объектная форма
+1 -1
View File
@@ -125,7 +125,7 @@ Claude вызовет `/skd-info` (overview → trace → query → variant) и
> поля Номенклатура, Количество, Сумма. Период — параметр.
```
Claude сформирует JSON:
Claude сформирует JSON (запрос можно вынести в файл: `"query": "@queries/sales.sql"`):
```json
{
"dataSets": [{