VibORM
Fields

Fields Overview

Scalar field types for defining database columns

Fields

Fields represent scalar database columns. Each field type has specific chainable methods and maps to appropriate database types.

Field Types

FieldTypeScriptPostgreSQLMySQLSQLite
s.string()stringTEXTVARCHAR(191)TEXT
s.int()numberINTEGERINTINTEGER
s.float()numberDOUBLE PRECISIONDOUBLEREAL
s.decimal()numberDECIMAL(65,30)DECIMAL(65,30)REAL
s.bigInt()bigintBIGINTBIGINTINTEGER
s.boolean()booleanBOOLEANTINYINT(1)INTEGER
s.dateTime()DateTIMESTAMPDATETIMETEXT
s.json()unknown / TJSONBJSONTEXT
s.blob()Uint8ArrayBYTEABLOBBLOB
s.enum([...])Union typeENUMENUMTEXT
s.vector()number[]vector--

Common Modifiers

All field types support these chainable methods:

s.string()
  .nullable()              // Allow NULL values
  .array()                 // Make it an array (native on PG, JSON on MySQL/SQLite)
  .id()                    // Mark as primary key
  .unique()                // Unique constraint
  .default(value)          // Static default
  .default(() => value)    // Runtime default function
  .validator(schema)       // Custom StandardSchema validator
  .map("column_name")      // Custom database column name

Modifier Reference

MethodDescriptionAffects Type
.nullable()Allow NULLT | null
.array()Array typeT[]
.id()Primary key-
.unique()Unique constraint-
.default(v)Default valueOptional in create
.validator(s)Custom validation-
.map(name)Column name-

Field State

Every field tracks its state through generics:

interface FieldState {
  type: ScalarFieldType;
  nullable: boolean;
  array: boolean;
  hasDefault: boolean;
  isId: boolean;
  isUnique: boolean;
  defaultValue: any;
  autoGenerate: AutoGenerateType | undefined;
  customValidator: StandardSchemaV1 | undefined;
  columnName: string | undefined;
}

Pages

On this page