package repository import ( "context" "github.com/google/uuid" "gorm.io/gorm" ) type UserDepartmentRepository struct{ db *gorm.DB } func NewUserDepartmentRepository(db *gorm.DB) *UserDepartmentRepository { return &UserDepartmentRepository{db: db} } type userDepartmentRow struct { UserID uuid.UUID `gorm:"column:user_id"` DepartmentID uuid.UUID `gorm:"column:department_id"` } // ListActiveByDepartmentIDs returns active user-department memberships for given department IDs. func (r *UserDepartmentRepository) ListActiveByDepartmentIDs(ctx context.Context, departmentIDs []uuid.UUID) ([]userDepartmentRow, error) { db := DBFromContext(ctx, r.db) rows := make([]userDepartmentRow, 0) if len(departmentIDs) == 0 { return rows, nil } err := db.WithContext(ctx). Table("user_department"). Select("user_id, department_id"). Where("department_id IN ? AND removed_at IS NULL", departmentIDs). Find(&rows).Error return rows, err }