(ns metabase.query-processor.streaming.interface (:require [potemkin.types :as p.types])) | |
Options for the streaming response for this specific stream type. See | (defmulti stream-options {:arglists '([export-format] [export-format filename-prefix])} (fn ([export-format & _] (keyword export-format)))) |
Protocol for the methods needed to write streaming QP results. This protocol is a higher-level interface to intended to have multiple implementations. | (p.types/defprotocol+ StreamingResultsWriter (begin! [this initial-metadata viz-settings] "Write anything needed before writing the first row. `initial-metadata` is incomplete metadata provided before rows begin reduction; some metadata such as insights won't be available until we finish.") (write-row! [this row row-num col viz-settings] "Write a row. `row` is a sequence of values in the row. `row-num` is the zero-indexed row number. `cols` is an ordered list of columns in the export.") (finish! [this final-metadata] "Write anything needed after writing the last row. `final-metadata` is the final, complete metadata available after reducing all rows. Very important: This method *must* `.close` the underlying OutputStream when it is finshed.")) |
Given a | (defmulti streaming-results-writer {:arglists '(^metabase.query_processor.streaming.interface.StreamingResultsWriter [export-format ^java.io.OutputStream os])} (fn [export-format _os] (keyword export-format))) |