getDbCode($db) . '-' . \Illuminate\Support\Str::random(config('ninja.key_length')); } /** * @param $db - Full database name * @return string - hashed and encoded int 01,02,03,04 */ public function getDbCode($db) : string { $hashids = new Hashids('', 10); return $hashids->encode(str_replace(MultiDB::DB_PREFIX, "", $db)); } public function encodePrimaryKey($value) : string { $hashids = new Hashids('', 10); return $hashids->encode($value); } public function decodePrimaryKey($value) : string { // \Log::error("pre decode = {$value}"); try { $hashids = new Hashids('', 10); $decoded_array = $hashids->decode($value); // \Log::error($decoded_array); if(!is_array($decoded_array)) throw new ModelNotFoundException("Resource not found", 1); return $decoded_array[0]; } catch (\Exception $e) { return response()->json(['error'=>'Invalid primary key'], 400); } } public function transformKeys($keys) { if (is_array($keys)) { foreach ($keys as &$value) { $value = $this->decodePrimaryKey($value); } return $keys; } else { return $this->decodePrimaryKey($keys); } } }