SqlResolver
Other
Signature
declare function void<T extends string, I, II, RI, E, R = never>(tag: T, options: {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<unknown>, E>;
readonly Request: any;
readonly withContext?: false;
} | {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<unknown, E, R>;
readonly Request: any;
readonly withContext: true;
}): Effect<SqlResolver<T, I, void, E, RI>, never, R>Requests
SqlRequest interface
Added in v1.0.0
Source
Signature
interface SqlRequest<T extends string, A, E> extends Request<A, E | ParseError> {
readonly _tag: T;
readonly encoded: unknown;
readonly input: unknown;
readonly spanLink: SpanLink;
}Resolvers
Signature
declare function findById<T extends string, I, II, RI, A, IA, Row, E, RA = never, R = never>(tag: T, options: {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<Row>, E>;
readonly Id: any;
readonly Result: any;
readonly ResultId: (result: NoInfer<A>, row: NoInfer<Row>) => I;
readonly withContext?: false;
} | {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<Row>, E, R>;
readonly Id: any;
readonly Result: any;
readonly ResultId: (result: NoInfer<A>, row: NoInfer<Row>) => I;
readonly withContext: true;
}): Effect<SqlResolver<T, I, Option<A>, E, RI>, never, RA | R>Create a resolver the can return multiple results for a single request.
Results are grouped by a common key extracted from the request and result.
Signature
declare function grouped<T extends string, I, II, K, RI, A, IA, Row, E, RA = never, R = never>(tag: T, options: {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<Row>, E>;
readonly Request: any;
readonly RequestGroupKey: (request: NoInfer<I>) => K;
readonly Result: any;
readonly ResultGroupKey: (result: NoInfer<A>, row: NoInfer<Row>) => K;
readonly withContext?: false;
} | {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<Row>, E, R>;
readonly Request: any;
readonly RequestGroupKey: (request: NoInfer<I>) => K;
readonly Result: any;
readonly ResultGroupKey: (result: NoInfer<A>, row: NoInfer<Row>) => K;
readonly withContext: true;
}): Effect<SqlResolver<T, I, Array<A>, E, RI>, never, RA | R>Create a resolver for a sql query with a request schema and a result schema.
The request schema is used to validate the input of the query. The result schema is used to validate the output of the query.
Results are mapped to the requests in order, so the length of the results must match the length of the requests.
Signature
declare function ordered<T extends string, I, II, RI, A, IA, _, E, RA = never, R = never>(tag: T, options: {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<_>, E>;
readonly Request: any;
readonly Result: any;
readonly withContext?: false;
} | {
readonly execute: (requests: Array<NoInfer<II>>) => Effect<readonly Array<_>, E, R>;
readonly Request: any;
readonly Result: any;
readonly withContext: true;
}): Effect<SqlResolver<T, I, A, ResultLengthMismatch | E, RI>, never, RA | R>SqlResolver interface
Added in v1.0.0
Source
Signature
interface SqlResolver<T extends string, I, A, E, R> extends RequestResolver<SqlRequest<T, A, E>> {
readonly cacheInvalidate: (id: I) => Effect<void>;
readonly cachePopulate: (id: I, result: A) => Effect<void>;
readonly execute: (input: I) => Effect<A, any, R>;
readonly makeExecute: (
resolver: RequestResolver<SqlRequest<T, A, E>>,
) => (input: I) => Effect<A, any, R>;
readonly request: (input: I) => Effect<SqlRequest<T, A, E>, ParseError, R>;
}
Create a resolver that resolves results by id.