Skip to content

Latest commit

 

History

History
75 lines (62 loc) · 2.25 KB

File metadata and controls

75 lines (62 loc) · 2.25 KB

Command and Request Flows

This page focuses on the runtime flow used by the web server and API routes.

Server Startup Flow

graph TD
    A["CLI command<br/>hana-cli UI / ui / server"] --> B["base.webServerSetup(urlPath)"]
    B --> C["Create Express app + HTTP server"]
    C --> D["Discover routes<br/>routes/**/*.js"]
    D --> E["Import each route module"]
    E --> F["Register endpoints via route(app, server)"]
    F --> G["Attach 404 + global error handlers"]
    G --> H["Listen on host/port"]
    H --> I["Open browser to /ui/#Shell-home"]
Loading

HTTP List Endpoint Flow (/hana/tables example)

graph TD
    A["HTTP GET /hana/tables"] --> B["routes/hanaList.js"]
    B --> C["listHandler(res, '../bin/tables', 'getTables')"]
    C --> D["base.clearConnection()"]
    D --> E["Dynamic import bin/tables.js"]
    E --> F["getTables(base.getPrompts())"]
    F --> G["base.sendResults(res, results)"]
    G --> H["JSON response + cache last results"]
Loading

Inspect Endpoint Flow (/hana/inspectTable)

graph TD
    A["HTTP GET /hana/inspectTable"] --> B["routes/hanaInspect.js"]
    B --> C["inspectTableHandler(...)"]
    C --> D["Build prompt variants<br/>tbl/sql/cds/hdbtable"]
    D --> E["Run inspectTable in parallel"]
    E --> F["Merge outputs into one payload"]
    F --> G["base.sendResults(res, results)"]
Loading

WebSocket Action Flow

graph TD
    A["Client connects ws://.../websockets"] --> B["routes/webSocket.js"]
    B --> C["WebSocketServer(noServer=true)"]
    C --> D["HTTP upgrade handled on /websockets"]
    D --> E["Receive JSON message"]
    E --> F{"action"}
    F -->|massConvert| G["massConvertLib.convert(wss)"]
    F -->|import| H["importLib.importData(base.getPrompts())"]
    F -->|other| I["Broadcast unsupported action error"]
    G --> J["Broadcast progress/status"]
    H --> J
    I --> J
Loading

Error Handling Flow

graph TD
    A["Route throws or calls next(error)"] --> B["globalErrorHandler"]
    B --> C["Return JSON { message, status, ... }"]
    D["Unknown path"] --> E["notFoundHandler"]
    E --> F["Return JSON { error: { message, status, path } }"]
Loading

See Also