h$O}B      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                              Safe-Inferred PostgREST common types and functions used by the rest of the modules Safe-Inferred #  postgrestjspath expression, e.g. .property, .property[0] or ."property-dash" postgrest*full jspath, e.g. .property[0].attr.detailNone 8:   postgrestTells the minimum PostgreSQL version required by this version of PostgREST  None Proxy Uri validator Safe-Inferred 5  postgrestTest whether a proxy uri is malformed or not. A valid proxy uri should be an absolute uri without query and user info, only http(s) schemes are valid, port number range is 1-65535.For example  !http://postgrest.com/openapi.json 'https://postgrest.com:8080/openapi.json ! !None #" postgrest9Enumeration of currently supported response content types, postgrest.Convert from ContentType to a full HTTP Header- postgrestConvert from ContentType to a ByteString representing the mime type. postgrestConvert from ByteString to ContentType. Warning: discards MIME parameters "#$%&'()*+,-. "#$%&'()*+,-.None 8:p3 postgrestRepresents a pg identifier with a prepended schema name "schema.table". When qiSchema is "", the schema is defined by the pg search_path.01234567345621070Manages PostgREST configuration type and parser.None #$>?i postgrestDump the configj postgrestReads and parses the config and overrides its parameters from env vars, files or db settings.l postgrest1Read environment variables that start with PGRST_: !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl:IJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh?DEFGH@ABCi jl!kNone 8:r postgrestA map of all procs, all of which can be overloaded(one entry will have more than one ProcDescription). | It uses a HashMap for a faster lookup. postgrestSearch the procedure parameters by matching them with the specified keys. If the key doesn't match a parameter, a parameter with a default type "text" is assumed.rstuvwxyz{|~}stuvwxyz{|~}r None 8: None 8: postgrest%Junction table on an M2M relationship postgrest The relationship cardinality |  9https://en.wikipedia.org/wiki/Cardinality_(data_modeling) TODO: missing one-to-one postgrestone-to-many cardinality postgrestmany-to-one cardinality postgrestmany-to-many cardinality postgrest Relationship between two tables.The order of the relColumns and relForeignColumns should be maintained to get the join conditions right.TODO merge relColumns and relForeignColumns to a tuple or Data.Bimap PostgREST schema cacheNone  #$%8:>?A   None #$n postgrestLog to stderr with local time postgrestAs this IO action uses ' internally, it will only return once  has been set using 0. This is currently used to syncronize workers. PostgREST error HTTP responsesNone #$  "PostgREST authorization functions.None #$z postgrestReceives the JWT secret and audience (from config) and a JWT and returns a map of JWT claims. postgrest7Whether a response from jwtClaims contains a role claimNone  postgrestCustom guc header, it's obtained by parsing the json in a: `SET LOCAL "response.headers" = '[{"Set-Cookie": ".."}]' postgrestAdd headers not already included to allow the user to override them instead of duplicating themLogic regarding the `Content-Range` headers and limitoffset querystring arguments.None .   Safe-Inferred _  postgrestexact count(slower) postgrestPostgreSQL query planner rows count guess. Done by using EXPLAIN {query}. postgrestuse the query planner rows if the count is superior to max-rows, otherwise get the exact count. postgrestPass all parameters as a single json object to a stored procedure postgrest=Pass an array of json objects as params to a stored procedure postgrest%How to return the mutated data. From /https://tools.ietf.org/html/rfc7240#section-4.2 postgrest:Return the body plus the Location header(in case of POST). postgrestReturn the Location header(in case of POST). This needs a SELECT privilege on the pk. postgrest%Return nothing from the mutated data.None #$  postgrestRepresents a list value in a filter, e.g. id=in.(val1,val2,val3) postgrest;Represents a single value in a filter, e.g. id=eq.singleval postgrestBoolean logic expression tree e.g. "and(name.eq.N,or(id.eq.1,id.eq.2))" is:And / name.eq.N Or / id.eq.1 id.eq.2 postgrestRepresents the key(->key'`) or index(->1`::int`), the index is Text because we reuse our escaping functons and let pg do the casting with '1'::int postgrestRepresents the single arrow -> or double arrow ->> operators postgrest&Json path operations as specified in https://www.postgresql.org/docs/current/static/functions-json.html postgrestPath of the embedded levels, e.g "clients.projects.name=eq.." gives Path ["clients", "projects"] postgrestDisambiguates an embedding operation when there's multiple relationships between two tables. Can be the name of a foreign key constraint, column name or the junction in an m2m relationship. postgrest3The select value in `/tbl?select=alias:field::cast` postgrest+A table alias is used in case of self joins postgrestOnly used for Many to Many joins. Parent and Child joins use explicit joins.,Helper functions for PostgREST.QueryBuilder.None (] postgrest;A part of a SQL query that cannot be executed independently postgrestThese CTEs convert a json object into a json array, this way we can use json_populate_recordset for all json payloads Otherwise we'd have to use json_populate_record for json objects and json_populate_recordset for json arrays We do this in SQL to avoid processing the JSON in application code postgrestEquivalent to "$1::json" | TODO: At this stage there shouldn't be a Maybe since ApiRequest should ensure that an INSERT/UPDATE has a bodyPostgREST parser combinatorsNone )PostgREST functions to translate HTTP request to a domain type called ApiRequest.None #$%3 postgrestDescribes what the user wants to do. This data type is a translation of the raw elements of an HTTP request into domain specific language. There is no guarantee that the intent is sensible, it is up to a later stage of processing to determine if it is an action we are able to perform. postgrestSimilar but not identical to HTTP verb, e.g. Create/Invoke both POST postgrest'Requested range of rows within response postgrest*Requested range of rows from the top level postgrest5The target, be it calling a proc or accessing a table postgrest1Data sent by client and used for mutation actions postgrest)If client wants created items echoed back postgrest,How to pass parameters to a stored procedure postgrest'Whether the client wants a result count postgrestWhether the client wants to UPSERT or ignore records on PK conflict postgrest?Whether the clients wants to commit or rollback the transaction postgrest%Filters on the result ("id", "eq.10") postgrest6&and and &or parameters used for complex boolean logic postgrest,&select parameter used to shape the response postgrest=&on_conflict parameter used to upsert on specific unique keys postgrest1parsed colums from &columns parameter and payload postgrest &order parameters for each level postgrest?Alphabetized (canonical) request query string for response URLs postgrestJSON Web Token postgrestHTTP request headers postgrestRequest Cookies postgrestRaw request path postgrestRaw request method postgrestThe request profile for enabling use of multiple schemas. Follows the spec in hhttps:/ www.w3.orgTRdx-prof-connegttps:/ www.w3.orgTRdx-prof-conneg. postgrest3The request schema. Can vary depending on iProfile. postgrest%The target db object of a user action postgrest,Types of things a user wants to do to tablesviewsprocs postgrest#Cached attributes of a JSON payload postgrestThis is the raw ByteString that comes from the request body. We cache this instead of an Aeson Value because it was detected that for large payloads the encoding had high memory usage, see  0https://github.com/PostgREST/postgrest/pull/1005 for more details postgrestKeys of the object or if it's an array these keys are guaranteed to be the same across all its objects postgrest9Examines HTTP request and translates it into user intent."#$%&'()*+"#$%&'()*+"PostgREST database request builderNone #$%5 postgrestBuilds the ReadRequest tree on a number of stages. | Adds filters, order, limits on its respective nodes. | Adds joins conditions obtained from resource embedding. PostgREST single SQL statements.None 5Sets CORS policy. Also the PostgreSQL GUCs, role, search_path and pre-request function.None #$9 postgrestRuns local(transaction scoped) GUCs for every request, plus the pre-request function postgrestLog in apache format. Only requests that have a status greater than minStatus are logged. | There's no way to filter logs in the apache format on wai-extra:  https://hackage.haskell.org/package/wai-extra-3.0.29.2/docs/Network-Wai-Middleware-RequestLogger.html#t:OutputFormat.6 | So here we copy wai-logger apacheLogStr function:  https://github.com/kazu-yamamoto/logger/blob/a4f51b909a099c51af7a3f75cf16e19a06f9e257/wai-logger/Network/Wai/Logger/Apache.hs#L45 | TODO: Add the ability to filter apache logs on wai-extra and remove this function. postgrest0CORS policy to be used in by Wai Cors middleware postgrestSet a transaction to eventually roll back if requested and set respective headers on the response.+PostgREST SQL queries generating functions.None #;l postgrestSQL query meant for COUNTing the root node of the Tree. It only takes WHERE into account and doesn't include LIMIT/OFFSET because it would reduce the COUNT. SELECT 1 is done instead of SELECT * to prevent doing expensive operations(like functions based on the columns) inside the FROM target.None ; postgrestUser friendly version number postgrestVersion number used in docsGenerates the OpenAPI outputNone #$%?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`abcdefgghijklmnopqrstuvwxyz{|}~                                                                                                                                                     &postgrest-8.0.0-4wwkfqOKlk5GjHJ3yFP36oPostgREST.Config.JSPathPostgREST.Config.PgVersionPostgREST.Config.DatabasePostgREST.Config.ProxyPostgREST.ContentType!PostgREST.DbStructure.IdentifiersPostgREST.ConfigPostgREST.DbStructure.ProcPostgREST.DbStructure.Table"PostgREST.DbStructure.RelationshipPostgREST.DbStructurePostgREST.AppStatePostgREST.ErrorPostgREST.AuthPostgREST.GucHeaderPostgREST.RangeQueryPostgREST.Request.PreferencesPostgREST.Request.TypesPostgREST.Query.SqlFragmentPostgREST.Request.ParsersPostgREST.Request.ApiRequest"PostgREST.Request.DbRequestBuilderPostgREST.Query.StatementsPostgREST.MiddlewarePostgREST.Query.QueryBuilderPostgREST.VersionPostgREST.OpenAPIPostgREST.WorkersPostgREST.Unix PostgREST.App PostgREST.CLIPaths_postgrest JSPathExpJSPKeyJSPIdxJSPath pRoleClaimKey$fShowJSPathExp PgVersionpgvNumpgvNameminimumPgVersion pgVersion95 pgVersion96 pgVersion100 pgVersion109 pgVersion110 pgVersion112 pgVersion114 pgVersion121 pgVersion130$fOrdPgVersion $fEqPgVersion$fGenericPgVersion$fToJSONPgVersionqueryPgVersionqueryDbSettingsProxy proxyScheme proxyHost proxyPort proxyPathisMalformedProxyUritoURI ContentTypeCTApplicationJSONCTSingularJSON CTTextCSV CTTextPlain CTOpenAPI CTUrlEncoded CTOctetStreamCTAnyCTOthertoHeadertoMimedecodeContentType$fEqContentType FieldName TableNameSchemaQualifiedIdentifierqiSchemaqiNametoQi$fShowQualifiedIdentifier$fHashableQualifiedIdentifier$fEqQualifiedIdentifier$fOrdQualifiedIdentifier$fGenericQualifiedIdentifier$fToJSONQualifiedIdentifier$fToJSONKeyQualifiedIdentifier Environment OpenAPIMode OAFollowPriv OAIgnorePriv OADisabledLogLevelLogCritLogErrorLogWarnLogInfo AppConfigconfigAppSettingsconfigDbAnonRoleconfigDbChannelconfigDbChannelEnabledconfigDbExtraSearchPathconfigDbMaxRowsconfigDbPoolSizeconfigDbPoolTimeoutconfigDbPreRequestconfigDbPreparedStatementsconfigDbRootSpecconfigDbSchemasconfigDbConfigconfigDbTxAllowOverrideconfigDbTxRollbackAll configDbUriconfigFilePath configJWKSconfigJwtAudienceconfigJwtRoleClaimKeyconfigJwtSecretconfigJwtSecretIsBase64configLogLevelconfigOpenApiModeconfigOpenApiServerProxyUriconfigRawMediaTypesconfigServerHostconfigServerPortconfigServerUnixSocketconfigServerUnixSocketModetoText readAppConfig parseSecretreadPGRSTEnvironment$fShowLogLevel$fShowOpenAPIMode$fJustIfMaybeaMaybe$fJustIfMaybeaa$fEqOpenAPIModeProcsMapProcDescriptionpdSchemapdName pdDescriptionpdArgs pdReturnType pdVolatility pdHasVariadicProcVolatilityVolatileStable ImmutableRetTypeSingleSetOfPgTypeScalar CompositePgArgpgaNamepgaTypepgaReqpgaVarspecifiedProcArgsprocReturnsScalarprocReturnsSingle procTableName$fOrdProcDescription$fEqProcDescription$fGenericProcDescription$fToJSONProcDescription$fEqProcVolatility$fOrdProcVolatility$fGenericProcVolatility$fToJSONProcVolatility $fEqRetType $fOrdRetType$fGenericRetType$fToJSONRetType $fEqPgType $fOrdPgType$fGenericPgType$fToJSONPgType $fEqPgArg $fOrdPgArg$fGenericPgArg $fToJSONPgArgColumncolTablecolNamecolDescription colNullablecolType colMaxLen colDefaultcolEnumTable tableSchema tableNametableDescriptiontableInsertabletableUpdatabletableDeletabletableQi $fEqTable $fEqColumn$fGenericPrimaryKey$fToJSONPrimaryKey $fOrdColumn$fGenericColumn$fToJSONColumn $fShowTable $fOrdTable$fGenericTable $fToJSONTable PrimaryKeypkTablepkNameJunctionjunTablejunConstraint1 junColumns1junConstraint2 junColumns2 CardinalityO2MM2OM2M RelationshiprelTable relColumnsrelForeignTablerelForeignColumnsrelCardinalityisSelfReference$fEqRelationship$fGenericRelationship$fToJSONRelationship$fEqCardinality$fGenericCardinality$fToJSONCardinality $fEqJunction$fGenericJunction$fToJSONJunction DbStructuredbTables dbColumnsdbRelationships dbPrimaryKeysdbProcs tableCols tablePKColsqueryDbStructureaccessibleProcsschemaDescriptionaccessibleTables$fGenericDbStructure$fToJSONDbStructureAppStateinit initWithPoolgetPool releasePool getPgVersion putPgVersiongetDbStructureputDbStructure getJsonDbS putJsonDbS getIsWorkerOn putIsWorkerOn getConfig putConfiggetTime logWithZTimegetMainThreadId waitListenersignalListenerErrorGucHeadersErrorGucStatusErrorBinaryFieldErrorConnectionLostErrorPutMatchingPkErrorPutRangeNotAllowedErrorJwtTokenMissingJwtTokenInvalidSingularityErrorNotFoundApiRequestErrorPgErrPgErrorActionInappropriate InvalidRange InvalidBodyParseRequestError NoRelBetweenAmbiguousRelBetween AmbiguousRpcNoRpcInvalidFiltersUnacceptableSchemaContentTypeErrorUnsupportedVerb errorPayloaderrorResponseFor checkIsFatalsingularityError$fToJSONCommandError$fToJSONQueryError$fToJSONUsageError$fToJSONApiRequestError$fPgrstErrorApiRequestError$fToJSONPgError$fPgrstErrorPgError $fToJSONError$fPgrstErrorError JWTClaims jwtClaims containsRole GucHeaderunwrapGucHeaderaddHeadersIfNotIncluded$fFromJSONGucHeader NonnegRange rangeParserangeRequested restrictRange rangeLimit rangeOffsetrangeGeqallRangerangeStatusHeader contentRangeHPreferTransactionCommitRollback PreferCount ExactCount PlannedCountEstimatedCountPreferParameters SingleObjectMultipleObjectsPreferRepresentationFull HeadersOnlyNonePreferResolutionMergeDuplicatesIgnoreDuplicates$fShowPreferResolution$fShowPreferRepresentation$fShowPreferParameters$fShowPreferCount$fShowPreferTransaction$fEqPreferTransaction$fEqPreferCount$fEqPreferParameters$fEqPreferRepresentationListVal SingleVal OperationOpInFtsOpExprFilter$sel:field:Filter$sel:opExpr:Filter LogicOperatorAndOr LogicTreeExprStmnt JsonOperandJKeyJIdx$sel:jVal:JKey JsonOperationJArrowJ2Arrow$sel:jOp:JArrowJsonPath EmbedPath EmbedHintAliasField SelectItem MutateQueryInsertUpdateDelete$sel:in_:Insert$sel:insCols:Insert$sel:insBody:Insert$sel:onConflict:Insert$sel:where_:Insert$sel:returning:Insert$sel:updCols:Insert$sel:updBody:Insert OrderNullsOrderNullsFirstOrderNullsLastOrderDirectionOrderAsc OrderDesc OrderTerm$sel:otTerm:OrderTerm$sel:otDirection:OrderTerm$sel:otNullOrder:OrderTerm JoinCondition ReadQuerySelect$sel:select:Select$sel:from:Select$sel:fromAlias:Select$sel:implicitJoins:Select$sel:where_:Select$sel:joinConditions:Select$sel:order:Select$sel:range_:SelectDepthNodeNameReadNode MutateRequest ReadRequest fstFieldNames$fShowOrderDirection$fShowOrderNulls$fShowLogicOperator $fEqReadQuery $fEqLogicTree $fEqFilter $fEqOpExpr $fEqOperation$fEqLogicOperator $fEqOrderTerm$fEqJsonOperation$fEqJsonOperand$fEqOrderNulls$fEqOrderDirection$fEqJoinCondition SqlFragment noLocationF sourceCTEName operators ftsOperatorsnormalizedBodyjsonPlaceHolder selectBody pgFmtIdentasCsvFasJsonF asJsonSingleF asBinaryF locationFfromQi pgFmtColumnpgFmtSelectItempgFmtOrderTermpgFmtJoinConditionpgFmtLogicTreecountF returningF limitOffsetFresponseHeadersFresponseStatusFunknownEncoderintercalateSnippetpRequestSelectpRequestOnConflictpRequestFilter pRequestOrder pRequestRangepRequestLogicTreepRequestColumns pTreePath pSingleValpOrder pOrderTerm pLogicTreepLogicSingleVal pLogicPathpColumns ApiRequestiActioniRangeiTopLevelRangeiTargetiPayloadiPreferRepresentationiPreferParameters iPreferCountiPreferResolutioniPreferTransactioniFiltersiLogiciSelect iOnConflictiColumnsiOrder iCanonicalQSiJWTiHeadersiCookiesiPathiMethodiProfileiSchemaiAcceptContentTypeTarget TargetIdent TargetProcTargetDefaultSpec TargetUnknowntProc tpIsRootSpec tdsSchemaAction ActionCreate ActionRead ActionUpdate ActionDeleteActionSingleUpsert ActionInvoke ActionInfo ActionInspectisHead InvokeMethodInvHeadInvGetInvPost PayloadJSON ProcessedJSONRawJSONpjRawpjKeysuserApiRequest$fToJSONRpcParamValue $fEqAction$fEqInvokeMethod readRequest mutateRequest returningColscreateWriteStatementcreateReadStatementcallProcStatementcreateExplainStatement runPgLocals pgrstFormatpgrstMiddlewaredefaultCorsPolicy corsPolicyoptionalRollbackreadRequestToQuerymutateRequestToQueryrequestToCallProcQueryreadRequestToCountQuery limitedQuery prettyVersion docsVersionencodeconnectionWorkerlistener reReadConfig$fEqConnectionStatusrunAppWithSocketinstallSignalHandlers SocketRunnerSignalHandlerInstallerrun postgrestCommandCmdRun CmdDumpConfig CmdDumpSchemaCLI cliCommandcliPathmainreadCLIShowHelpversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebaseGHC.MVartakeMVar stateListener(Ranged-sets-0.4.0-6IO3ocJrLq06bGsKhcY1IwData.Ranged.RangesRange