api = $api; } public function handle(): void { $this->api->groups(null)->each(function ($group) { $parent = Group::updateOrCreate(['nami_id' => $group->id], ['nami_id' => $group->id, 'name' => $group->name]); $this->syncChildren($group, $parent); }); } private function syncChildren(NamiGroup $namiParent, Group $parent): void { $this->api->groups($namiParent)->each(function ($subgroup) use ($parent) { $newParent = Group::updateOrCreate(['nami_id' => $subgroup->id], ['nami_id' => $subgroup->id, 'name' => $subgroup->name, 'parent_id' => $parent->id]); $this->syncChildren($subgroup, $newParent); }); } public function restore(): void { DB::table('groups')->delete(); } }