Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Generate table selection schema both for ordinary Hasura-type and relay-type queries. All schema with "relay" or "connection" in the name is used exclusively by relay.
Synopsis
- defaultSelectTable :: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> Name -> Maybe Description -> SchemaT r m (Maybe (FieldParser n (SelectExp b)))
- selectTableConnection :: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b, AggregationPredicatesSchema b) => TableInfo b -> Name -> Maybe Description -> PrimaryKeyColumns b -> SchemaT r m (Maybe (FieldParser n (ConnectionSelectExp b)))
- selectTableByPk :: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> Name -> Maybe Description -> SchemaT r m (Maybe (FieldParser n (SelectExp b)))
- defaultSelectTableAggregate :: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> Name -> Maybe Description -> SchemaT r m (Maybe (FieldParser n (AggSelectExp b)))
- defaultTableSelectionSet :: forall b r m n. (AggregationPredicatesSchema b, BackendTableSelectSchema b, Eq (AnnBoolExp b (UnpreparedValue b)), MonadBuildSchema b r m n) => TableInfo b -> SchemaT r m (Maybe (Parser 'Output n (AnnotatedFields b)))
- tableSelectionList :: (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> SchemaT r m (Maybe (Parser 'Output n (AnnotatedFields b)))
- tableConnectionSelectionSet :: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> SchemaT r m (Maybe (Parser 'Output n (ConnectionFields b)))
- defaultTableArgs :: forall b r m n. (MonadBuildSchema b r m n, AggregationPredicatesSchema b) => TableInfo b -> SchemaT r m (InputFieldsParser n (SelectArgs b))
- tableWhereArg :: forall b r m n. (AggregationPredicatesSchema b, MonadBuildSchema b r m n) => TableInfo b -> SchemaT r m (InputFieldsParser n (Maybe (AnnBoolExp b (UnpreparedValue b))))
- tableOrderByArg :: forall b r m n. MonadBuildSchema b r m n => TableInfo b -> SchemaT r m (InputFieldsParser n (Maybe (NonEmpty (AnnotatedOrderByItemG b (UnpreparedValue b)))))
- tableDistinctArg :: forall b r m n. MonadBuildSchema b r m n => TableInfo b -> SchemaT r m (InputFieldsParser n (Maybe (NonEmpty (AnnDistinctColumn b (UnpreparedValue b)))))
- tableLimitArg :: forall n. MonadParse n => InputFieldsParser n (Maybe Int)
- tableOffsetArg :: forall n. MonadParse n => InputFieldsParser n (Maybe Int64)
- tableConnectionArgs :: forall b r m n. (MonadBuildSchema b r m n, AggregationPredicatesSchema b) => PrimaryKeyColumns b -> TableInfo b -> SelPermInfo b -> SchemaT r m (InputFieldsParser n (SelectArgs b, Maybe (NonEmpty (ConnectionSplit b (UnpreparedValue b))), Maybe ConnectionSlice))
- tableAggregationFields :: forall b r m n. MonadBuildSchema b r m n => TableInfo b -> SchemaT r m (Parser 'Output n (AggregateFields b (UnpreparedValue b)))
- defaultArgsParser :: forall b r m n. MonadBuildSchema b r m n => InputFieldsParser n (Maybe (AnnBoolExp b (UnpreparedValue b))) -> InputFieldsParser n (Maybe (NonEmpty (AnnotatedOrderByItemG b (UnpreparedValue b)))) -> InputFieldsParser n (Maybe (NonEmpty (AnnDistinctColumn b (UnpreparedValue b)))) -> SchemaT r m (InputFieldsParser n (SelectArgs b))
- tablePermissionsInfo :: Backend b => SelPermInfo b -> TablePerms b
Documentation
:: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) | |
=> TableInfo b | table info |
-> Name | field display name |
-> Maybe Description | field description, if any |
-> SchemaT r m (Maybe (FieldParser n (SelectExp b))) |
Simple table selection.
The field for the table accepts table selection arguments, and expects a selection of fields
table_name(limit: 10) { col1: col1_type col2: col2_type }: [table!]!
selectTableConnection Source #
:: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b, AggregationPredicatesSchema b) | |
=> TableInfo b | table info |
-> Name | field display name |
-> Maybe Description | field description, if any |
-> PrimaryKeyColumns b | primary key columns |
-> SchemaT r m (Maybe (FieldParser n (ConnectionSelectExp b))) |
Simple table connection selection.
The field for the table accepts table connection selection argument, and expects a selection of connection fields
table_name_connection(first: 1) { pageInfo: { hasNextPage: Boolean! endCursor: String! } edges: { cursor: String! node: { id: ID! col1: col1_type col2: col2_type } } }: table_nameConnection!
:: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) | |
=> TableInfo b | table info |
-> Name | field display name |
-> Maybe Description | field description, if any |
-> SchemaT r m (Maybe (FieldParser n (SelectExp b))) |
Table selection by primary key.
table_name(id: 42) { col1: col1_type col2: col2_type }: table
Returns Nothing if there's nothing that can be selected with current permissions or if there are primary keys the user doesn't have select permissions for.
defaultSelectTableAggregate Source #
:: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) | |
=> TableInfo b | table info |
-> Name | field display name |
-> Maybe Description | field description, if any |
-> SchemaT r m (Maybe (FieldParser n (AggSelectExp b))) |
Table aggregation selection
Parser for an aggregation selection of a table. > table_aggregate(limit: 10) { > aggregate: table_aggregate_fields > group_by(...): table_group_by > nodes: [table!]! > } :: table_aggregate!
Returns Nothing if there's nothing that can be selected with current permissions.
defaultTableSelectionSet :: forall b r m n. (AggregationPredicatesSchema b, BackendTableSelectSchema b, Eq (AnnBoolExp b (UnpreparedValue b)), MonadBuildSchema b r m n) => TableInfo b -> SchemaT r m (Maybe (Parser 'Output n (AnnotatedFields b))) Source #
Fields of a table
type table{ # table columns column_1: column1_type . column_n: columnn_type # table relationships object_relationship: remote_table array_relationship: [remote_table!]! # computed fields computed_field: field_type # remote relationships remote_field: field_type }
tableSelectionList :: (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> SchemaT r m (Maybe (Parser 'Output n (AnnotatedFields b))) Source #
List of table fields object.
Just a nonNullableObjectList
wrapper over tableSelectionSet
.
> table_name: [table!]!
tableConnectionSelectionSet :: forall b r m n. (MonadBuildSchema b r m n, BackendTableSelectSchema b) => TableInfo b -> SchemaT r m (Maybe (Parser 'Output n (ConnectionFields b))) Source #
Connection fields of a table
type tableConnection{ pageInfo: PageInfo! edges: [tableEdge!]! }
type PageInfo{ startCursor: String! endCursor: String! hasNextPage: Boolean! hasPreviousPage: Boolean! }
type tableEdge{ cursor: String! node: table! }
defaultTableArgs :: forall b r m n. (MonadBuildSchema b r m n, AggregationPredicatesSchema b) => TableInfo b -> SchemaT r m (InputFieldsParser n (SelectArgs b)) Source #
Arguments for a table selection. Default implementation for BackendSchema.
distinct_on: [table_select_column!] limit: Int offset: Int order_by: [table_order_by!] where: table_bool_exp
tableWhereArg :: forall b r m n. (AggregationPredicatesSchema b, MonadBuildSchema b r m n) => TableInfo b -> SchemaT r m (InputFieldsParser n (Maybe (AnnBoolExp b (UnpreparedValue b)))) Source #
Argument to filter rows returned from table selection > where: table_bool_exp
tableOrderByArg :: forall b r m n. MonadBuildSchema b r m n => TableInfo b -> SchemaT r m (InputFieldsParser n (Maybe (NonEmpty (AnnotatedOrderByItemG b (UnpreparedValue b))))) Source #
Argument to sort rows returned from table selection > order_by: [table_order_by!]
tableDistinctArg :: forall b r m n. MonadBuildSchema b r m n => TableInfo b -> SchemaT r m (InputFieldsParser n (Maybe (NonEmpty (AnnDistinctColumn b (UnpreparedValue b))))) Source #
Argument to distinct select on columns returned from table selection > distinct_on: [table_select_column!]
tableLimitArg :: forall n. MonadParse n => InputFieldsParser n (Maybe Int) Source #
Argument to limit rows returned from table selection > limit: NonNegativeInt
tableOffsetArg :: forall n. MonadParse n => InputFieldsParser n (Maybe Int64) Source #
Argument to skip some rows, in conjunction with order_by > offset: BigInt
tableConnectionArgs :: forall b r m n. (MonadBuildSchema b r m n, AggregationPredicatesSchema b) => PrimaryKeyColumns b -> TableInfo b -> SelPermInfo b -> SchemaT r m (InputFieldsParser n (SelectArgs b, Maybe (NonEmpty (ConnectionSplit b (UnpreparedValue b))), Maybe ConnectionSlice)) Source #
Arguments for a table connection selection
distinct_on: [table_select_column!] order_by: [table_order_by!] where: table_bool_exp first: Int last: Int before: String after: String
tableAggregationFields :: forall b r m n. MonadBuildSchema b r m n => TableInfo b -> SchemaT r m (Parser 'Output n (AggregateFields b (UnpreparedValue b))) Source #
Aggregation fields
type table_aggregate_fields{ count(distinct: Boolean, columns: [table_select_column!]): Int! sum: table_sum_fields avg: table_avg_fields stddev: table_stddev_fields stddev_pop: table_stddev_pop_fields variance: table_variance_fields var_pop: table_var_pop_fields max: table_max_fields min: table_min_fields }
defaultArgsParser :: forall b r m n. MonadBuildSchema b r m n => InputFieldsParser n (Maybe (AnnBoolExp b (UnpreparedValue b))) -> InputFieldsParser n (Maybe (NonEmpty (AnnotatedOrderByItemG b (UnpreparedValue b)))) -> InputFieldsParser n (Maybe (NonEmpty (AnnDistinctColumn b (UnpreparedValue b)))) -> SchemaT r m (InputFieldsParser n (SelectArgs b)) Source #
shared implementation between tables and logical models
tablePermissionsInfo :: Backend b => SelPermInfo b -> TablePerms b Source #