74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# PostgreSQL Model Example
|
|
|
|
This example demonstrates the Hero Models framework's PostgreSQL integration capabilities, showcasing how to create, store, retrieve, and manage models in a PostgreSQL database.
|
|
|
|
## Quick Setup
|
|
|
|
**Automated Setup (Recommended):**
|
|
```bash
|
|
./setup.sh
|
|
```
|
|
|
|
The setup script will automatically:
|
|
- Detect your operating system (macOS, Ubuntu/Debian, CentOS/RHEL)
|
|
- Install PostgreSQL if not already installed
|
|
- Start the PostgreSQL service
|
|
- Create the required database user with password
|
|
- Test the database connection
|
|
- Configure PATH (macOS only)
|
|
|
|
**Manual Setup:**
|
|
If you prefer to set up PostgreSQL manually, the example expects:
|
|
- PostgreSQL server running on `localhost:5432`
|
|
- Username: `postgres`
|
|
- Password: `test123`
|
|
|
|
## What This Example Demonstrates
|
|
|
|
### Core Features
|
|
1. **Model Creation** - Creating User and Comment models with the Hero Models framework
|
|
2. **Database Operations** - Storing, retrieving, updating, and deleting records
|
|
3. **Indexing** - Using username and active status indexes for efficient queries
|
|
4. **Relationships** - Associating comments with users
|
|
5. **Connection Management** - PostgreSQL connection pooling and configuration
|
|
|
|
### Specific Operations
|
|
- **User Management**: Create users with different attributes (username, email, active status)
|
|
- **Index Queries**: Retrieve users by username and filter by active status
|
|
- **Data Deletion**: Remove users and see the impact on queries
|
|
- **Comment System**: Create comments and associate them with users
|
|
- **Model Introspection**: Display model information and database prefixes
|
|
|
|
## Running the Example
|
|
|
|
From the heromodels root directory:
|
|
|
|
```bash
|
|
cargo run --example postgres_model_example
|
|
```
|
|
|
|
## Expected Output
|
|
|
|
The example will:
|
|
1. Create 4 sample users with different attributes
|
|
2. Display all users retrieved from the database
|
|
3. Demonstrate index-based queries (by username and active status)
|
|
4. Delete a user and show the updated results
|
|
5. Create and associate comments with users
|
|
6. Display model metadata information
|
|
|
|
## Code Structure
|
|
|
|
- **Database Configuration**: Sets up PostgreSQL connection with credentials
|
|
- **Model Creation**: Uses fluent builder pattern for creating User and Comment instances
|
|
- **Database Operations**: Demonstrates CRUD operations using the Hero Models API
|
|
- **Index Usage**: Shows how to query using predefined indexes
|
|
- **Error Handling**: Proper error handling for database operations
|
|
|
|
## Key Technologies
|
|
|
|
- **Hero Models Framework**: Core ORM-like functionality
|
|
- **PostgreSQL**: Database backend with connection pooling
|
|
- **Rust**: Type-safe model definitions and operations
|
|
- **Serde**: JSON serialization/deserialization for database storage
|