- examples/big-suite: E-Commerce 10 functions, 6 layers, real depends_on - provider: nodejs packages now wrapped in ESM zip (buildJSDeployZip) - provider: loadPackageLiteral reads raw file, nodejs zip via source_dir - all 10 functions verified working: python/node/ruby/go runtimes
30 lines
1.3 KiB
Ruby
30 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
require "json"
|
|
|
|
PRODUCTS = [
|
|
{ id: "p-001", name: "Laptop Pro 15", price: 1299.99, category: "electronics", stock: 14 },
|
|
{ id: "p-002", name: "Wireless Mouse", price: 29.99, category: "electronics", stock: 203 },
|
|
{ id: "p-003", name: "Standing Desk", price: 549.00, category: "furniture", stock: 7 },
|
|
{ id: "p-004", name: "USB-C Hub 7-in-1", price: 49.99, category: "electronics", stock: 88 },
|
|
{ id: "p-005", name: "Ergonomic Chair", price: 399.00, category: "furniture", stock: 3 },
|
|
{ id: "p-006", name: "Monitor 4K 27\"", price: 699.00, category: "electronics", stock: 22 },
|
|
{ id: "p-007", name: "Notebook A5", price: 4.99, category: "stationery", stock: 500 },
|
|
{ id: "p-008", name: "Pen Set 12pc", price: 9.99, category: "stationery", stock: 320 },
|
|
].freeze
|
|
|
|
def handler
|
|
# Простая фильтрация по category (query string не доступен в v1 Perl-style,
|
|
# но для Ruby v3 env возвращаем весь каталог)
|
|
total = PRODUCTS.length
|
|
in_stock = PRODUCTS.count { |p| p[:stock] > 0 }
|
|
by_cat = PRODUCTS.group_by { |p| p[:category] }.transform_values(&:length)
|
|
|
|
{
|
|
status: "ok",
|
|
total: total,
|
|
in_stock: in_stock,
|
|
by_category: by_cat,
|
|
products: PRODUCTS,
|
|
}.to_json
|
|
end
|