Home / Class/ PlanetscaleSession Class — drizzle-orm Architecture

PlanetscaleSession Class — drizzle-orm Architecture

Architecture documentation for the PlanetscaleSession class in session.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  432fe997_4ba4_3b24_2264_ddd303ea4f59["PlanetscaleSession"]
  e55f93a1_bb42_b29e_7f05_390a87b09427["session.ts"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|defined in| e55f93a1_bb42_b29e_7f05_390a87b09427
  2861104c_40c0_7997_6b29_518612e5cdcd["constructor()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| 2861104c_40c0_7997_6b29_518612e5cdcd
  6328276d_3c3a_d6f8_540d_c4584d10179a["prepareQuery()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| 6328276d_3c3a_d6f8_540d_c4584d10179a
  6c21a215_2373_c539_7246_9395527557dd["query()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| 6c21a215_2373_c539_7246_9395527557dd
  a06a35d3_c8d0_294a_8bdc_140db682fe06["queryObjects()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| a06a35d3_c8d0_294a_8bdc_140db682fe06
  eb3778af_8ca7_1b2e_afe9_6499135aea33["all()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| eb3778af_8ca7_1b2e_afe9_6499135aea33
  9007549c_26d2_8c11_ec53_42d1924b9ddf["count()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| 9007549c_26d2_8c11_ec53_42d1924b9ddf
  f84fa8d7_0dce_6066_1b3c_5328a5e3a71f["transaction()"]
  432fe997_4ba4_3b24_2264_ddd303ea4f59 -->|method| f84fa8d7_0dce_6066_1b3c_5328a5e3a71f

Relationship Graph

Source Code

drizzle-orm/src/planetscale-serverless/session.ts lines 118–211

export class PlanetscaleSession<
	TFullSchema extends Record<string, unknown>,
	TSchema extends TablesRelationalConfig,
> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {
	static override readonly [entityKind]: string = 'PlanetscaleSession';

	private logger: Logger;
	private client: Client | Transaction | Connection;
	private cache: Cache;

	constructor(
		private baseClient: Client | Connection,
		dialect: MySqlDialect,
		tx: Transaction | undefined,
		private schema: RelationalSchemaConfig<TSchema> | undefined,
		private options: PlanetscaleSessionOptions = {},
	) {
		super(dialect);
		this.client = tx ?? baseClient;
		this.logger = options.logger ?? new NoopLogger();
		this.cache = options.cache ?? new NoopCache();
	}

	prepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(
		query: Query,
		fields: SelectedFieldsOrdered | undefined,
		customResultMapper?: (rows: unknown[][]) => T['execute'],
		generatedIds?: Record<string, unknown>[],
		returningIds?: SelectedFieldsOrdered,
		queryMetadata?: {
			type: 'select' | 'update' | 'delete' | 'insert';
			tables: string[];
		},
		cacheConfig?: WithCacheConfig,
	): MySqlPreparedQuery<T> {
		return new PlanetScalePreparedQuery(
			this.client,
			query.sql,
			query.params,
			this.logger,
			this.cache,
			queryMetadata,
			cacheConfig,
			fields,
			customResultMapper,
			generatedIds,
			returningIds,
		);
	}

	async query(query: string, params: unknown[]): Promise<ExecutedQuery> {
		this.logger.logQuery(query, params);

		return await this.client.execute(query, params, { as: 'array' });
	}

	async queryObjects(
		query: string,
		params: unknown[],
	): Promise<ExecutedQuery> {
		return this.client.execute(query, params, { as: 'object' });
	}

	override all<T = unknown>(query: SQL): Promise<T[]> {
		const querySql = this.dialect.sqlToQuery(query);
		this.logger.logQuery(querySql.sql, querySql.params);

		return this.client.execute<T>(querySql.sql, querySql.params, { as: 'object' }).then((
			eQuery,
		) => eQuery.rows);
	}

	override async count(sql: SQL): Promise<number> {
		const res = await this.execute<{ rows: [{ count: string }] }>(sql);

		return Number(
			res['rows'][0]['count'],
		);
	}

	override transaction<T>(

Domain

Frequently Asked Questions

What is the PlanetscaleSession class?
PlanetscaleSession is a class in the drizzle-orm codebase, defined in drizzle-orm/src/planetscale-serverless/session.ts.
Where is PlanetscaleSession defined?
PlanetscaleSession is defined in drizzle-orm/src/planetscale-serverless/session.ts at line 118.

Analyze Your Own Codebase

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

Try Supermodel Free