Getting Started Guide
A complete walkthrough from installation to your first query
Step 1: Install Stabilize
Install both the ORM and CLI tools:
bun add stabilize-orm
bun add -d stabilize-cli
Step 2: Set Up Your Database
Create a database configuration file:
config/database.tstypescript
import { DBType, type DBConfig } from "stabilize-orm";const dbConfig: DBConfig = {type: DBType.Postgres,connectionString: process.env.DATABASE_URL,retryAttempts: 3,retryDelay: 1000,};export default dbConfig;
Step 3: Initialize the ORM
Create an ORM instance and connect to your database:
db/index.tstypescript
import { Stabilize, type CacheConfig, type LoggerConfig, LogLevel } from "stabilize-orm";import dbConfig from "./config/database";const cacheConfig: CacheConfig = {enabled: process.env.CACHE_ENABLED === "true",redisUrl: process.env.REDIS_URL,ttl: 60,};const loggerConfig: LoggerConfig = {level: LogLevel.Info,filePath: "logs/stabilize.log",maxFileSize: 5 * 1024 * 1024, // 5MBmaxFiles: 3,};export const orm = new Stabilize(dbConfig, cacheConfig, loggerConfig);
Step 4: Define Your First Model
Create a User model:
models/User.tstypescript
import { defineModel, DataTypes } from "stabilize-orm";export const User = defineModel({tableName: "users",columns: {id: {type: DataTypes.Integer,},email: {type: DataTypes.String,length: 100,required: true,unique: true,},name: {type: DataTypes.String,length: 255,required: true,},isActive: {type: DataTypes.Boolean,},},timestamps: {createdAt: "createdAt",updatedAt: "updatedAt",},});
Step 5: Create the Table
Use the CLI to generate and run a migration:
bunx stabilize-cli generate migration User
bunx stabilize-cli migrate
Step 6: Perform Your First Query
Create, read, update, and delete users:
example/user-crud.tstypescript
import { orm } from "./db";import { User } from "./models/User";const userRepository = orm.getRepository(User);// Create a userconst newUser = await userRepository.create({email: "ciniso@stabilize.xyz",name: "Ciniso Dlamini",});console.log("Created user:", newUser);// Find all usersconst allUsers = await userRepository.find().execute();console.log("All users:", allUsers);// Find one userconst user = await userRepository.find().where("email = ?", "ciniso@stabilize.xyz").first();console.log("Found user:", user);// Update a userawait userRepository.update(user.id, {name: "Ciniso Dlamini",});// Delete a userawait userRepository.delete(user.id);
Next Steps
- Learn about relationships between models
- Explore advanced query builder features
- Set up versioning for time-travel queries
- Add lifecycle hooks to your models
