UNPKG

@squidcloud/client

Version:

A typescript implementation of the Squid client

61 lines (60 loc) 2.42 kB
import { DocumentData } from './document.public-types'; import { Alias, JoinCondition, Query } from './query.public-types'; /** * Represents a simple serialized query structure for database operations. * @category Database */ export type SerializedSimpleQuery = { /** Specifies that this is a simple query type. */ type: 'simple'; /** The query object defining the database operation. */ query: Query; /** Indicates whether references should be dereferenced during query execution. */ dereference: boolean; }; /** * Represents a serialized join query structure for database operations with multiple table relationships. * @category Database */ export type SerializedJoinQuery = { /** Specifies that this is a join query type. */ type: 'join'; /** Specifies if the results should be grouped by the root alias. */ grouped: boolean; /** Indicates whether references should be dereferenced during query execution. */ dereference: boolean; /** The root table configuration for the join operation. */ root: RootTableDetails; /** A mapping of aliases to their dependent aliases, defining the join order from left to right. */ leftToRight: Record<Alias, Alias[]>; /** A mapping of aliases to their corresponding queries for joined tables. */ joins: Record<Alias, Query<DocumentData>>; /** A mapping of aliases to their join conditions. */ joinConditions: Record<Alias, JoinCondition>; }; /** * Configuration details for the root table used in a join query. * The root table serves as the entry point for evaluating joined data across multiple tables. * @category Database */ export interface RootTableDetails { /** The alias for the root table in the join operation. */ alias: Alias; /** The query object defining the root table's operation. */ query: Query; } /** * Represents a serialized merged query structure combining multiple queries for database operations. * @category Database */ export type SerializedMergedQuery = { /** Specifies that this is a merged query type. */ type: 'merged'; /** An array of serialized queries to be merged. */ queries: Array<SerializedQuery>; }; /** * A union type representing all possible serialized query structures for database operations. * @category Database */ export type SerializedQuery = SerializedSimpleQuery | SerializedJoinQuery | SerializedMergedQuery;