DevelopersArchitectureDatabase
Architecture

Database

Schema

Our data schema is defined using Prisma, you can view it on GitHub. A cool screenshot of the Spacedrive schema

Prisma Client Rust

We use Prisma Client Rust as a database ORM, it allows us to use Prisma to define our schema and generate migrations based on modifications to that schema.

Migrations

Migrations are run by the Prisma migration engine on app launch.

Database file

The databases file is SQLite and can be opened in any SQL viewer.

A Spacedrive library database file open in Table Plus

Environment Variables

The following environment variables can be used to control database behavior:

  • SD_ACCEPT_DATA_LOSS: When set to "true", allows operations that might result in data loss. This should only be used in development or testing environments where data loss is acceptable.

  • SD_FORCE_RESET_DB: When set to "true", forces a reset of the database. This will clear all existing data. Use with extreme caution and only in development environments.

You can set these variables when running the app, e.g. SD_ACCEPT_DATA_LOSS=true pnpm tauri dev.

These environment variables are primarily used during development and testing. They should not be used in production environments unless you fully understand the implications.

⚠️ Warning: Setting these variables can result in permanent data loss. Use them only in development environments or when you explicitly need to reset or modify database behavior.