package service

import (
	"context"
	"icloudapp.cn/tools/service/dependency"
	"icloudapp.cn/tools/service/entity"
	"icloudapp.cn/tools/service/model"
)

type Group struct {
	ctx context.Context
	dependency.IGroupRes
	query *model.MGroup
}

func NewGroup(ctx context.Context) *Group {
	group := &Group{ctx: ctx}
	group.query = model.Group
	return group
}

// Info 查询单个group信息
func (g *Group) Info(groupId int64) (*entity.Group, error) {
	query := model.Group
	group, err := query.WithContext(g.ctx).ReadDB().Where(query.GroupID.Eq(groupId)).First()
	if err != nil {
		return nil, err
	}

	return group, nil
}

// Infos 批量查询 group 信息
func (g *Group) Infos(groupsID ...int64) (map[int64]*entity.Group, error) {
	groups := make(map[int64]*entity.Group, len(groupsID))
	groupsInfo, err := g.query.WithContext(g.ctx).ReadDB().Where(g.query.GroupID.In(groupsID...)).Find()

	if err != nil {
		return groups, err
	}
	for _, val := range groupsInfo {
		groups[val.GroupID] = val
	}

	for _, groupID := range groupsID {
		if _, ok := groups[groupID]; !ok {
			groups[groupID] = nil
		}
	}

	return groups, nil
}