zenstack/docs/zmodel-data-source.md
Yiming 8c2cef46b1
fix: schema type-checking improvement
- resolve "auth()" invocation to "User" model in current schema
- proper validation error for collection predicate expressions
- issue warning if a model doesn't have any @@Allow rule
- check missing @unique attribute in one-to-one relation
2022-11-29 14:00:53 +08:00

2.3 KiB

Data source

Every model needs to include exactly one datasource declaration, providing information on how to connect to the underlying database.

Syntax

A data source declaration takes the following form:

datasource [NAME] {
    provider = [PROVIDER]
    url = [DB_URL]
}
  • [NAME]:

    Name of the data source. Needs to be a valid identifier matching regular expression [A-Za-z][a-za-z0-9_]\*. Name is only informational and serves no other purposes.

  • [PROVIDER]:

    Name of database connector. Valid values:

    • sqlite
    • postgresql
    • mysql
    • sqlserver
    • cockroachdb
  • [DB_URL]:

    Database connection string. Either a plain string or an invocation of env function to fetch from an environment variable.

Examples

datasource db {
    provider = "postgresql"
    url = "postgresql://postgres:abc123@localhost:5432/todo?schema=public"
}

It's highly recommended that you don't commit sensitive database connection string into source control. Alternatively, you can load it from an environment variable:

datasource db {
    provider = "postgresql"
    url = env("DATABASE_URL")
}

Supported databases

ZenStack uses Prisma to talk to databases, so all relational databases supported by Prisma is supported by ZenStack as well.

Here's a list for your reference:

Database Version
PostgreSQL 9.6
PostgreSQL 10
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
MySQL 5.6
MySQL 5.7
MySQL 8
MariaDB 10
SQLite *
AWS Aurora *
AWS Aurora Serverless *
Microsoft SQL Server 2022
Microsoft SQL Server 2019
Microsoft SQL Server 2017
Azure SQL *
CockroachDB 21.2.4+

You can find the orignal list here.