Models
Define your data models with type-safe schemas
Basic Model Definition
Models represent your database tables and define their structure:
models/user.tstypescript
import { defineModel, DataTypes } from "stabilize-orm";const User = defineModel({tableName: "users",columns: {id: {type: DataTypes.INTEGER,required: true,},email: {type: DataTypes.STRING,length: 100,required: true,unique: true},name: {type: DataTypes.STRING,length: 255},age: {type: DataTypes.INTEGER},isActive: {type: DataTypes.BOOLEAN,defaultValue: true},createdAt: {type: DataTypes.DATETIME,defaultValue: () => new Date()},},});
Available Data Types
types.tstypescript
DataTypes.STRING // VARCHARDataTypes.TEXT // TEXTDataTypes.INTEGER // INTEGERDataTypes.FLOAT // FLOATDataTypes.DECIMAL // DECIMALDataTypes.BOOLEAN // BOOLEANDataTypes.DATETIME // TIMESTAMPDataTypes.DATE // DATEDataTypes.TIME // TIMEDataTypes.JSON // JSONDataTypes.UUID // UUID
Model with Timestamps
Enable automatic timestamp management:
models/post.tstypescript
const Post = defineModel({tableName: "posts",columns: {id: { type: DataTypes.INTEGER },title: { type: DataTypes.STRING, length: 255 },content: { type: DataTypes.TEXT },},// Adds createdAt and updatedAttimestamps: {createdAt: "createdAt",updatedAt: "updatedAt",},});
Model with Soft Deletes
Enable soft deletes to mark records as deleted without removing them:
models/product.tstypescript
const Product = defineModel({tableName: "products",softDelete: true, // Adds deletedAt columncolumns: {id: { type: DataTypes.INTEGER},name: { type: DataTypes.STRING, length: 255 },price: { type: DataTypes.DECIMAL },},});
Model with Versioning
Enable automatic versioning for time-travel queries:
models/document.tstypescript
const Document = defineModel({tableName: "documents",versioned: true, // Enable version trackingcolumns: {id: { type: DataTypes.Integer },title: { type: DataTypes.STRING, length: 255 },content: { type: DataTypes.TEXT },},});
