@tanstack/angular-db
Version:
Angular integration for @tanstack/db
69 lines (68 loc) • 4.18 kB
text/typescript
import { Collection, CollectionStatus, Context, GetResult, InferResultType, InitialQueryBuilder, LiveQueryCollectionConfig, NonSingleResult, QueryBuilder, SingleResult } from '@tanstack/db';
import { Signal } from '@angular/core';
export * from '@tanstack/db';
/**
* The result of calling `injectLiveQuery`.
* Contains reactive signals for the query state and data.
*/
export interface InjectLiveQueryResult<TContext extends Context> {
/** A signal containing the complete state map of results keyed by their ID */
state: Signal<Map<string | number, GetResult<TContext>>>;
/** A signal containing the results as an array, or single result for findOne queries */
data: Signal<InferResultType<TContext>>;
/** A signal containing the underlying collection instance (null for disabled queries) */
collection: Signal<Collection<GetResult<TContext>, string | number, {}> | null>;
/** A signal containing the current status of the collection */
status: Signal<CollectionStatus | `disabled`>;
/** A signal indicating whether the collection is currently loading */
isLoading: Signal<boolean>;
/** A signal indicating whether the collection is ready */
isReady: Signal<boolean>;
/** A signal indicating whether the collection is idle */
isIdle: Signal<boolean>;
/** A signal indicating whether the collection has an error */
isError: Signal<boolean>;
/** A signal indicating whether the collection has been cleaned up */
isCleanedUp: Signal<boolean>;
}
export interface InjectLiveQueryResultWithCollection<TResult extends object = any, TKey extends string | number = string | number, TUtils extends Record<string, any> = {}> {
state: Signal<Map<TKey, TResult>>;
data: Signal<Array<TResult>>;
collection: Signal<Collection<TResult, TKey, TUtils> | null>;
status: Signal<CollectionStatus | `disabled`>;
isLoading: Signal<boolean>;
isReady: Signal<boolean>;
isIdle: Signal<boolean>;
isError: Signal<boolean>;
isCleanedUp: Signal<boolean>;
}
export interface InjectLiveQueryResultWithSingleResultCollection<TResult extends object = any, TKey extends string | number = string | number, TUtils extends Record<string, any> = {}> {
state: Signal<Map<TKey, TResult>>;
data: Signal<TResult | undefined>;
collection: Signal<(Collection<TResult, TKey, TUtils> & SingleResult) | null>;
status: Signal<CollectionStatus | `disabled`>;
isLoading: Signal<boolean>;
isReady: Signal<boolean>;
isIdle: Signal<boolean>;
isError: Signal<boolean>;
isCleanedUp: Signal<boolean>;
}
export declare function injectLiveQuery<TContext extends Context, TParams extends any>(options: {
params: () => TParams;
query: (args: {
params: TParams;
q: InitialQueryBuilder;
}) => QueryBuilder<TContext>;
}): InjectLiveQueryResult<TContext>;
export declare function injectLiveQuery<TContext extends Context, TParams extends any>(options: {
params: () => TParams;
query: (args: {
params: TParams;
q: InitialQueryBuilder;
}) => QueryBuilder<TContext> | undefined | null;
}): InjectLiveQueryResult<TContext>;
export declare function injectLiveQuery<TContext extends Context>(queryFn: (q: InitialQueryBuilder) => QueryBuilder<TContext>): InjectLiveQueryResult<TContext>;
export declare function injectLiveQuery<TContext extends Context>(queryFn: (q: InitialQueryBuilder) => QueryBuilder<TContext> | undefined | null): InjectLiveQueryResult<TContext>;
export declare function injectLiveQuery<TContext extends Context>(config: LiveQueryCollectionConfig<TContext>): InjectLiveQueryResult<TContext>;
export declare function injectLiveQuery<TResult extends object, TKey extends string | number, TUtils extends Record<string, any>>(liveQueryCollection: Collection<TResult, TKey, TUtils> & NonSingleResult): InjectLiveQueryResultWithCollection<TResult, TKey, TUtils>;
export declare function injectLiveQuery<TResult extends object, TKey extends string | number, TUtils extends Record<string, any>>(liveQueryCollection: Collection<TResult, TKey, TUtils> & SingleResult): InjectLiveQueryResultWithSingleResultCollection<TResult, TKey, TUtils>;