Creating Types

Starting in SchemaHero 0.12.0, it's possible to define and manage custom types for a some databases using declarative YAML.

Database SchemaHero support for custom types?
Postgresql no
Mysql no
Cockroachdb no
Cassandra yes

To create a new type, define the initial type schema in a YAML manifest with kind: DataType, and deploy it to the cluster. SchemaHero will see this new type request, and connect to the database and run the appropriate create type commands to deploy the type schema.

For example, to create a user-defined type in a Cassandra database named basic_info to contain personal data about an individual cyclist:

apiVersion: schemas.schemahero.io/v1alpha4
type: DataType
metadata:
  name: basic-info
spec:
  database: schemahero
  name: basic_info
  schema:
    cassandra:
        fields:
          - name: birthday
            type: timestamp
          - name: nationality
            type: text
          - name: weight
            type: text
          - name: height
            type: text

The YAML above will produce and execute the following statement on an empty database:

CREATE TYPE cycling.basic_info (
  birthday timestamp,
  nationality text,
  weight text,
  height text
);