Skip to content

Data Types

samhuk edited this page Oct 3, 2022 · 5 revisions

This section describes the available data types and sub-types of ts-pg-orm, and provides some examples of each.

There are 5 available data types: Number, String, Boolean, Epoch, JSON. Each of these have their own sub-types.

Number

Serial

Examples

id: { type: DataType.NUM, subType: NumSubType.SERIAL }

Integer

Examples

creatorUserId: { type: DataType.NUM, subType: NumSubType.INT },

Real

Examples

popularity: { type: DataType.NUM, subType: NumSubType.REAL },

Integer Enum

Examples

enum TShirtSizes { S, M, L }

size: { type: DataType.NUM, subType: NumSubType.INT_ENUM, default: TShirtSizes.M },

String

Fixed-length

Examples

passwordHash: { type: DataType.STR, subType: StrSubType.FIXED_LENGTH, len: 64 },

Varying-length

Examples

name: { type: DataType.STR, subType: StrSubType.VAR_LENGTH, maxLen: 50 },

UUID v4

Examples

uuid: { type: DataType.STR, subType: StrSubType.UUID_V4, autoGenerate: true },

String Enum

Examples

enum TShirtSizes { S = 'small', M = 'medium', L = 'large' }

size: { type: DataType.STR, subType: StrSubType.ENUM, default: TShirtSizes.M },

Boolean

Examples

verified: { type: DataType.BOOL },

Epoch

Date-time with timezone

Examples

Typical "date created" field:

dateCreated: { type: DataType.EPOCH, subType: EpochSubType.DATE_TIME_WITH_TIMEZONE, defaultToCurrentEpoch: true },

Typical "date deleted" field:

dateDeleted: { type: DataType.EPOCH, subType: EpochSubType.DATE_TIME_WITH_TIMEZONE, allowNull: true, excludeFromCreateOptions: true },

JSON

Array

Examples

recipeSteps: { type: DataType.JSON, subType: JsonSubType.ARRAY, default: null as ({ durationMins: number, body: string })[] },

Array

Examples

prefs: { type: DataType.JSON, subType: JsonSubType.OBJECT, default: null as ({ darkMode: boolean })[] },