Skip to content

Fix #703 - Use the term "match" in the API and Lobby#704

Merged
delucis merged 14 commits into
boardgameio:0.40.0from
adngdb:703-lobby-api-match-term
May 21, 2020
Merged

Fix #703 - Use the term "match" in the API and Lobby#704
delucis merged 14 commits into
boardgameio:0.40.0from
adngdb:703-lobby-api-match-term

Conversation

@adngdb
Copy link
Copy Markdown
Contributor

@adngdb adngdb commented May 18, 2020

Here's where I'm at with this work. I've tried to do it slowly, with a lot of small, focused commits, to make this easier to review. I know how painful this type of change is to review, sorry in advance! :)

I believe this covers all of the instances of "room" in the api and lobby, as well as all the cases where "game" was used but it actually meant "match". It is, however, likely that I have missed some instances in some corners of the app. I'm counting on you to spot them! 😁

Regarding documentation, I guess we'll want to explain the changes very clearly. Should that be in the changelog? I want to wait until these changes are validated before writing that doc though.

Copy link
Copy Markdown
Member

@delucis delucis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Firstly, thanks for this super thorough PR! I hadn’t even fully thought through the implications and the changes necessary. 🙌

I’ve gone through and everything seems solid — I’ve caught a bunch of renaming that should still be done but nothing that changes APIs I don’t think.

Comment thread src/lobby/connection.js Outdated
Comment thread src/lobby/connection.js Outdated
Comment thread src/lobby/connection.test.js Outdated
Comment thread src/master/master.test.ts Outdated
Comment thread src/master/master.test.ts Outdated
Comment thread src/server/api.test.ts Outdated
Comment thread src/server/api.test.ts Outdated
Comment thread src/server/api.test.ts Outdated
Comment thread src/server/db/base.ts Outdated
Comment thread src/server/db/base.ts Outdated
@adngdb adngdb requested a review from delucis May 21, 2020 16:18
@delucis delucis merged commit adb251d into boardgameio:0.40.0 May 21, 2020
@delucis
Copy link
Copy Markdown
Member

delucis commented May 21, 2020

Thanks again for this Adrian!

@adngdb adngdb deleted the 703-lobby-api-match-term branch May 21, 2020 16:38
@delucis delucis mentioned this pull request May 21, 2020
nicolodavis added a commit that referenced this pull request Sep 1, 2020
* feat(server): Expose API router (#698)

BREAKING CHANGES: Previously a custom `uuid` function used by the Lobby API to generate game IDs could be passed in the `lobbyConfig` option on `server.run`. This must now be passed directly to the server:

```js
const server = Server({
  uuid: () => 'id',
});
```

### All commits

* Expose API router
* refactor(server): Pass uuid directly to Server and createRouter
* docs(server): Move uuid from lobbyConfig on run to Server options

Co-authored-by: delucis <swithinbank@gmail.com>

* fix(api): Expose gameover metadata in rooms endpoints. (#666)

* fix(api): Expose gameover metadata in rooms endpoints.

This adds the `gameover` metadata, if it exists, to both the all rooms and single room query endpoints.

Fixes #665.

* Refactor game metadata redacting into a function.

Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

* refactor(server): Use the term "match" in the API and Lobby (#704)

Closes #703

* GameMetadata -> MatchMetadata

* rooms -> matches

* API exposes `matchID`, make Lobby use that instead of `gameID` or `roomID`.

* CreateGame -> CreateMatch

* gameID, roomID -> matchID

* Document Lobby API endpoints.

* nextRoomID -> nextMatchID

* Update error messages.

* gameList -> matchList

* Use "match" wherever it makes sense in lobby code.

* Replace "room" with "match" in documentation.

* Rename 'game' to 'match' in comments and test names.

Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

* doesGameRequireAuthentication -> doesMatchRequireAuthentication

* Rename gameID to matchID in database interface functions.

Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>

* Merge branch 'master' into 0.40.0

* feat(server): allow to filter listGames query (#740)

* add createdAt, updatedAt to metadata, add listGames filters

* case-insensitive boolean parsing

* implement inmemory listGames filter

* feat: Add plain JS lobby client (#728)

* feat(server): Create types for Lobby API data

Closes #707

This creates types for data returned by the Lobby API and uses them to 
type the response bodies in the server-side router.

* refactor(types): Include min and max players options in Game interface

* refactor(lobby): Convert connection class to Typescript

* feat(lobby): Create a plain JS LobbyClient

LobbyClient is a lightweight wrapper around `fetch` calls to a 
boardgame.io Lobby API server. Apart from the server’s base URL, it is 
stateless and serves mainly to allow argument validation and to abstract 
away a few request details. Unlike plain fetch, requests will throw 
errors if they don’t return `ok` (i.e. status 2xx).

* refactor(lobby): Use new LobbyClient class in React lobby connection

* fix(lobby): Include missing import for React types

* docs(api): Update Lobby docs to convert game to match more thoroughly

* docs: Correct inline documentation block

* docs: Update Lobby docs

- Add examples with the plain JS client
- Move the server config details to the Server doc

* feat(lobby): Add support for listMatches filtering to client

#740 added the ability to pass query string parameters to the 
listMatches API endpoint to filter the matches returned. This adds 
support for building the relevant query string to the lobby client’s 
listMatches method.

* test(lobby): Fix type error in Lobby connection test

Add `createdAt` and `updatedAt` fields to mock match data

* test(db): Fix coverage for InMemory storage class

* test(master): Fix muddled updatedAt/gameover tests

Two tests for gameover & updatedAt in match metadata were 
mislabelled/mixed up a bit. This tidies up the confusion and in the 
process improves test coverage.

* test(api): Add coverage for invalid query params when listing matches

* feat: Improve consistency around “match” instead of “game” (#765)

* refactor: Rename `gameID` to `matchID` in clients & transports

* docs: Update to replace `gameID` with `matchID`

* docs: Update example code to use `matchID` instead of `gameID`

* refactor: `gameMetadata` → `matchMetadata` in clients & transports

* refactor: `matchMetadata` → `matchData`

* refactor(types): `MatchMetadata` → `MatchData`

* fix test

Co-authored-by: Clemens Wolff <clewolff@microsoft.com>
Co-authored-by: Adrian Gaudebert <adrian@gaudebert.fr>
Co-authored-by: janKir <9143877+janKir@users.noreply.github.com>
Co-authored-by: Nicolo John Davis <nicolodavis@gmail.com>
@delucis delucis mentioned this pull request May 17, 2021
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants