Skip to main content

Data Source Profile

When sending an API request to query the data through SQL file logistic, also should check the data source ( e.g: Database, Warehouse ) has connected, so VulcanSQL needs you to define the Data Source Profile.

Define profile in independent YAML files

You could create independent YAML files to define data sources and set the filePath in the profiles options of the project config:

# pg-profile.yaml
- name: pg
type: postgres
allow: '*'
user: vulcan
password: secret
database: vulcan
port: 5432

# duck-profile.yaml
name: duck
type: duckdb
persistent-path: ./test-data/moma.db
log-queries: true
log-parameters: true
allow: '*'

# vulcan.yaml (project config)
postgres: '@vulcan-sql/extension-driver-duckdb'
duckdb: '@vulcan-sql/extension-driver-duckdb'

- ./pg-profile.yaml
- ./duck-profile.yaml

You should make sure you have installed the data source driver package and declared the module name under the extensions of the project config.

Profile fields

In. this Profile, we should give these fields:

  • name - The name is the data source name for recognizing so that API Schema could set the name to know where the data source the API request queries the result from. Like above duckdb-profile.yaml example, the name is duck, so you could set the duck in profiles / profile in the API Schema to specify what data source the query is from.
  • type - It's a data source type, each data source type uses the module-name under the extensions config to be the type for recognizing, the above sample you could see.
  • connection - The needed information to make the connection built, you should check what the connection fields need in each external extension of the data, e.g: @vulcan-sql/extension-driver-pg npm.
  • allow - The allow field could make our Data API could query the data result from different data sources according to whether the user has permission or not. The API Schema profiles / profile fields have shown some examples. For the allow configuration rule, you could see the Authorization for introducing detail.