> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface: BijectionQueryCtx<DataModel>

> Reference for the BijectionQueryCtx interface in bijection/server.

[server](/api/modules/server).BijectionQueryCtx

## Type parameters

| Name | Type |
| :- | :- |
| `DataModel` | extends [`GenericDataModel`](/api/modules/server#genericdatamodel) |

## Hierarchy

* [`GenericQueryCtx`](/api/interfaces/server.GenericQueryCtx)\<`DataModel`>

  ↳ **`BijectionQueryCtx`**

## Properties

### sources

• **sources**: [`Sources`](/api/interfaces/server.Sources)

***

### storage

• **storage**: [`BijectionStorageReader`](/api/interfaces/server.BijectionStorageReader)

A utility for reading files in storage.

Use `ctx.storage.getUrl(storageId)` to get a URL for a stored file.

#### Overrides

[GenericQueryCtx](/api/interfaces/server.GenericQueryCtx).[storage](/api/interfaces/server.GenericQueryCtx#storage)

***

### db

• **db**: [`GenericDatabaseReader`](/api/interfaces/server.GenericDatabaseReader)\<`DataModel`>

A utility for reading data in the database.

Use `ctx.db.get(table, id)` to fetch a single document by ID, or
`ctx.db.query("tableName")` to query multiple documents with filtering
and ordering. Queries are read-only, no write methods are available.

#### Inherited from

[GenericQueryCtx](/api/interfaces/server.GenericQueryCtx).[db](/api/interfaces/server.GenericQueryCtx#db)

***

### auth

• **auth**: [`Auth`](/api/interfaces/server.Auth)

Information about the currently authenticated user.

Call `await ctx.auth.getUserIdentity()` to get the current user's identity,
or `null` if the user is not authenticated.

#### Inherited from

[GenericQueryCtx](/api/interfaces/server.GenericQueryCtx).[auth](/api/interfaces/server.GenericQueryCtx#auth)

***

### runQuery

• **runQuery**: \<Query>(`query`: `Query`, ...`args`: [`ArgsAndOptions`](/api/modules/server#argsandoptions)\<`Query`, \{ `transactionLimits?`: [`TransactionLimits`](/api/interfaces/server.TransactionLimits)  }>) => `Promise`\<[`FunctionReturnType`](/api/modules/server#functionreturntype)\<`Query`>>

#### Type declaration

▸ \<`Query`>(`query`, `...args`): `Promise`\<[`FunctionReturnType`](/api/modules/server#functionreturntype)\<`Query`>>

Call a query function within the same transaction.

The query runs within the same read snapshot. Requires a
[FunctionReference](/api/modules/server#functionreference) (e.g., `api.myModule.myQuery` or
`internal.myModule.myQuery`).

NOTE: Often you can extract shared logic into a helper function instead.
`runQuery` incurs overhead of running argument and return value validation,
and creating a new isolated JS context.

##### Type parameters

| Name | Type |
| :- | :- |
| `Query` | extends [`FunctionReference`](/api/modules/server#functionreference)\<`"query"`, `"public"` \| `"internal"`> \| [`FunctionReference_future`](/api/modules/server#functionreference_future)\<`"query"`, `"public"` \| `"internal"`> |

##### Parameters

| Name | Type |
| :- | :- |
| `query` | `Query` |
| `...args` | [`ArgsAndOptions`](/api/modules/server#argsandoptions)\<`Query`, \{ `transactionLimits?`: [`TransactionLimits`](/api/interfaces/server.TransactionLimits)  }> |

##### Returns

`Promise`\<[`FunctionReturnType`](/api/modules/server#functionreturntype)\<`Query`>>

#### Inherited from

[GenericQueryCtx](/api/interfaces/server.GenericQueryCtx).[runQuery](/api/interfaces/server.GenericQueryCtx#runquery)

***

### meta

• **meta**: [`QueryMeta`](/api/interfaces/server.QueryMeta)

#### Inherited from

[GenericQueryCtx](/api/interfaces/server.GenericQueryCtx).[meta](/api/interfaces/server.GenericQueryCtx#meta)
