Home / Function/ iterator() — drizzle-orm Function Reference

iterator() — drizzle-orm Function Reference

Architecture documentation for the iterator() function in session.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  1e1f198b_6eb7_fa19_2f76_40310ac4f415["iterator()"]
  d3818d89_bf25_06e1_e85b_efdad1eed91b["SingleStoreDriverPreparedQuery"]
  1e1f198b_6eb7_fa19_2f76_40310ac4f415 -->|defined in| d3818d89_bf25_06e1_e85b_efdad1eed91b
  d4a863ce_a3bb_07aa_1d62_22fab05df51e["isPool()"]
  1e1f198b_6eb7_fa19_2f76_40310ac4f415 -->|calls| d4a863ce_a3bb_07aa_1d62_22fab05df51e
  bec6f5c5_0f07_2855_d4b7_24331e6ca30e["query()"]
  1e1f198b_6eb7_fa19_2f76_40310ac4f415 -->|calls| bec6f5c5_0f07_2855_d4b7_24331e6ca30e
  style 1e1f198b_6eb7_fa19_2f76_40310ac4f415 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-orm/src/singlestore/session.ts lines 144–194

	async *iterator(
		placeholderValues: Record<string, unknown> = {},
	): AsyncGenerator<T['execute'] extends any[] ? T['execute'][number] : T['execute']> {
		const params = fillPlaceholders(this.params, placeholderValues);
		const conn = ((isPool(this.client) ? await this.client.getConnection() : this.client) as {} as {
			connection: CallbackConnection;
		}).connection;

		const { fields, query, rawQuery, joinsNotNullableMap, client, customResultMapper } = this;
		const hasRowsMapper = Boolean(fields || customResultMapper);
		const driverQuery = hasRowsMapper ? conn.query(query, params) : conn.query(rawQuery, params);

		const stream = driverQuery.stream();

		function dataListener() {
			stream.pause();
		}

		stream.on('data', dataListener);

		try {
			const onEnd = once(stream, 'end');
			const onError = once(stream, 'error');

			while (true) {
				stream.resume();
				const row = await Promise.race([onEnd, onError, new Promise((resolve) => stream.once('data', resolve))]);
				if (row === undefined || (Array.isArray(row) && row.length === 0)) {
					break;
				} else if (row instanceof Error) { // eslint-disable-line no-instanceof/no-instanceof
					throw row;
				} else {
					if (hasRowsMapper) {
						if (customResultMapper) {
							const mappedRow = customResultMapper([row as unknown[]]);
							yield (Array.isArray(mappedRow) ? mappedRow[0] : mappedRow);
						} else {
							yield mapResultRow(fields!, row as unknown[], joinsNotNullableMap);
						}
					} else {
						yield row as T['execute'];
					}
				}
			}
		} finally {
			stream.off('data', dataListener);
			if (isPool(client)) {
				conn.end();
			}
		}
	}

Domain

Subdomains

Frequently Asked Questions

What does iterator() do?
iterator() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/singlestore/session.ts.
Where is iterator() defined?
iterator() is defined in drizzle-orm/src/singlestore/session.ts at line 144.
What does iterator() call?
iterator() calls 2 function(s): isPool, query.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free