mirror of
https://github.com/onsonr/sonr.git
synced 2025-03-10 21:09:11 +00:00
* feat: enable DID auth middleware * feat: implement passkey creation flow * feat: persist user address in cookie and retrieve user profile using address cookie * feat: implement human verification challenge during session initialization * refactor: remove unnecessary random number generation in profile creation * refactor: rename credential validation handler and update related routes * feat: improve profile validation and user experience * feat: add page rendering for profile and passkey creation * refactor: remove unused register handler and update routes * refactor: remove unused imports and simplify credential validation * fix: Correct insecure gRPC client connection * refactor: rename models files for better organization * refactor: refactor grpc client creation and management * refactor: refactor common clients package * <no value> * feat: add CapAccount, CapInterchain, CapVault enums * feat: add ChainId to ResAccount and ResInterchain * feat: add asset code to resource account enumeration * refactor: rename services package to providers * feat: implement gateway database interactions * refactor: move gateway repository to internal/gateway * refactor: Migrate database provider to use sqlx * refactor: Rename Vaults to VaultProvider in HTTPContext struct * refactor: Migrate from GORM to sqlc Queries in database context methods * refactor: Replace GORM with standard SQL and simplify database initialization * refactor: Migrate session management from GORM to sqlc with type conversion * refactor: Update import paths and model references in context package * fix: Resolve session type conversion and middleware issues * refactor: Migrate database from GORM to sqlx * refactor: Move models to pkg/common, improve code structure * refactor: move repository package to internal directory * refactor: move gateway internal packages to context directory * refactor: migrate database provider to use sqlx queries * feat: add session ID to HTTP context and use it to load session data * feat: implement vault creation API endpoint * feat: add DIDKey generation from PubKey * refactor: remove unused DIDAuth components * refactor: move DID auth controller to vault context * chore: remove unused DIDAuth package * refactor: improve clarity of enclave refresh function * feat: implement nonce-based key encryption for improved security * feat: Add Export and Import methods with comprehensive tests for Enclave * fix: Validate AES key length in keyshare encryption and decryption * fix: Resolve key length validation by hashing input keys * refactor: Update keyshare import to use protocol decoding * feat: Refactor enclave encryption to support full enclave export/import * refactor: Simplify Enclave interface methods by removing role parameter * refactor: remove unnecessary serialization from enclave interface * refactor: rename models package in gateway context * refactor: rename keystore vault constants * refactor: remove context parameter from Resolver methods * feat: add CurrentBlock context function and update related components * refactor: rename resolver.go to resolvers.go * feat: Add SQLite random() generation for session and profile initialization * refactor: Update SQL queries to use SQLite-style parameter placeholders * refactor: Replace '?' placeholders with '$n' PostgreSQL parameter syntax * <no value> * refactor: refactor gateway to use middleware for database interactions and improve modularity * feat: implement gateway for Sonr highway * refactor: Remove unused gateway context and refactor cookie/header handling * refactor: improve server initialization and middleware handling * feat: implement human verification for profile creation * feat: implement session management middleware * refactor: refactor common models and config to internal package * refactor: move env config to internal/config * refactor: move database-related code to directory * refactor: move IPFS client to common package and improve code structure * refactor: move querier to common package and rename to chain_query * refactor: move webworker model to internal/models * feat: add initial view template for Sonr.ID * docs(concepts): Add documentation for cosmos-proto * docs: move IBC transfer documentation to tools section * refactor: rename initpkl.go to pkl_init.go for better naming consistency * docs(theme): update dark mode toggle icons * refactor: update sqlite3 driver to ncruces/go-sqlite3 * feat: add Vault model and database interactions * refactor: Improve SQLite schema with better constraints and indexes * chore: update project dependencies * fix: use grpc.WithInsecure() for gRPC connection * config: set localhost as default Sonr gRPC URL * refactor: improve gateway middleware and refactor server initialization * refactor: Remove foreign key pragma from schema SQL * refactor: Remove foreign key constraints from database schema * refactor: Convert primary key columns from INTEGER to TEXT * refactor: Remove unnecessary redirect in error handling
89 lines
3.0 KiB
Markdown
89 lines
3.0 KiB
Markdown
You are an expert in Go data modeling and PostgreSQL database design, specializing in building efficient and scalable data models using modern ORMs like GORM and SQLBoiler.
|
|
|
|
Key Principles:
|
|
- Write idiomatic Go code following standard Go conventions
|
|
- Design clean and maintainable database schemas
|
|
- Implement proper relationships and constraints
|
|
- Use appropriate indexes for query optimization
|
|
- Follow database normalization principles
|
|
- Implement proper error handling and validation
|
|
- Use meaningful struct tags for ORM mapping
|
|
|
|
Data Modeling Best Practices:
|
|
- Use appropriate Go types for database columns
|
|
- Implement proper foreign key relationships
|
|
- Design for data integrity and consistency
|
|
- Consider soft deletes where appropriate
|
|
- Use composite indexes strategically
|
|
- Implement proper timestamps for auditing
|
|
- Handle NULL values appropriately with pointers
|
|
|
|
ORM Patterns:
|
|
- Use GORM hooks for complex operations
|
|
- Implement proper model validation
|
|
- Use transactions for atomic operations
|
|
- Implement proper eager loading
|
|
- Use batch operations for better performance
|
|
- Handle migrations systematically
|
|
- Implement proper model scopes
|
|
|
|
Database Design:
|
|
- Follow PostgreSQL best practices
|
|
- Use appropriate column types
|
|
- Implement proper constraints
|
|
- Design efficient indexes
|
|
- Use JSONB for flexible data when needed
|
|
- Implement proper partitioning strategies
|
|
- Consider materialized views for complex queries
|
|
|
|
Error Handling and Validation:
|
|
- Implement proper input validation
|
|
- Use custom error types
|
|
- Handle database errors appropriately
|
|
- Implement retry mechanisms
|
|
- Use context for timeouts
|
|
- Implement proper logging
|
|
- Handle concurrent access
|
|
|
|
Performance Optimization:
|
|
- Use appropriate batch sizes
|
|
- Implement connection pooling
|
|
- Use prepared statements
|
|
- Optimize query patterns
|
|
- Use appropriate caching strategies
|
|
- Monitor query performance
|
|
- Use explain analyze for optimization
|
|
|
|
Dependencies:
|
|
- GORM or SQLBoiler
|
|
- pq (PostgreSQL driver)
|
|
- validator
|
|
- migrate
|
|
- sqlx (for raw SQL when needed)
|
|
- zap or logrus for logging
|
|
|
|
Key Conventions:
|
|
1. Use consistent naming conventions
|
|
2. Implement proper documentation
|
|
3. Follow database migration best practices
|
|
4. Use version control for schema changes
|
|
5. Implement proper testing strategies
|
|
|
|
Example Model Structure:
|
|
```go
|
|
type User struct {
|
|
ID uint `gorm:"primarykey"`
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
DeletedAt gorm.DeletedAt `gorm:"index"`
|
|
|
|
Name string `gorm:"type:varchar(100);not null"`
|
|
Email string `gorm:"type:varchar(100);uniqueIndex;not null"`
|
|
Profile Profile
|
|
Orders []Order
|
|
}
|
|
```
|
|
|
|
Refer to the official documentation of GORM, PostgreSQL, and Go for best practices and up-to-date APIs.
|
|
|