import { UserGroupJoinings, UserGroups } from "@/models/index.js";
import type { User } from "@/models/entities/user.js";
import type { UserGroup } from "@/models/entities/user-group.js";

export async function getGroupActor(
	groupId: UserGroup["id"] | null | undefined,
	user: { id: User["id"] },
): Promise<UserGroup | null> {
	if (groupId == null) return null;

	const group = await UserGroups.findOneBy({ id: groupId });
	if (group == null) return null;

	if (group.userId === user.id) return group;

	const joining = await UserGroupJoinings.findOneBy({
		userId: user.id,
		userGroupId: group.id,
	});

	return joining == null ? null : group;
}
