package model

import (
	"fmt"

	"gorm.io/gorm"

	"github.com/pingcap-inc/clinic/pkg/db"
)

func ListOrganizationsByUserID(userID uint) ([]string, error) {
	var orgsID []string
	err := db.Transaction(func(tx *gorm.DB) error {
		rows, err := tx.Raw("SELECT v2 FROM casbin_rule WHERE v0=?", fmt.Sprintf("user/%d", userID)).Rows()
		if err != nil {
			return err
		}
		for rows.Next() {
			var orgID string
			if err := rows.Scan(&orgID); err != nil {
				return err
			}
			orgsID = append(orgsID, orgID)
		}
		return nil
	})
	if err != nil {
		return nil, err
	}

	return orgsID, nil
}
