fosrl.pangolin/server/db/README.md
2025-06-04 12:02:07 -04:00

1.3 KiB

Database

Pangolin can use a Postgres or SQLite database to store its data.

Development

Postgres

To use Postgres, edit server/db/index.ts to export all from server/db/pg/index.ts:

export * from "./pg";

Make sure you have a valid config file with a connection string:

postgres:
    connection_string: postgresql://postgres:postgres@localhost:5432

You can run an ephemeral Postgres database for local development using Docker:

docker run -d \
  --name postgres \
  --rm \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=postgres \
  -v $(mktemp -d):/var/lib/postgresql/data \
  postgres:17

SQLite

To use SQLite, edit server/db/index.ts to export all from server/db/sqlite/index.ts:

export * from "./sqlite";

No edits to the config are needed. If you keep the Postgres config, it will be ignored.

Generate and Push Migrations

Ensure drizzle-kit is installed.

Postgres

You must have a connection string in your config file, as shown above.

npm run db:pg:generate
npm run db:pg:push

SQLite

npm run db:sqlite:generate
npm run db:sqlite:push

Build Time

There is a dockerfile for each database type. The dockerfile swaps out the server/db/index.ts file to use the correct database type.