- Install backend and frontend dependencies - Fix Prisma schema BigInt default values - Generate Prisma client - Create database setup script and documentation - Add DATABASE_SETUP.md guide
2.6 KiB
2.6 KiB
Database Setup Guide
This guide helps you set up the PostgreSQL database for ASLE backend.
Prerequisites
- PostgreSQL 15+ installed and running
- Access to create databases
Quick Setup
Option 1: Using Docker (Recommended)
# Start PostgreSQL container
docker-compose up -d postgres
# The database will be created automatically with:
# - User: asle
# - Password: asle_password
# - Database: asle
Update backend/.env:
DATABASE_URL="postgresql://asle:asle_password@localhost:5432/asle?schema=public"
Option 2: Local PostgreSQL
-
Create database:
# As postgres superuser sudo -u postgres psql -c "CREATE DATABASE asle;" # Or create a user first sudo -u postgres psql -c "CREATE USER asle WITH PASSWORD 'your_password';" sudo -u postgres psql -c "CREATE DATABASE asle OWNER asle;" -
Update
backend/.env:DATABASE_URL="postgresql://asle:your_password@localhost:5432/asle?schema=public"
Option 3: Using Existing PostgreSQL
If you have PostgreSQL running with different credentials:
-
Create database:
psql -U your_user -c "CREATE DATABASE asle;" -
Update
backend/.env:DATABASE_URL="postgresql://your_user:your_password@localhost:5432/asle?schema=public"
Running Migrations
After setting up the database:
cd backend
# Generate Prisma client
npm run prisma:generate
# Run migrations
npm run prisma:migrate
# Initialize database with default configs
npm run setup:db
# Create admin user
npm run setup:admin
Troubleshooting
Authentication Failed
If you see Authentication failed:
-
Check PostgreSQL is running:
pg_isready -h localhost -p 5432 -
Verify credentials in
backend/.env -
Test connection:
psql $DATABASE_URL -c "SELECT version();"
Database Already Exists
If database already exists, migrations will still work:
npm run prisma:migrate
Permission Denied
If you get permission errors:
# Grant permissions
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE asle TO your_user;"
Connection String Format
postgresql://[user]:[password]@[host]:[port]/[database]?schema=public
Examples:
postgresql://postgres@localhost:5432/asle?schema=public(no password)postgresql://asle:password@localhost:5432/asle?schema=public(with password)postgresql://user:pass@db.example.com:5432/asle?schema=public(remote)
Next Steps
After database is set up:
- ✅ Run migrations
- ✅ Initialize database
- ✅ Create admin user
- ✅ Start backend:
npm run dev