add postgres example instructions
This commit is contained in:
73
heromodels/examples/postgres_example/README.md
Normal file
73
heromodels/examples/postgres_example/README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 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
|
Reference in New Issue
Block a user