Skip to main content

DatabaseType Enum

The DatabaseType enum defines all supported database systems in ChartDB.
enum DatabaseType {
    GENERIC = 'generic',
    POSTGRESQL = 'postgresql',
    MYSQL = 'mysql',
    SQL_SERVER = 'sql_server',
    MARIADB = 'mariadb',
    SQLITE = 'sqlite',
    CLICKHOUSE = 'clickhouse',
    COCKROACHDB = 'cockroachdb',
    ORACLE = 'oracle',
}

Supported Databases

GENERIC
string
default:"generic"
Generic SQL database with standard SQL types
POSTGRESQL
string
default:"postgresql"
PostgreSQL database with support for:
  • JSONB, arrays, custom types
  • Enums and composite types
  • Advanced indexing (GIN, GIST, etc.)
  • Check constraints
  • Comments on tables/columns
MYSQL
string
default:"mysql"
MySQL database with support for:
  • Auto-increment columns
  • Multiple storage engines
  • Character sets and collations
  • Inline comments
SQL_SERVER
string
default:"sql_server"
Microsoft SQL Server with support for:
  • Identity columns
  • Unique identifiers (GUID)
  • NVARCHAR and Unicode types
  • Extended properties for comments
MARIADB
string
default:"mariadb"
MariaDB database (MySQL fork) with similar features to MySQL
SQLITE
string
default:"sqlite"
SQLite embedded database with support for:
  • Simple type system
  • Autoincrement
  • Limited ALTER TABLE support
CLICKHOUSE
string
default:"clickhouse"
ClickHouse columnar database
COCKROACHDB
string
default:"cockroachdb"
CockroachDB (PostgreSQL-compatible) with similar features to PostgreSQL
ORACLE
string
default:"oracle"
Oracle Database with support for:
  • VARCHAR2, NUMBER types
  • Sequences
  • PL/SQL

DatabaseEdition Enum

Specific editions or variants of database types for platform-specific features.
enum DatabaseEdition {
    // PostgreSQL
    POSTGRESQL_SUPABASE = 'supabase',
    POSTGRESQL_TIMESCALE = 'timescale',

    // MySQL
    MYSQL_5_7 = 'mysql_5_7',

    // SQL Server
    SQL_SERVER_2016_AND_BELOW = 'sql_server_2016_and_below',

    // SQLite
    SQLITE_CLOUDFLARE_D1 = 'cloudflare_d1',
}

Database Edition Mapping

POSTGRESQL_SUPABASE
string
Supabase-hosted PostgreSQL with specific extensions and configurations
POSTGRESQL_TIMESCALE
string
TimescaleDB extension for PostgreSQL (time-series data)
MYSQL_5_7
string
MySQL version 5.7 with specific syntax compatibility
SQL_SERVER_2016_AND_BELOW
string
SQL Server 2016 and earlier versions with syntax limitations
SQLITE_CLOUDFLARE_D1
string
Cloudflare D1 SQLite database with specific constraints

Usage Examples

Creating a Diagram with Database Type

import { DatabaseType, DatabaseEdition } from './database-type';

const diagram: Diagram = {
    id: 'diagram_1',
    name: 'My Database',
    databaseType: DatabaseType.POSTGRESQL,
    databaseEdition: DatabaseEdition.POSTGRESQL_SUPABASE,
    // ... other properties
};

Type-Specific Features

// PostgreSQL supports array types
if (databaseType === DatabaseType.POSTGRESQL) {
    field.isArray = true; // int[], text[], etc.
}

// SQL Server uses IDENTITY for auto-increment
if (databaseType === DatabaseType.SQL_SERVER) {
    // Use IDENTITY(1,1) instead of SERIAL
}

// SQLite has limited type system
if (databaseType === DatabaseType.SQLITE) {
    // Types: INTEGER, REAL, TEXT, BLOB
}

Database Capabilities

Different databases support different features:
FeaturePostgreSQLMySQLSQL ServerSQLite
Custom Types
Array Types
Check Constraints
Comment Support✅ (inline)✅ (extended)
Advanced Indexes✅ (GIN, GIST)