9 Commits

Author SHA1 Message Date
c9dd2242e7
feat(examples): add PostgreSQL example with user relationship
All checks were successful
CI / tests (push) Successful in 5m39s
Adds an example demonstrating user, comment, and follower relationship
including:
- User management with profiles
- Comments (not really useful, just for showcasing)
- Follower/follozing relationships
- Ineractive CLI interface with CRUD operations
- Database migrations for the example schema
2025-06-07 16:00:01 +02:00
8ffa8eb3ac
feat: implement efficient upsert operation for create_or_update
Replace the existing two-query create_or_update implementation with a
single atomic PostgreSQL upsert using ON CONFLICT clause to eliminate
race conditions and improve performance.

Race condition fix:
The previous implementation had a critical race condition where
multiple concurrent requests could:
1. Both call find() and get None (record doesn't exist)
2. Both call create() and the second one fails with duplicate key
   error
3. Or between find() and create(), another transaction inserts the
   record

This created unreliable behavior in high-concurrency scenarios.

Changes:
- Add generate_upsert_query function in trait_implementation.rs
- Generate SQL with INSERT ... ON CONFLICT ... DO UPDATE SET pattern
- Remove default trait implementation that used separate
  find/create/update calls
- Update derive_trait to include upsert query generation
- Convert create_or_update from default implementation to required
  trait method

The new implementation eliminates race conditions while reducing
database round trips from 2-3 queries down to 1, significantly
improving both reliability and performance.
2025-06-07 15:57:56 +02:00
298d3b28a7
feat: upgrade to Rust 1.86 and edition 2024
Upgrades rust toolchain from 1.84 to 1.86, switches to Rust edition
2024, and updates dependencies including SQLx to 0.8.6.
2025-06-07 15:57:51 +02:00
ab2d80d2f6
chore: migrate development environment from Nix flakes to devenv
Replace Nix flake-based development setup with devenv for better
developer experience and more streamlined environment management.

Changes:
  - Remove flake.nix and flake.lock files
  - Add devenv.nix, devenv.yaml, and devenv.lock configuration
  - Update .envrc to use devenv instead of nix develop
  - Remove Docker development setup (compose.dev.yml, docker/mod.just)
  - Expand .gitignore with comprehensive IDE and OS exclusions
  - Remove Docker-related just commands from justfile
2025-06-07 15:46:10 +02:00
7cdaa27f3b
docs: complete rewrite of README
Replaces the existing README with a comprehensive guide that
significantly improves the developer and user experience. The new README
provides complete documentation for all Georm features and a detailed
development setup guide.

It also includes a roadmap with prioritized feature development plan.
2025-06-07 15:45:25 +02:00
aafbfb7964
feat: add foreign one_to_one relationships 2025-06-07 15:42:31 +02:00
f2e59cee7c
fix: correct docs.rs link and switch to GitHub repository
All checks were successful
CI / tests (push) Successful in 7m21s
2025-02-01 01:59:40 +01:00
d82f9fe2f4
docs: update readme
All checks were successful
CI / tests (push) Successful in 6m37s
2025-02-01 01:25:55 +01:00
39f757991a
initial commit 2025-01-26 15:18:31 +01:00