One or more non-transitory, computer-readable media at least collectively storing instructions executable by a processor of a computing system, the instructions comprising instructions to:
- generate a GraphQL schema that describes tables and fields of a database;
- receive, from a client device associated with a user, a request to receive the GraphQL schema;
- in response to receiving the request:
- determine, within an access control list (ACL), a corresponding set of the tables and fields of the database that the user is authorized to access,
- generate partial GraphQL schema from the GraphQL schema, wherein the partial GraphQL schema only describes the corresponding set of tables and fields that the user is authorized to access, and
- output the partial GraphQL schema to the client device for local introspection of the partial GraphQL schema as the user defines a multistep GraphQL query;
- receive, from the client device, a second request that includes the multistep GraphQL query;
- and
- process the multistep GraphQL query based on the partial GraphQL schema to generate a GraphQL result in at least one memory of the computing system, wherein processing comprises executing an outer portion of the multi-step GraphQL query to retrieve a set of records from the tables and fields described by the partial GraphQL schema, wherein, for each record of the set of records that is retrieved by the outer portion of the multi-step GraphQL query, an inner portion of the multi-step GraphQL query is generated and executed using data of the record, and wherein the GraphQL result is streamed to the client device as it is generated, and wherein portions of the at least one memory storing the GraphQL result are released for reallocation as the GraphQL result is streamed to the client device.