database = $database; } public function handle(Request $request, ConnectionInterface $httpConnection) { $validator = Validator::make($request->all(), [ 'name' => 'required', ], [ 'required' => 'The :attribute field is required.', ]); if ($validator->fails()) { $httpConnection->send(respond_json(['errors' => $validator->getMessageBag()], 401)); $httpConnection->close(); return; } $insertData = [ 'name' => $request->get('name'), 'auth_token' => (string)Str::uuid() ]; $this->database->query(" INSERT INTO users (name, auth_token, created_at) VALUES (:name, :auth_token, DATETIME('now')) ", $insertData) ->then(function (Result $result) use ($httpConnection) { $this->database->query("SELECT * FROM users WHERE id = :id", ['id' => $result->insertId]) ->then(function (Result $result) use ($httpConnection) { $httpConnection->send(respond_json(['user' => $result->rows[0]], 200)); $httpConnection->close(); }); }); } }