Skip to content

singlestore-labs/singlestore-hasura-connector

Repository files navigation

SingleStore Data Connector

Docs ndc-hub License Status

The Hasura SingleStore Connector ("the connector") enables you to connect to a SingleStore database and gives instant access to a GraphQL API on top of your data.

This connector is built using the Typescript Data Connector SDK and, it implements the Data Connector Spec.

Features

The following matrix lists the features supported by the Hasura SingleStore connector:

Feature Supported Notes
Native Queries + Logical Models
Simple Object Query
Filter / Search
Simple Aggregation
Sort
Paginate
Table Relationships
Views
Distinct
Remote Relationships
Mutations coming soon

Prerequisites

  1. Create a Hasura Cloud account
  2. Please ensure you have the DDN CLI and Docker installed
  3. Create a supergraph
  4. Create a subgraph
  5. An active SingleStore deployment that serves as the data source for the API.

The steps below explain how to initialize and configure a connector on your local machine (typically for development purposes).You can learn how to deploy a connector to Hasura DDN — after it's been configured — here.

Using the SingleStore connector

With the context set for an existing subgraph, initialize the connector:

ddn connector init -i

When the wizard runs, you'll be prompted to enter the following env vars necessary for your connector to function:

Name Default Description
SINGLESTORE_HOST localhost Hostname of the SingleStore database to connect with.
SINGLESTORE_PORT 3306 Port number of the SingleStore database.
SINGLESTORE_USER SingleStore user to authenticate as.
SINGLESTORE_PASSWORD Password of the SingleStore database user.
SINGLESTORE_DATABASE Name of the SingleStore database to connect with.
SINGLESTORE_SSL_CA CA certificate.
SINGLESTORE_SSL_CERT Certificate chain in PEM format.
SINGLESTORE_SSL_KEY Private key in PEM format.
SINGLESTORE_SSL_CIPHERS Cipher suite specification. If specified, it replaces the default value.
SINGLESTORE_SSL_PASSPHRASE Shared passphrase used for a single private key.
SINGLESTORE_SSL_REJECT_UNAUTHORIZED true If enabled, the server rejects any connection that is not authorized with the list of supplied CAs.

The connector uses MySQL2 library to establish a connection. For more information, refer to Connection options and Pool options.

After the CLI initializes the connector, you'll need to:

Note

SingleStore does not support foreign keys. Relationships between tables must be added manually. You can define relationships by appending relationship information to the .hml files generated in the previous step. For information on defining relationships, refer to Relationships. For example, to add a relationship from a message table to the user table, append following text to the DbMessage.hml file:

---
kind: Relationship
version: v1
definition:
  name: user
  sourceType: DbMessage
  target:
    model:
      name: DbUser
      subgraph: app
      relationshipType: Object
  mapping:
    - source:
        fieldPath:
          - fieldName: userId
      target:
        modelField:
          - fieldName: id
  description: The user details for a message

License

The SingleStore connector is available under the Apache License 2.0.