132 lines
2.6 KiB
Markdown
132 lines
2.6 KiB
Markdown
|
|
# 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`
|
||
|
|
|