Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.
Go to file
paritosh-08 d394276a5a add mappings to the relationship usage analytics (#1125)
Linear:
https://linear.app/hasura/issue/APIPG-395/query-usage-analytics-report-relationship-fields

### What

This PR adds mappings to the relationship usage analytics. The goal is
to improve the tracking of relationships between models in the system by
mapping relationship fields (source to target fields) and relationship
arguments, ensuring that analytics around these mappings can be
accurately captured.

No changelog entry is required as the change is not user-facing.

### How

The implementation introduces the following changes:
- Added `get_relationship_model_mappings` and
`get_relationship_command_mappings` functions to extract mappings of
relationship fields and arguments.
- Updated the `RelationshipUsage` structure to include the new
`mappings` field for both model and command mappings.

These changes affect various components handling relationships within
the analytics system, as seen in files such as
`query_usage_analytics.rs`, where mappings are now tracked across
different relationship types.

### Example analytics:

For the following query:
```graphql
query MyQuery {
  ArticleMany {
    # relationship to command
    AuthorFromCommand {
      id
    }
    # relationship to a model
    Author {
      id
    }
  }
}
```
The query usage analytics looks something like:

- For relationship to model:
  ```yaml
  used:
  - relationship:
      name: article
      source:
        subgraph: default
        name: commandArticle
      target:
        model:
          model_name:
            subgraph: default
            name: Articles
          opendd_type:
            subgraph: default
            name: article
          relationship_type: Object
          mapping:
          - source_field: article_id
            target_field: article_id
      deprecated: false
      deprecated_reason:
  ```
- For relationship to command:
  ```yaml
  used:
  - relationship:
      name: AuthorFromCommand
      source:
        subgraph: default
        name: article
      target:
        command:
          command_name:
            subgraph: default
            name: get_author_by_id
          opendd_type:
            subgraph: default
            name: commandAuthor
          mapping:
          - source_field: author_id
            target_argument: author_id
      deprecated: false
      deprecated_reason:
  ```

V3_GIT_ORIGIN_REV_ID: e26d30af7a2b77156d1120bd1a51f8d44b9dc443
2024-09-30 10:09:23 +00:00
.circleci add config to prioritize data/error for remote schema fields 2023-12-19 13:30:30 +00:00
.devcontainer/docs docs: add docs devcontainer 2022-12-16 17:39:29 +00:00
.github remove hge-changelog-owners codeowner 2024-09-02 07:24:22 +00:00
architecture streaming subscriptions architecture: update try it out instructions 2022-09-29 17:28:01 +00:00
assets assets: update hasura logos 2024-03-26 18:38:41 +00:00
cabal Jberryman/ghc 9.6.4 2024-01-23 19:47:53 +00:00
cli ci: update latest stable release as v2.43.0 2024-09-04 12:51:44 +00:00
cli-ext cli-ext: Upgrade the node.js version to 16 when packaging. 2023-04-21 09:05:15 +00:00
community server: add missing trace_id and span_id fields to OTEL logs for EE Classic mode 2024-07-29 09:19:45 +00:00
console Deprecation message in Console Folder Readme 2023-02-28 12:05:04 +00:00
contrib/metadata-types Upgrade Ormolu to 0.7.0.0 2023-05-24 13:53:53 +00:00
dc-agents GHC 9.10.1 2024-08-13 13:41:16 +00:00
docker-compose Use a test PostgreSQL image based on Debian, not Alpine. 2024-07-19 08:18:01 +00:00
docs Docs: Add api key for action quickstart 2024-09-27 15:53:08 +00:00
frontend Console: fix role and client name for inspect operation modal 2024-09-25 11:10:53 +00:00
install-manifests ci: update latest stable release as v2.43.0 2024-09-04 12:51:44 +00:00
metadata-api-types Make command to generate types from typed metadata in languages other than Typescript 2023-03-14 14:27:15 +00:00
nix Nix: Install ghciwatch and update the flake to get it. 2024-07-31 12:14:17 +00:00
packaging ci: tag release v2.44.0-beta.1 2024-09-18 06:13:13 +00:00
preload-mimalloc Fix #9447 bad memory usage 2023-07-25 11:24:57 +00:00
releases ci: release v2.42.0-beta.1-cloud.1 2024-07-31 12:24:43 +00:00
rfcs [RFC] REST API output on Hasura v3 2024-09-02 07:06:48 +00:00
scripts GHC 9.10.1 2024-08-13 13:41:16 +00:00
server Catalogue update v2.44.0 stable 2024-09-25 05:26:39 +00:00
translations assets: update hasura logos 2024-03-26 18:38:41 +00:00
v3 add mappings to the relationship usage analytics (#1125) 2024-09-30 10:09:23 +00:00
.dockerignore Create a Docker image specifically for running the Python tests. 2022-09-07 14:29:42 +00:00
.envrc Upgrade GHC to v9.6.5. 2024-05-30 09:38:45 +00:00
.envrc.local.example docker: Always use the official SQL Server image for testing. 2023-09-25 13:27:23 +00:00
.ghcversion Upgrade GHC to v9.6.5. 2024-05-30 09:38:45 +00:00
.git-blame-ignore-revs frontend: apply prettier 2023-01-25 20:55:24 +00:00
.gitignore Add python script to get cabal package licenses 2024-07-09 21:39:07 +00:00
.hlint.yaml Remove any/all hlint rules 2023-05-18 09:21:20 +00:00
.kodiak.toml ci: don't block merge queue when awaiting review, after #7011 2023-02-07 20:31:27 +00:00
.nvmrc tooling: bump .nvmrc version to 16 2022-09-06 11:23:56 +00:00
.prettierignore Add a missing changelog entry for error message changes to v2.10.0. 2022-09-05 09:41:06 +00:00
cabal.project GHC 9.10.1 2024-08-13 13:41:16 +00:00
cabal.project.freeze GHC 9.10.1 2024-08-13 13:41:16 +00:00
CHANGELOG.md Kriti Documentation 2022-09-06 15:47:18 +00:00
code-of-conduct.md update code of conduct (#2886) 2019-09-16 14:07:52 +05:30
CONTRIBUTING.md Update README for open sourcing the v3 engine. 2023-12-21 09:41:45 +00:00
docker-compose.yaml Remove the version from Docker Compose files. 2024-07-17 13:49:05 +00:00
event-triggers.md docs: fix sample-apps URLs 2023-06-30 13:48:19 +00:00
flake.lock Nix: Install ghciwatch and update the flake to get it. 2024-07-31 12:14:17 +00:00
flake.nix Nix: Wrap GHC and HLS, specifically, to provide (DY)?LD_LIBRARY_PATH. 2023-05-22 14:16:12 +00:00
LICENSE Change license for core GraphQL Engine to Apache 2.0 (#1821) 2019-03-19 16:23:36 +05:30
LICENSE-community add community boilerplates and examples (#430) 2018-09-13 12:00:07 +05:30
Makefile make: Add make targets for formatting and linting frontend code. 2023-03-23 15:16:14 +00:00
metadata.openapi.json GHC 9.10.1 2024-08-13 13:41:16 +00:00
README.md Docs: Update README again 2024-08-30 05:26:00 +00:00
remote-schemas.md update docs link to avoid redirects 2021-03-01 18:51:18 +00:00
sample.hie.yaml server: Rename "error-message" to "hasura-error-message". 2023-06-27 16:51:06 +00:00
SECURITY.md github md pages: update email address for security team 2022-12-01 17:19:51 +00:00
shell.nix Push the Nix dependency management configuration to the OSS repository. 2022-10-11 15:33:22 +00:00
V2-README.md assets: update hasura logos 2024-03-26 18:38:41 +00:00
yarn.lock docs: update-rewards-for-disclosures. 2024-04-09 22:27:03 +00:00

Hasura logo Hasura logo

Hasura GraphQL Engine

The Hasura engine is an open source project which supercharges the building of modern applications by providing access to data via a single, composable, secure API endpoint.

Hasura V3

Docs

The future of data delivery is GA: Supporting PostgreSQL (and its flavors), MongoDB, ClickHouse, and MS SQL Server. Also supports writing custom business logic using the Typescript, Python, and Go Connector SDKs. Here is the recommended Getting Started guide on DDN.

The Hasura v3 engine code, which powers Hasura DDN, is in the v3 folder of this repo. You can find more detailed information about in this v3 README.

The Hasura DDN architecture includes Data Connectors to connect to data sources. All Hasura connectors are also available completely open source. Check out the Connector Hub which lists all available connectors.

Hasura V2

Latest release Docs

Hasura V2 is the current stable version of the Hasura GraphQL Engine. Please find more detailed information about the V2 Hasura Graphql Engine in the v2 folder and this README.

Cloning repository

This repository is a large and active mono-repo containing many parts of the Hasura ecosystem and a long git history, that can make the first time cloning of the repository slow and consume a lot of disk space. We recommend following if you are facing cloning issues.

Shallow clone

This will only clone the latest commit and ignore all historical commits.

git clone https://github.com/hasura/graphql-engine.git --depth 1

Git checkout with only Hasura V3 engine code

git clone --no-checkout https://github.com/hasura/graphql-engine.git --depth 1
cd graphql-engine
git sparse-checkout init --cone
git sparse-checkout set v3
git checkout @

This checkouts the top level files and only the v3 folder which contains the Hasura V3 Engine code.

Support & Troubleshooting

To troubleshoot most issues, check out our documentation and community resources. If you have encountered a bug or need to get in touch with us, you can contact us using one of the following channels:

Code of Conduct

We are committed to fostering an open and welcoming environment in the community. Please see the Code of Conduct.

Security

If you want to report a security issue, please read this.

Stay up to date

Join our communities to stay up to date on announcements, events, product updates, and technical blogs. https://hasura.io/community/

Contributing

Check out our contributing guide for more details.

Brand assets

Hasura brand assets (logos, the Hasura mascot, powered by badges etc.) can be found in the v2/assets/brand folder. Feel free to use them in your application/website etc. We'd be thrilled if you add the "Powered by Hasura" badge to your applications built using Hasura. ❤️

Licenses

V3

All the Data Connectors are available under the Apache License 2.0.

The core V3 GraphQL Engine is intended to be licensed under the Apache License 2.0 (Apache-2.0).

V2

The V2 core GraphQL Engine is available under the Apache License 2.0 (Apache-2.0).

All other contents in the v2 folder (except those in server, cli and console directories) are available under the MIT License. This includes everything in the docs and community directories.