# Nestjs-query - [Getting Started](https://nestjs-query.mintlify.app/introduction/getting-started.md): Nestjs-Query is collection of packages to make crud for (and potentially other transports) easier. - [Install](https://nestjs-query.mintlify.app/introduction/install.md) - [Example](https://nestjs-query.mintlify.app/introduction/example.md): Let's create a simple todo-item graphql example. - [DTOs](https://nestjs-query.mintlify.app/concepts/dtos.md): Throughout the documentation you will read about DTOs (Data Transfer Object). If you have never heard of a DTO before you can read about them - [Queries](https://nestjs-query.mintlify.app/concepts/queries.md): The core of is the , it is used by , , and . - [QueryService](https://nestjs-query.mintlify.app/concepts/services.md): The package defines a which is used to query and modify records. - [Assemblers](https://nestjs-query.mintlify.app/concepts/advanced/assemblers.md) - [Services](https://nestjs-query.mintlify.app/persistence/services.md): provides a common interface to use different ORMs in order to query and mutate your data. - [Getting Started](https://nestjs-query.mintlify.app/persistence/typeorm/getting-started.md) - [Custom Service](https://nestjs-query.mintlify.app/persistence/typeorm/custom-service.md) - [Multiple Databases](https://nestjs-query.mintlify.app/persistence/typeorm/multiple-databases.md) - [Soft Delete](https://nestjs-query.mintlify.app/persistence/typeorm/soft-delete.md) - [Testing Services](https://nestjs-query.mintlify.app/persistence/typeorm/testing-services.md) - [Getting Started](https://nestjs-query.mintlify.app/persistence/sequelize/getting-started.md) - [Custom Service](https://nestjs-query.mintlify.app/persistence/sequelize/custom-service.md) - [Serialization](https://nestjs-query.mintlify.app/persistence/sequelize/serialization.md) - [Getting Started](https://nestjs-query.mintlify.app/persistence/mongoose/getting-started.md) - [Relations](https://nestjs-query.mintlify.app/persistence/mongoose/relations.md) - [Custom Service](https://nestjs-query.mintlify.app/persistence/mongoose/custom-service.md) - [Serialization](https://nestjs-query.mintlify.app/persistence/mongoose/serialization.md) - [Getting Started](https://nestjs-query.mintlify.app/persistence/typegoose/getting-started.md) - [Relations](https://nestjs-query.mintlify.app/persistence/typegoose/relations.md) - [Custom Service](https://nestjs-query.mintlify.app/persistence/typegoose/custom-service.md) - [Serialization](https://nestjs-query.mintlify.app/persistence/typegoose/serialization.md) - [Query Helpers](https://nestjs-query.mintlify.app/utilities/query-helpers.md): The package provides a number of helper functions to transform or apply queries to a list of items. - [FAQ](https://nestjs-query.mintlify.app/faq.md) - [Contributing](https://nestjs-query.mintlify.app/contributing.md) - [v2.x.x to v3.x.x](https://nestjs-query.mintlify.app/migration-guides/v2.x.x-to-v3.x.x.md) - [v0.24.x to v0.25.x](https://nestjs-query.mintlify.app/migration-guides/v0.24.x-to-v0.25.x.md) - [v0.23.x to v0.24.x](https://nestjs-query.mintlify.app/migration-guides/v0.23.x-to-v0.24.x.md) - [v0.22.x to v0.23.x](https://nestjs-query.mintlify.app/migration-guides/v0.22.x-to-v0.23.x.md) - [v0.15.x to v0.16.x](https://nestjs-query.mintlify.app/migration-guides/v0.15.x-to-v0.16.x.md) - [v0.14.x to v0.15.x](https://nestjs-query.mintlify.app/migration-guides/v0.14.x-to-v0.15.x.md): In the the cursor connection type was updated to allow for enabling a field. When enabling this field needed to explicitly name each connection type to allow each relation connection to independently enable the field. - [v0.13.x to v0.14.x](https://nestjs-query.mintlify.app/migration-guides/v0.13.x-to-v0.14.x.md) - [v0.12.x to v0.13.x](https://nestjs-query.mintlify.app/migration-guides/v0.12.x-to-v0.13.x.md) - [v0.10.x to v0.11.x](https://nestjs-query.mintlify.app/migration-guides/v0.10.x-to-v0.11.x.md) - [v0.5.x to v0.6.x](https://nestjs-query.mintlify.app/migration-guides/v0.5.x-to-v0.6.x.md) - [Getting Started](https://nestjs-query.mintlify.app/graphql/getting-started.md): The package provided base and graphql type classes to make creating code-first graphql CRUD applications easy. - [DTOs](https://nestjs-query.mintlify.app/graphql/dtos.md): The package leverages most decorators from and , with the exception of . - [Dataloaders](https://nestjs-query.mintlify.app/graphql/dataloaders.md): Nestjs-query integrates a standard implementation of . Dataloaders are there to solve the . Sometimes the default implementation can fail, for example when asynchronous are used and the problem occurs again despite using dataloaders. Then it may be useful to configure the default implementation of… - [Endpoints](https://nestjs-query.mintlify.app/graphql/queries/endpoints.md) - [Filtering](https://nestjs-query.mintlify.app/graphql/queries/filtering.md) - [Paging](https://nestjs-query.mintlify.app/graphql/queries/paging.md) - [Sorting](https://nestjs-query.mintlify.app/graphql/queries/sorting.md) - [Mutations](https://nestjs-query.mintlify.app/graphql/mutations.md): The automatically exposes six mutation endpoints. The endpoints names will be derived from name provided to or the class name. - [Hooks](https://nestjs-query.mintlify.app/graphql/hooks.md): provides the following hooks that allow you to modify incoming requests. - [Authorization](https://nestjs-query.mintlify.app/graphql/authorization.md) - [Aggregations](https://nestjs-query.mintlify.app/graphql/aggregations.md): When aggregations are enabled will expose a new query that enables using the following common aggregations , , , , and . - [Subscriptions](https://nestjs-query.mintlify.app/graphql/subscriptions.md) - [Relations](https://nestjs-query.mintlify.app/graphql/relations.md): When using the you can specify relations that should be exposed for the DTO using the following decorators. - [Types](https://nestjs-query.mintlify.app/graphql/types.md): provides a number of types. Most will be automatically generated for you when you create a resolver. However, you can use many of the types in your own code for custom endpoints. - [Federation](https://nestjs-query.mintlify.app/graphql/federation.md): provides federation support, with the intention of helping to - [Getting Started](https://nestjs-query.mintlify.app/rest/getting-started.md): The package creates documented REST CRUD controllers on top of a . It provides DTO decorators, generated controllers, filtering, offset paging, hooks, authorization, and CSV export. - [DTOs](https://nestjs-query.mintlify.app/rest/dtos.md): REST DTOs describe response serialization, request validation, OpenAPI schemas, identifiers, and the fields accepted as filters. The decorators combine metadata from , , and . - [Controllers](https://nestjs-query.mintlify.app/rest/controllers.md) - [Endpoints](https://nestjs-query.mintlify.app/rest/queries/endpoints.md) - [Filtering](https://nestjs-query.mintlify.app/rest/queries/filtering.md) - [Paging and Sorting](https://nestjs-query.mintlify.app/rest/queries/paging.md) - [Mutations](https://nestjs-query.mintlify.app/rest/mutations.md): The generated controller provides create, update, and delete endpoints for a single record. Mutation bodies are ordinary JSON and are described in OpenAPI using the configured create and update DTOs. - [Hooks](https://nestjs-query.mintlify.app/rest/hooks.md): Hooks transform generated endpoint arguments before the query service is called. REST currently exposes , , and . A hook can be an inline function or an injectable class. - [Authorization](https://nestjs-query.mintlify.app/rest/authorization.md): Authorization filters restrict records before generated read, update, delete, and export operations reach the query service. Create authorization also runs, allowing the authorizer to reject a request. - [CSV Export](https://nestjs-query.mintlify.app/rest/export.md): Every includes a CSV endpoint at . It supports the same generated filters, search hook, authorization filter, default sorting, and soft-delete visibility options as collection reads. - [OpenAPI](https://nestjs-query.mintlify.app/rest/openapi.md): Generated REST controllers include Swagger schemas, operation IDs, tags, request bodies, query parameters, response types, and success status codes.