package postgres import ( "context" "go.uber.org/zap" "gorm.io/gorm" ) // Store PostgreSQL 数据访问层整合结构 type Store struct { db *gorm.DB logger *zap.Logger User *UserStore Order *OrderStore } // NewStore 创建新的 PostgreSQL Store 实例 func NewStore(db *gorm.DB, logger *zap.Logger) *Store { return &Store{ db: db, logger: logger, User: NewUserStore(db), Order: NewOrderStore(db), } } // DB 获取数据库连接 func (s *Store) DB() *gorm.DB { return s.db } // Transaction 执行事务 // 提供统一的事务管理接口,自动处理提交和回滚 // 在事务内部,所有 Store 操作都会使用事务连接 func (s *Store) Transaction(ctx context.Context, fn func(*Store) error) error { return s.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error { // 创建事务内的 Store 实例 txStore := &Store{ db: tx, logger: s.logger, User: NewUserStore(tx), Order: NewOrderStore(tx), } return fn(txStore) }) } // WithContext 返回带上下文的数据库实例 func (s *Store) WithContext(ctx context.Context) *gorm.DB { return s.db.WithContext(ctx) }