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

withReplicas() — drizzle-orm Function Reference

Architecture documentation for the withReplicas() function in db.ts from the drizzle-orm codebase.

Entity Profile

Dependency Diagram

graph TD
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738["withReplicas()"]
  55a32696_6538_e52d_9dd2_18695934fe32["db.ts"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|defined in| 55a32696_6538_e52d_9dd2_18695934fe32
  d9537013_dc8d_a9d5_6b54_e1724abbdd2f["select()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| d9537013_dc8d_a9d5_6b54_e1724abbdd2f
  1a12f96f_7b6a_911e_9e6f_4669ecb64b4f["selectDistinct()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| 1a12f96f_7b6a_911e_9e6f_4669ecb64b4f
  7d0caa08_9013_3d08_d559_97226a65da99["update()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| 7d0caa08_9013_3d08_d559_97226a65da99
  62c45664_eb64_3a1d_8f7d_f6902281c37f["insert()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| 62c45664_eb64_3a1d_8f7d_f6902281c37f
  bb5b0e59_e8b3_8d1c_fe75_9eed0b8f371b["execute()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| bb5b0e59_e8b3_8d1c_fe75_9eed0b8f371b
  80122acc_0876_1ed2_a42b_578f382b11a7["transaction()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| 80122acc_0876_1ed2_a42b_578f382b11a7
  000b48d8_e365_427b_6fb5_c012ef49681f["$count()"]
  3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 -->|calls| 000b48d8_e365_427b_6fb5_c012ef49681f
  style 3d5d57d7_f20f_9ae1_9eba_ee85dbf56738 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

drizzle-orm/src/mysql-core/db.ts lines 493–537

export const withReplicas = <
	HKT extends MySqlQueryResultHKT,
	TPreparedQueryHKT extends PreparedQueryHKTBase,
	TFullSchema extends Record<string, unknown>,
	TSchema extends TablesRelationalConfig,
	Q extends MySqlDatabase<
		HKT,
		TPreparedQueryHKT,
		TFullSchema,
		TSchema extends Record<string, unknown> ? ExtractTablesWithRelations<TFullSchema> : TSchema
	>,
>(
	primary: Q,
	replicas: [Q, ...Q[]],
	getReplica: (replicas: Q[]) => Q = () => replicas[Math.floor(Math.random() * replicas.length)]!,
): MySQLWithReplicas<Q> => {
	const select: Q['select'] = (...args: []) => getReplica(replicas).select(...args);
	const selectDistinct: Q['selectDistinct'] = (...args: []) => getReplica(replicas).selectDistinct(...args);
	const $count: Q['$count'] = (...args: [any]) => getReplica(replicas).$count(...args);
	const $with: Q['with'] = (...args: []) => getReplica(replicas).with(...args);

	const update: Q['update'] = (...args: [any]) => primary.update(...args);
	const insert: Q['insert'] = (...args: [any]) => primary.insert(...args);
	const $delete: Q['delete'] = (...args: [any]) => primary.delete(...args);
	const execute: Q['execute'] = (...args: [any]) => primary.execute(...args);
	const transaction: Q['transaction'] = (...args: [any, any]) => primary.transaction(...args);

	return {
		...primary,
		update,
		insert,
		delete: $delete,
		execute,
		transaction,
		$primary: primary,
		$replicas: replicas,
		select,
		selectDistinct,
		$count,
		with: $with,
		get query() {
			return getReplica(replicas).query;
		},
	};
};

Domain

Subdomains

Frequently Asked Questions

What does withReplicas() do?
withReplicas() is a function in the drizzle-orm codebase, defined in drizzle-orm/src/mysql-core/db.ts.
Where is withReplicas() defined?
withReplicas() is defined in drizzle-orm/src/mysql-core/db.ts at line 493.
What does withReplicas() call?
withReplicas() calls 7 function(s): $count, execute, insert, select, selectDistinct, transaction, update.

Analyze Your Own Codebase

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

Try Supermodel Free