package infrastructure import ( "context" "mengstack/internal/modules/rbac/domain" "gorm.io/gorm" ) type permRepo struct { db *gorm.DB } func NewPermissionRepository(db *gorm.DB) domain.PermissionRepository { return &permRepo{db: db} } func (r *permRepo) Create(ctx context.Context, perm *domain.Permission) error { return r.db.WithContext(ctx).Create(perm).Error } func (r *permRepo) FindByID(ctx context.Context, id uint) (*domain.Permission, error) { var perm domain.Permission err := r.db.WithContext(ctx).First(&perm, id).Error return &perm, err } func (r *permRepo) FindByCode(ctx context.Context, code string) (*domain.Permission, error) { var perm domain.Permission err := r.db.WithContext(ctx).Where("code = ?", code).First(&perm).Error return &perm, err } func (r *permRepo) FindAll(ctx context.Context) ([]domain.Permission, error) { var perms []domain.Permission err := r.db.WithContext(ctx).Order("module, code").Find(&perms).Error return perms, err } func (r *permRepo) FindByModule(ctx context.Context, module string) ([]domain.Permission, error) { var perms []domain.Permission err := r.db.WithContext(ctx).Where("module = ?", module).Order("code").Find(&perms).Error return perms, err }