|
| 1 | + |
| 2 | +const d = new Diagram({ theme: "sketch" }); |
| 3 | + |
| 4 | +const client = d.addBox("Client SDK", { row: 0, col: 1, color: "frontend" }); |
| 5 | +const sql = d.addBox("SQL Frontend", { row: 0, col: 3, color: "frontend" }); |
| 6 | +const worker = d.addBox("CF Worker", { row: 1, col: 2, color: "backend" }); |
| 7 | +const master = d.addBox("MasterDO", { row: 2, col: 0, color: "orchestration" }); |
| 8 | +const queryDO = d.addBox("QueryDO", { row: 2, col: 2, color: "orchestration" }); |
| 9 | +const fragDO = d.addBox("FragmentDO", { row: 2, col: 4, color: "orchestration" }); |
| 10 | +const wasm = d.addBox("Zig WASM Engine", { row: 3, col: 2, color: "ai" }); |
| 11 | +const scan = d.addBox("Scan", { row: 4, col: 0, color: "cache" }); |
| 12 | +const filter = d.addBox("Filter", { row: 4, col: 1, color: "cache" }); |
| 13 | +const agg = d.addBox("Agg", { row: 4, col: 2, color: "cache" }); |
| 14 | +const sort = d.addBox("Sort", { row: 4, col: 3, color: "cache" }); |
| 15 | +const proj = d.addBox("Project", { row: 4, col: 4, color: "cache" }); |
| 16 | +const r2 = d.addBox("R2 Storage", { row: 5, col: 1, color: "storage" }); |
| 17 | +const fmt = d.addBox("Parquet/Lance/Iceberg", { row: 5, col: 3, color: "storage" }); |
| 18 | + |
| 19 | +d.connect(client, worker, "query"); |
| 20 | +d.connect(sql, worker, "SQL"); |
| 21 | +d.connect(worker, master, "register"); |
| 22 | +d.connect(worker, queryDO, "query"); |
| 23 | +d.connect(queryDO, fragDO, "fan-out"); |
| 24 | +d.connect(queryDO, wasm, "decode"); |
| 25 | +d.connect(wasm, scan, "pull"); |
| 26 | +d.connect(scan, filter); |
| 27 | +d.connect(filter, agg); |
| 28 | +d.connect(agg, sort); |
| 29 | +d.connect(sort, proj); |
| 30 | +d.connect(scan, r2, "read"); |
| 31 | +d.connect(r2, fmt); |
| 32 | + |
| 33 | +return d.render({ format: ["excalidraw", "svg", "png"], path: "/Users/steven_chong/Downloads/repos/querymode/docs/architecture/querymode-architecture" }); |
0 commit comments