VibORM
Fields

Fields Overview

Scalar field types for database columns with chainable methods and database type mappings

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
  .schema(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
.schema(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;
  base: AnySchema; // Base Valibot schema for the field
  schema: StandardSchemaV1 | undefined; // Custom StandardSchema validator
  columnName: string | undefined;
}

Pages

On this page