Files
asle/DATABASE_SETUP.md

132 lines
2.6 KiB
Markdown
Raw Permalink Normal View History

# 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)
```bash
# 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`:
```env
DATABASE_URL="postgresql://asle:asle_password@localhost:5432/asle?schema=public"
```
### Option 2: Local PostgreSQL
1. **Create database:**
```bash
# 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;"
```
2. **Update `backend/.env`:**
```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:
1. **Create database:**
```bash
psql -U your_user -c "CREATE DATABASE asle;"
```
2. **Update `backend/.env`:**
```env
DATABASE_URL="postgresql://your_user:your_password@localhost:5432/asle?schema=public"
```
## Running Migrations
After setting up the database:
```bash
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`:
1. Check PostgreSQL is running:
```bash
pg_isready -h localhost -p 5432
```
2. Verify credentials in `backend/.env`
3. Test connection:
```bash
psql $DATABASE_URL -c "SELECT version();"
```
### Database Already Exists
If database already exists, migrations will still work:
```bash
npm run prisma:migrate
```
### Permission Denied
If you get permission errors:
```bash
# 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:
1. ✅ Run migrations
2. ✅ Initialize database
3. ✅ Create admin user
4. ✅ Start backend: `npm run dev`