src/config/config.oxl
use self.limits { DEFAULT_MAX_CART }
// Статический конфиг: читается при старте, без перезапуска не меняется.
// Значения берутся из флагов, env (APP_DB_URL, APP_INVENTORY_ADDR…), файла или профиля.
pub config App {
dbUrl: str = "builtin://shop" // по умолчанию — встроенное хранилище
inventoryAddr: str // обязательное: без значения узел не стартует (код 78)
paymentsAddr: str
recsAddr: str = "localhost:9103" // модель рекомендаций
paymentsKey: secret<str> // секрет: не попадает в логи и трассы
profile dev { // значения для локальной разработки (и тестов)
dbUrl = "sqlite::memory:"
inventoryAddr = "localhost:9101"
paymentsAddr = "localhost:9102"
paymentsKey = "dev-key"
}
}
// Динамический конфиг: хранится в кластере, меняется без перезапуска (`oxl config set Features.maxCart 200`).
pub dynamic Features {
maxCart: u32 = DEFAULT_MAX_CART // лимит позиций в корзине
liveStats: Flag = Flag.on // флаг можно включать по проценту пользователей
}Source: examples/shop/src/config/config.oxl