Skip to main content

Database Migrations

Staqr uses TypeORM as its database driver in Node.js. We support two database types across different editions of our platform.

The database migration files contain both what to do to migrate (up method) and what to do when rolling back (down method).

tip

Read more about TypeORM migrations here: https://orkhan.gitbook.io/typeorm/docs/migrations

Database Support

  • PostgreSQL
  • SQLite
tip

Why Do we have SQLite? We support SQLite to simplify development and self-hosting. It's particularly helpful for:

  • Developers creating integrations who want a quick setup
  • Self-hosters using platforms to manage docker images but doesn't support docker compose.

Editions

  • Enterprise & Cloud Edition (Must use PostgreSQL)
  • Community Edition (Can use PostgreSQL or SQLite)
tip

If you are generating a migration for an entity that will only be used in Cloud & Enterprise editions, you only need to create the PostgreSQL migration file. You can skip generating the SQLite migration.

How To Generate

Step 1: Uncomment Database Connection Export

Uncomment the following line in packages/server/api/src/app/database/database-connection.ts:

export const exportedConnection = databaseConnection()

Step 2: Configure Database Type

Edit your .env file to set the database type:

# For SQLite migrations (default)
STAQR_DATABASE_TYPE=SQLITE

For PostgreSQL migrations:

STAQR_DB_TYPE=POSTGRES
STAQR_POSTGRES_DATABASE=staqr
STAQR_POSTGRES_HOST=db
STAQR_POSTGRES_PORT=5432
STAQR_POSTGRES_USERNAME=postgres
STAQR_POSTGRES_PASSWORD=password

Step 3: Generate Migration

Run the migration generation command:

nx db-migration server-api --name=<MIGRATION_NAME>

Replace <MIGRATION_NAME> with a descriptive name for your migration.

Step 4: Move Migration File

The command will generate a new migration file in packages/server/api/src/app/database/migrations. Review the generated file and:

  • For PostgreSQL migrations: Move it to postgres-connection.ts
  • For SQLite migrations: Move it to sqlite-connection.ts

Step 5: Re-comment Export

After moving the file, remember to re-comment the line from step 1:

// export const exportedConnection = databaseConnection()
tip

Always test your migrations by running them both up and down to ensure they work as expected.