Converted the Api to a Restful api.
This commit is contained in:
@@ -14,9 +14,9 @@ servers:
|
|||||||
description: Gamenight
|
description: Gamenight
|
||||||
paths:
|
paths:
|
||||||
/token:
|
/token:
|
||||||
get:
|
post:
|
||||||
summary: ''
|
summary: 'Login a user.'
|
||||||
operationId: get-token
|
operationId: post-token
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/TokenResponse'
|
$ref: '#/components/responses/TokenResponse'
|
||||||
@@ -26,9 +26,10 @@ paths:
|
|||||||
$ref: '#/components/requestBodies/LoginRequest'
|
$ref: '#/components/requestBodies/LoginRequest'
|
||||||
description: Submit your credentials to get a JWT-token to use with the rest of the api.
|
description: Submit your credentials to get a JWT-token to use with the rest of the api.
|
||||||
parameters: []
|
parameters: []
|
||||||
|
/refresh_token:
|
||||||
post:
|
post:
|
||||||
summary: ''
|
summary: 'Refresh a user token'
|
||||||
operationId: post-token
|
operationId: post-refresh-token
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/TokenResponse'
|
$ref: '#/components/responses/TokenResponse'
|
||||||
@@ -40,6 +41,8 @@ paths:
|
|||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/users:
|
/users:
|
||||||
get:
|
get:
|
||||||
|
summary: 'Get all users'
|
||||||
|
operationId: get-users
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/UsersResponse'
|
$ref: '#/components/responses/UsersResponse'
|
||||||
@@ -49,10 +52,9 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/user:
|
|
||||||
post:
|
post:
|
||||||
summary: ''
|
summary: 'Registers a user into gamenight.'
|
||||||
operationId: post-register
|
operationId: post-users
|
||||||
requestBody:
|
requestBody:
|
||||||
$ref: '#/components/requestBodies/RegisterRequest'
|
$ref: '#/components/requestBodies/RegisterRequest'
|
||||||
responses:
|
responses:
|
||||||
@@ -64,11 +66,17 @@ paths:
|
|||||||
parameters: [ ]
|
parameters: [ ]
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
|
/user/{userId}:
|
||||||
get:
|
get:
|
||||||
description: 'Get a user from primary id'
|
description: 'Get a user from primary id'
|
||||||
requestBody:
|
operationId: 'get-user'
|
||||||
$ref: '#/components/requestBodies/GetUserRequest'
|
parameters:
|
||||||
parameters: []
|
- in: path
|
||||||
|
name: userId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of user to get
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/UserResponse'
|
$ref: '#/components/responses/UserResponse'
|
||||||
@@ -80,9 +88,30 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
|
/user/{userId}/owned_games:
|
||||||
|
get:
|
||||||
|
summary: Get owned games of user
|
||||||
|
operationId: get-user-owned_games
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: userId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of user to get owned games for.
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/OwnedGamesResponse'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
'422':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
security:
|
||||||
|
- JWT-Auth: [ ]
|
||||||
/gamenights:
|
/gamenights:
|
||||||
get:
|
get:
|
||||||
summary: Get a all gamenights
|
summary: Get a all gamenights
|
||||||
|
operationId: get-gamenights
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/GamenightsResponse'
|
$ref: '#/components/responses/GamenightsResponse'
|
||||||
@@ -90,29 +119,12 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
operationId: get-gamenights
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
description: Retrieve the list of gamenights on this gamenight server. Requires authorization.
|
description: Retrieve the list of gamenights on this gamenight server. Requires authorization.
|
||||||
/participants:
|
|
||||||
get:
|
|
||||||
summary: Get all participants for a gamenight
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
$ref: '#/components/responses/ParticipantsResponse'
|
|
||||||
'400':
|
|
||||||
$ref: '#/components/responses/FailureResponse'
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/FailureResponse'
|
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/GetParticipants'
|
|
||||||
security:
|
|
||||||
- JWT-Auth: []
|
|
||||||
description: Retrieve the participants of a single gamenight by id.
|
|
||||||
/gamenight:
|
|
||||||
post:
|
post:
|
||||||
summary: ''
|
summary: 'Gets the gamenight'
|
||||||
operationId: post-gamenight
|
operationId: post-gamenights
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: OK
|
description: OK
|
||||||
@@ -125,9 +137,17 @@ paths:
|
|||||||
requestBody:
|
requestBody:
|
||||||
$ref: '#/components/requestBodies/AddGamenight'
|
$ref: '#/components/requestBodies/AddGamenight'
|
||||||
description: 'Add a gamenight by providing a name and a date, only available when providing an JWT token.'
|
description: 'Add a gamenight by providing a name and a date, only available when providing an JWT token.'
|
||||||
|
/gamenight/{gamenightId}:
|
||||||
get:
|
get:
|
||||||
summary: ''
|
summary: 'get the specified gamenight'
|
||||||
operationId: get-gamenight
|
operationId: get-gamenight
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gamenightId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of gamenight to get.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/GamenightResponse'
|
$ref: '#/components/responses/GamenightResponse'
|
||||||
@@ -135,12 +155,39 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/GetGamenight'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/join:
|
/gamenight/{gamenightId}/participants:
|
||||||
|
get:
|
||||||
|
summary: Get all participants for a gamenight
|
||||||
|
operationId: get-gamenight-participants
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gamenightId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of gamenight to get participants for.
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/ParticipantsResponse'
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
security:
|
||||||
|
- JWT-Auth: [ ]
|
||||||
|
description: Retrieve the participants of a single gamenight by id.
|
||||||
post:
|
post:
|
||||||
|
summary: Add a participant
|
||||||
|
operationId: post-gamenight-participants
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gamenightId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of gamenight to add participants for.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: OK
|
description: OK
|
||||||
@@ -149,11 +196,26 @@ paths:
|
|||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
requestBody:
|
||||||
$ref: '#/components/requestBodies/JoinGamenight'
|
$ref: '#/components/requestBodies/UserIdRequestBody'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/leave:
|
/gamenight/{gamenightId}/participant/{userId}:
|
||||||
post:
|
delete:
|
||||||
|
summary: deletes a gamenight participant
|
||||||
|
operationId: delete-gamenight-participant
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gamenightId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of gamenight to delete participant for
|
||||||
|
- in: path
|
||||||
|
name: userId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of the of the participant to remove
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: "OK"
|
description: "OK"
|
||||||
@@ -161,12 +223,12 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/LeaveGamenight'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
/games:
|
/games:
|
||||||
get:
|
get:
|
||||||
|
summary: get all games
|
||||||
|
operationId: get-games
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/GamesResponse'
|
$ref: '#/components/responses/GamesResponse'
|
||||||
@@ -176,20 +238,9 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/game:
|
|
||||||
get:
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
$ref: '#/components/responses/GameResponse'
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/FailureResponse'
|
|
||||||
'422':
|
|
||||||
$ref: '#/components/responses/FailureResponse'
|
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/GetGameRequest'
|
|
||||||
security:
|
|
||||||
- JWT-Auth: []
|
|
||||||
post:
|
post:
|
||||||
|
summary: add a game
|
||||||
|
operationId: post-games
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/GameIdResponse'
|
$ref: '#/components/responses/GameIdResponse'
|
||||||
@@ -201,7 +252,36 @@ paths:
|
|||||||
$ref: '#/components/requestBodies/AddGameRequest'
|
$ref: '#/components/requestBodies/AddGameRequest'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
|
/game/{gameId}:
|
||||||
|
get:
|
||||||
|
summary: Get this specific game
|
||||||
|
operationId: get-game
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gameId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of game to get.
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/GameResponse'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
'422':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
security:
|
||||||
|
- JWT-Auth: []
|
||||||
delete:
|
delete:
|
||||||
|
summary: Delete this game.
|
||||||
|
operationId: delete-game
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gameId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of game to delete.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: "Ok"
|
description: "Ok"
|
||||||
@@ -209,12 +289,18 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/RemoveGameRequest'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
/rename_game:
|
put:
|
||||||
post:
|
summary: Changes this game resource
|
||||||
|
operationId: put-game
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gameId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of game to change.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: "OK"
|
description: "OK"
|
||||||
@@ -223,11 +309,22 @@ paths:
|
|||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
requestBody:
|
||||||
$ref: '#/components/requestBodies/RenameGameRequest'
|
$ref: '#/components/requestBodies/EditGameRequest'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/own:
|
/game/{gameId}/owners:
|
||||||
post:
|
post:
|
||||||
|
summary: Own this game
|
||||||
|
operationId: post-game-owners
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gameId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of game to own.
|
||||||
|
requestBody:
|
||||||
|
$ref: '#/components/requestBodies/OwnGameRequestBody'
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: "OK"
|
description: "OK"
|
||||||
@@ -235,12 +332,25 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/OwnGameRequest'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/disown:
|
/game/{gameId}/owner/{userId}:
|
||||||
post:
|
delete:
|
||||||
|
summary: no longer own this game
|
||||||
|
operationId: delete-game-owner
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: gameId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of game that user no longer owns.
|
||||||
|
- in: path
|
||||||
|
name: userId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of user that no longer owns.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: "OK"
|
description: "OK"
|
||||||
@@ -248,37 +358,24 @@ paths:
|
|||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/DisownGameRequest'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/owned_games:
|
/locations:
|
||||||
get:
|
get:
|
||||||
|
summary: get all locations
|
||||||
|
operationId: get-locations
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: "#/components/responses/GameIdsResponse"
|
$ref: '#/components/responses/LocationsResponse'
|
||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/OwnedGamesRequest'
|
|
||||||
security:
|
|
||||||
- JWT-Auth: []
|
|
||||||
/location:
|
|
||||||
get:
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
$ref: '#/components/responses/LocationResponse'
|
|
||||||
'401':
|
|
||||||
$ref: '#/components/responses/FailureResponse'
|
|
||||||
'422':
|
|
||||||
$ref: '#/components/responses/FailureResponse'
|
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/GetLocationRequest'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
post:
|
post:
|
||||||
|
summary: add a location
|
||||||
|
operationId: post-locations
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/LocationIdResponse'
|
$ref: '#/components/responses/LocationIdResponse'
|
||||||
@@ -290,19 +387,56 @@ paths:
|
|||||||
$ref: '#/components/requestBodies/AddLocationRequest'
|
$ref: '#/components/requestBodies/AddLocationRequest'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
/locations:
|
/location/{locationId}:
|
||||||
get:
|
get:
|
||||||
|
summary: gets this location
|
||||||
|
operationId: get-location
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: locationId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of location to get.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: '#/components/responses/LocationsResponse'
|
$ref: '#/components/responses/LocationResponse'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
'422':
|
||||||
|
$ref: '#/components/responses/FailureResponse'
|
||||||
|
security:
|
||||||
|
- JWT-Auth: []
|
||||||
|
/location/{locationId}/authorized_users/:
|
||||||
|
get:
|
||||||
|
summary: gets this locations authorized users
|
||||||
|
operationId: get-location-authorized_users
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: locationId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of location to get authorized users for.
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: "#/components/responses/UserIdsResponse"
|
||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
/location_authorize:
|
|
||||||
post:
|
post:
|
||||||
|
summary: Authorize a user
|
||||||
|
operationId: post-location-authorized_users
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: locationId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid location to authorize for.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: 'Ok'
|
description: 'Ok'
|
||||||
@@ -311,22 +445,36 @@ paths:
|
|||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
requestBody:
|
||||||
$ref: '#/components/requestBodies/AuthorizeLocationRequest'
|
$ref: '#/components/requestBodies/UserIdRequestBody'
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: []
|
- JWT-Auth: []
|
||||||
/authorized_location_user_ids:
|
/location/{locationId}/authorized_user/{userId}:
|
||||||
get:
|
delete:
|
||||||
|
summary: remove an authorized user from a location
|
||||||
|
operationId: delete-location-authorized_user
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: locationId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of location to deauthorize for.
|
||||||
|
- in: path
|
||||||
|
name: userId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
description: Uuid of user ot deauthorize.
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
$ref: "#/components/responses/UserIdsResponse"
|
description: 'Ok'
|
||||||
'401':
|
'401':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
'422':
|
'422':
|
||||||
$ref: '#/components/responses/FailureResponse'
|
$ref: '#/components/responses/FailureResponse'
|
||||||
requestBody:
|
|
||||||
$ref: '#/components/requestBodies/AuthorizedLocationUserIdsRequest'
|
|
||||||
security:
|
security:
|
||||||
- JWT-Auth: [ ]
|
- JWT-Auth: [ ]
|
||||||
|
|
||||||
components:
|
components:
|
||||||
schemas:
|
schemas:
|
||||||
Gamenight:
|
Gamenight:
|
||||||
@@ -410,15 +558,28 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- user_id
|
- user_id
|
||||||
|
OwnGame:
|
||||||
|
title: OwnGame
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
user_id:
|
||||||
|
type: string
|
||||||
|
location_id:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- user_id
|
||||||
OwnedGame:
|
OwnedGame:
|
||||||
title: OwnedGame
|
title: OwnedGame
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
user_id:
|
||||||
|
type: string
|
||||||
game_id:
|
game_id:
|
||||||
type: string
|
type: string
|
||||||
location_id:
|
location_id:
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
|
- user_id
|
||||||
- game_id
|
- game_id
|
||||||
LocationId:
|
LocationId:
|
||||||
title: LocationId
|
title: LocationId
|
||||||
@@ -455,11 +616,6 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- game_id
|
- game_id
|
||||||
GetGamenightRequestBody:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
User:
|
User:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@@ -489,7 +645,7 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
RenameGameRequestBody:
|
EditGameRequestBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
@@ -499,19 +655,10 @@ components:
|
|||||||
required:
|
required:
|
||||||
- id
|
- id
|
||||||
- name
|
- name
|
||||||
OwnGameRequestBody:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
game_id:
|
|
||||||
type: string
|
|
||||||
location_id:
|
|
||||||
type: string
|
|
||||||
required:
|
|
||||||
- game_id
|
|
||||||
GameIdsResponse:
|
GameIdsResponse:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: "#/components/schemas/OwnedGame"
|
$ref: "#/components/schemas/GameId"
|
||||||
UserIdsResponse:
|
UserIdsResponse:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
@@ -541,21 +688,17 @@ components:
|
|||||||
required:
|
required:
|
||||||
- id
|
- id
|
||||||
- name
|
- name
|
||||||
AuthorizeLocationRequestBody:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
location_id:
|
|
||||||
type: string
|
|
||||||
user_id:
|
|
||||||
type: string
|
|
||||||
op:
|
|
||||||
type: string
|
|
||||||
enum: [grant, revoke]
|
|
||||||
required:
|
|
||||||
- location_id
|
|
||||||
- user_id
|
|
||||||
- op
|
|
||||||
requestBodies:
|
requestBodies:
|
||||||
|
UserIdRequestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/UserId'
|
||||||
|
OwnGameRequestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/OwnGame'
|
||||||
LoginRequest:
|
LoginRequest:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@@ -566,91 +709,31 @@ components:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Registration'
|
$ref: '#/components/schemas/Registration'
|
||||||
GetUserRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/UserId'
|
|
||||||
AddGamenight:
|
AddGamenight:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/AddGamenightRequestBody'
|
$ref: '#/components/schemas/AddGamenightRequestBody'
|
||||||
GetGamenight:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/GetGamenightRequestBody'
|
|
||||||
GetParticipants:
|
GetParticipants:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/GamenightId'
|
$ref: '#/components/schemas/GamenightId'
|
||||||
JoinGamenight:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/GamenightId'
|
|
||||||
LeaveGamenight:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/GamenightId'
|
|
||||||
GetGameRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/GameId'
|
|
||||||
AddGameRequest:
|
AddGameRequest:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/AddGameRequestBody'
|
$ref: '#/components/schemas/AddGameRequestBody'
|
||||||
RenameGameRequest:
|
EditGameRequest:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/RenameGameRequestBody'
|
$ref: '#/components/schemas/EditGameRequestBody'
|
||||||
RemoveGameRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/GameId'
|
|
||||||
OwnGameRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/OwnGameRequestBody'
|
|
||||||
DisownGameRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/GameId'
|
|
||||||
OwnedGamesRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/UserId'
|
|
||||||
GetLocationRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/LocationId'
|
|
||||||
AddLocationRequest:
|
AddLocationRequest:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/AddLocationRequestBody'
|
$ref: '#/components/schemas/AddLocationRequestBody'
|
||||||
AuthorizeLocationRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/AuthorizeLocationRequestBody'
|
|
||||||
AuthorizedLocationUserIdsRequest:
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/LocationId'
|
|
||||||
|
|
||||||
responses:
|
responses:
|
||||||
TokenResponse:
|
TokenResponse:
|
||||||
@@ -743,7 +826,6 @@ components:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/LocationId'
|
$ref: '#/components/schemas/LocationId'
|
||||||
|
|
||||||
LocationsResponse:
|
LocationsResponse:
|
||||||
description: A list of all LocationsResponse
|
description: A list of all LocationsResponse
|
||||||
content:
|
content:
|
||||||
@@ -752,6 +834,14 @@ components:
|
|||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Location'
|
$ref: '#/components/schemas/Location'
|
||||||
|
OwnedGamesResponse:
|
||||||
|
description: A list of OwnedGames
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/OwnedGame'
|
||||||
|
|
||||||
securitySchemes:
|
securitySchemes:
|
||||||
JWT-Auth:
|
JWT-Auth:
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ use actix_web::middleware::Logger;
|
|||||||
use actix_web::web;
|
use actix_web::web;
|
||||||
use actix_web::App;
|
use actix_web::App;
|
||||||
use actix_web::HttpServer;
|
use actix_web::HttpServer;
|
||||||
use gamenight_database::*;
|
use gamenight_database::{get_connection_pool, run_migration, GetConnection};
|
||||||
use request::{gamenights, login, register, *};
|
use request::*;
|
||||||
use tracing_actix_web::TracingLogger;
|
use tracing_actix_web::TracingLogger;
|
||||||
|
|
||||||
#[actix_web::main]
|
#[actix_web::main]
|
||||||
@@ -37,30 +37,30 @@ async fn main() -> std::io::Result<()> {
|
|||||||
.wrap(Logger::default())
|
.wrap(Logger::default())
|
||||||
.wrap(TracingLogger::default())
|
.wrap(TracingLogger::default())
|
||||||
.app_data(web::Data::new(pool.clone()))
|
.app_data(web::Data::new(pool.clone()))
|
||||||
.service(login)
|
.service(token::post_token)
|
||||||
.service(refresh)
|
.service(token::post_refresh_token)
|
||||||
.service(register)
|
.service(users::get_users)
|
||||||
.service(gamenights)
|
.service(users::post_users)
|
||||||
.service(gamenight_post)
|
.service(user::get_user)
|
||||||
.service(gamenight_get)
|
.service(user_owned_games::get_user_owned_games)
|
||||||
.service(get_user)
|
.service(gamenights::get_gamenights)
|
||||||
.service(get_users)
|
.service(gamenights::post_gamenights)
|
||||||
.service(get_user_unauthenticated)
|
.service(gamenight::get_gamenight)
|
||||||
.service(post_join_gamenight)
|
.service(gamenight_participants::get_gamenight_participants)
|
||||||
.service(post_leave_gamenight)
|
.service(gamenight_participants::post_gamenight_participants)
|
||||||
.service(get_get_participants)
|
.service(gamenight_participant::delete_gamenight_participant)
|
||||||
.service(get_games)
|
.service(games::get_games)
|
||||||
.service(get_game)
|
.service(games::post_games)
|
||||||
.service(post_game)
|
.service(game::get_game)
|
||||||
.service(post_rename_game)
|
.service(game::delete_game)
|
||||||
.service(post_own_game)
|
.service(game::put_game)
|
||||||
.service(post_disown_game)
|
.service(game_owners::post_game_owners)
|
||||||
.service(get_owned_games)
|
.service(game_owner::delete_game_owner)
|
||||||
.service(delete_game)
|
.service(locations::get_locations)
|
||||||
.service(get_locations)
|
.service(locations::post_locations)
|
||||||
.service(post_location)
|
.service(location_authorized_users::get_location_authorized_users)
|
||||||
.service(post_location_authorize)
|
.service(location_authorized_users::post_location_authorized_users)
|
||||||
.service(get_authorized_location_user_ids)
|
.service(location_authorized_user::delete_location_authorized_user)
|
||||||
})
|
})
|
||||||
.bind(("::1", 8080))?
|
.bind(("::1", 8080))?
|
||||||
.run()
|
.run()
|
||||||
|
|||||||
@@ -1,60 +1,24 @@
|
|||||||
use gamenight_database::owned_game::OwnedGame;
|
use actix_web::{delete, get, http::header::ContentType, put, web, HttpResponse, Responder};
|
||||||
use crate::game::rename_game;
|
use gamenight_database::game::{load_game, remove_game, rename_game};
|
||||||
use crate::owned_game::own_game;
|
|
||||||
use crate::owned_game::owned_games;
|
|
||||||
use crate::owned_game::disown_game;
|
|
||||||
use gamenight_database::game::load_game;
|
|
||||||
use crate::game::insert_game;
|
|
||||||
use uuid::Uuid;
|
|
||||||
use crate::game::remove_game;
|
|
||||||
use actix_web::{delete, get, http::header::ContentType, post, web, HttpResponse, Responder};
|
|
||||||
use gamenight_database::{
|
use gamenight_database::{
|
||||||
user::Role,
|
user::Role,
|
||||||
DbPool, GetConnection,
|
DbPool, GetConnection,
|
||||||
};
|
};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::{models, models::{
|
use crate::{models::{
|
||||||
add_game_request_body::AddGameRequestBody, game::Game, game_id::GameId,
|
edit_game_request_body::EditGameRequestBody, game::Game
|
||||||
rename_game_request_body::RenameGameRequestBody, own_game_request_body::OwnGameRequestBody
|
,
|
||||||
}, request::{authorization::AuthUser, error::ApiError}};
|
}, request::{authorization::AuthUser, error::ApiError}};
|
||||||
|
|
||||||
#[get("/games")]
|
#[get("/game/{game_id}")]
|
||||||
pub async fn get_games(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let games: Vec<gamenight_database::game::Game> = gamenight_database::games(&mut conn)?;
|
|
||||||
let model: Vec<Game> = games
|
|
||||||
.iter()
|
|
||||||
.map(|x| Game {
|
|
||||||
id: x.id.to_string(),
|
|
||||||
name: x.name.clone(),
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&model)?))
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<AddGameRequestBody> for gamenight_database::game::Game {
|
|
||||||
fn from(value: AddGameRequestBody) -> Self {
|
|
||||||
Self {
|
|
||||||
id: Uuid::new_v4(),
|
|
||||||
name: value.name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/game")]
|
|
||||||
pub async fn get_game(
|
pub async fn get_game(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
_user: AuthUser,
|
_user: AuthUser,
|
||||||
game_id: web::Json<GameId>,
|
game_id: web::Path<Uuid>
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
let mut conn = pool.get_conn();
|
let mut conn = pool.get_conn();
|
||||||
let db_game = load_game(&mut conn, Uuid::parse_str(&game_id.0.game_id)?)?;
|
let db_game = load_game(&mut conn, game_id.into_inner())?;
|
||||||
|
|
||||||
let model = Game {
|
let model = Game {
|
||||||
id: db_game.id.to_string(),
|
id: db_game.id.to_string(),
|
||||||
@@ -66,106 +30,35 @@ pub async fn get_game(
|
|||||||
.body(serde_json::to_string(&model)?))
|
.body(serde_json::to_string(&model)?))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/game")]
|
#[delete("/game/{game_id}")]
|
||||||
pub async fn post_game(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
game_data: web::Json<AddGameRequestBody>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let game = game_data.0.into();
|
|
||||||
insert_game(&mut conn, &game)?;
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&GameId{game_id: game.id.to_string()})?))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[delete("/game")]
|
|
||||||
pub async fn delete_game(
|
pub async fn delete_game(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
user: AuthUser,
|
user: AuthUser,
|
||||||
game_id: web::Json<GameId>,
|
game_id: web::Path<Uuid>,
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
if user.0.role != Role::Admin {
|
if user.0.role != Role::Admin {
|
||||||
Ok(HttpResponse::Unauthorized())
|
Ok(HttpResponse::Unauthorized())
|
||||||
} else {
|
} else {
|
||||||
let mut conn = pool.get_conn();
|
let mut conn = pool.get_conn();
|
||||||
remove_game(&mut conn, Uuid::parse_str(&game_id.0.game_id)?)?;
|
remove_game(&mut conn, game_id.into_inner())?;
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
Ok(HttpResponse::Ok())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/rename_game")]
|
#[put("/game/{gameId}")]
|
||||||
pub async fn post_rename_game(
|
pub async fn put_game(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
_user: AuthUser,
|
_user: AuthUser,
|
||||||
game_data: web::Json<RenameGameRequestBody>,
|
game_id: web::Path<Uuid>,
|
||||||
|
edit_data: web::Json<EditGameRequestBody>,
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
let mut conn = pool.get_conn();
|
let mut conn = pool.get_conn();
|
||||||
rename_game(
|
rename_game(
|
||||||
&mut conn,
|
&mut conn,
|
||||||
Uuid::parse_str(&game_data.0.id)?,
|
game_id.into_inner(),
|
||||||
game_data.0.name,
|
edit_data.name.clone(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
Ok(HttpResponse::Ok())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/own")]
|
|
||||||
pub async fn post_own_game(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
user: AuthUser,
|
|
||||||
own_data: web::Json<OwnGameRequestBody>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
own_game(
|
|
||||||
&mut conn,
|
|
||||||
OwnedGame {
|
|
||||||
user_id: user.0.id,
|
|
||||||
game_id: Uuid::parse_str(&own_data.game_id)?,
|
|
||||||
location_id: own_data.location_id.clone().map(|x| Uuid::parse_str(&x).unwrap()),
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[post("/disown")]
|
|
||||||
pub async fn post_disown_game(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
user: AuthUser,
|
|
||||||
game_id: web::Json<GameId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
disown_game(
|
|
||||||
&mut conn,
|
|
||||||
OwnedGame {
|
|
||||||
user_id: user.0.id,
|
|
||||||
game_id: Uuid::parse_str(&game_id.0.game_id)?,
|
|
||||||
location_id: None
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/owned_games")]
|
|
||||||
pub async fn get_owned_games(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
user: AuthUser,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let game_ids = owned_games(&mut conn, user.0.id)?;
|
|
||||||
|
|
||||||
|
|
||||||
let model = game_ids.iter().map(|(u, l)| models::owned_game::OwnedGame {
|
|
||||||
game_id: u.to_string(),
|
|
||||||
location_id: l.map(|x| x.to_string())
|
|
||||||
}).collect::<Vec<models::owned_game::OwnedGame>>();
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&model)?))
|
|
||||||
}
|
|
||||||
|
|||||||
26
backend-actix/src/request/game_owner.rs
Normal file
26
backend-actix/src/request/game_owner.rs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
use actix_web::{delete, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::owned_game::{disown_game, OwnedGame};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
#[delete("/game/{gameId}/owner/{ownerId}")]
|
||||||
|
pub async fn delete_game_owner(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
game_id: web::Path<Uuid>,
|
||||||
|
owner_id: web::Path<Uuid>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
disown_game(
|
||||||
|
&mut conn,
|
||||||
|
OwnedGame {
|
||||||
|
user_id: owner_id.into_inner(),
|
||||||
|
game_id: game_id.into_inner(),
|
||||||
|
location_id: None
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok())
|
||||||
|
}
|
||||||
27
backend-actix/src/request/game_owners.rs
Normal file
27
backend-actix/src/request/game_owners.rs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
use actix_web::{post, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::owned_game::{own_game, OwnedGame};
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::models::game_id::GameId;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
|
||||||
|
#[post("/game/{gameId}/owned_games")]
|
||||||
|
pub async fn post_game_owners(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
game_id: web::Path<GameId>,
|
||||||
|
own_data: web::Json<OwnedGame>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
own_game(
|
||||||
|
&mut conn,
|
||||||
|
OwnedGame {
|
||||||
|
user_id: own_data.user_id,
|
||||||
|
game_id: Uuid::parse_str(&game_id.game_id)?,
|
||||||
|
location_id: own_data.location_id,
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok())
|
||||||
|
}
|
||||||
32
backend-actix/src/request/gamenight.rs
Normal file
32
backend-actix/src/request/gamenight.rs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
use actix_web::{get, http::header::ContentType, web, HttpResponse, Responder};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
use gamenight_database::{gamenight, DbPool, GetConnection};
|
||||||
|
|
||||||
|
use crate::models::gamenight_id::GamenightId;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
use crate::{
|
||||||
|
models::gamenight::Gamenight,
|
||||||
|
request::authorization::AuthUser,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[get("/gamenight/{gamenightId}")]
|
||||||
|
pub async fn get_gamenight(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
path: web::Path<GamenightId>
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let gamenight = gamenight::get_gamenight(&mut conn, Uuid::parse_str(&path.gamenight_id)?)?;
|
||||||
|
let model = Gamenight {
|
||||||
|
id: gamenight.id.to_string(),
|
||||||
|
datetime: gamenight.datetime.to_rfc3339(),
|
||||||
|
location_id: gamenight.location_id.map(|x| x.to_string()),
|
||||||
|
name: gamenight.name,
|
||||||
|
owner_id: gamenight.owner_id.to_string(),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&model)?))
|
||||||
|
}
|
||||||
28
backend-actix/src/request/gamenight_participant.rs
Normal file
28
backend-actix/src/request/gamenight_participant.rs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
use actix_web::{delete, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::gamenight_participants::GamenightParticipant;
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
|
||||||
|
#[delete("/gamenight/{gamenightId}/participant/{userId}")]
|
||||||
|
pub async fn delete_gamenight_participant(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
gamenight_id: web::Path<Uuid>,
|
||||||
|
user_id: web::Path<Uuid>
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
web::block(move || -> Result<usize, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let participant = GamenightParticipant {
|
||||||
|
gamenight_id: gamenight_id.into_inner(),
|
||||||
|
user_id: user_id.into_inner(),
|
||||||
|
};
|
||||||
|
let x = gamenight_database::gamenight_participants::delete_gamenight_participant(&mut conn, participant)?;
|
||||||
|
|
||||||
|
Ok(x)
|
||||||
|
})
|
||||||
|
.await??;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok())
|
||||||
|
}
|
||||||
54
backend-actix/src/request/gamenight_participants.rs
Normal file
54
backend-actix/src/request/gamenight_participants.rs
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
use crate::models::participants::Participants;
|
||||||
|
use crate::models::user_id::UserId;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
|
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::gamenight_participants::{insert_gamenight_participant, GamenightParticipant};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
#[get("/gamenight/{gamenightId}/participants")]
|
||||||
|
pub async fn get_gamenight_participants(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
gamenight_id: web::Path<Uuid>
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
|
||||||
|
let users = gamenight_database::get_participants(
|
||||||
|
&mut conn,
|
||||||
|
&gamenight_id.into_inner(),
|
||||||
|
)?
|
||||||
|
.iter()
|
||||||
|
.map(|x| x.to_string())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&Participants {
|
||||||
|
participants: users,
|
||||||
|
})?))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/gamenight/{gamenightId}/participants")]
|
||||||
|
pub async fn post_gamenight_participants(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
gamenight_id: web::Path<Uuid>,
|
||||||
|
user_id: web::Json<UserId>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
web::block(move || -> Result<usize, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
Ok(insert_gamenight_participant(
|
||||||
|
&mut conn,
|
||||||
|
GamenightParticipant {
|
||||||
|
gamenight_id: gamenight_id.into_inner(),
|
||||||
|
user_id: Uuid::parse_str(&user_id.user_id)?,
|
||||||
|
},
|
||||||
|
)?)
|
||||||
|
})
|
||||||
|
.await??;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok())
|
||||||
|
}
|
||||||
@@ -1,17 +1,12 @@
|
|||||||
use actix_web::{get, http::header::ContentType, post, web, HttpResponse, Responder};
|
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
use chrono::{DateTime, ParseError};
|
use chrono::{DateTime, ParseError};
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use gamenight_database::{gamenight, DbPool, GetConnection};
|
use gamenight_database::{gamenight, DbPool, GetConnection};
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::models::add_gamenight_request_body::AddGamenightRequestBody;
|
||||||
|
use crate::models::gamenight::Gamenight;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
use crate::request::error::ApiError;
|
use crate::request::error::ApiError;
|
||||||
use crate::{
|
|
||||||
models::{
|
|
||||||
add_gamenight_request_body::AddGamenightRequestBody, gamenight::Gamenight,
|
|
||||||
get_gamenight_request_body::GetGamenightRequestBody,
|
|
||||||
},
|
|
||||||
request::authorization::AuthUser,
|
|
||||||
};
|
|
||||||
|
|
||||||
impl AddGamenightRequestBody {
|
impl AddGamenightRequestBody {
|
||||||
pub fn into_with_user(&self, user: AuthUser) -> Result<gamenight::Gamenight, ParseError> {
|
pub fn into_with_user(&self, user: AuthUser) -> Result<gamenight::Gamenight, ParseError> {
|
||||||
@@ -25,14 +20,8 @@ impl AddGamenightRequestBody {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<GetGamenightRequestBody> for Uuid {
|
|
||||||
fn from(value: GetGamenightRequestBody) -> Self {
|
|
||||||
Uuid::parse_str(value.id.unwrap().as_str()).unwrap()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/gamenights")]
|
#[get("/gamenights")]
|
||||||
pub async fn gamenights(
|
pub async fn get_gamenights(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
_user: AuthUser,
|
_user: AuthUser,
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
@@ -54,8 +43,8 @@ pub async fn gamenights(
|
|||||||
.body(serde_json::to_string(&model)?))
|
.body(serde_json::to_string(&model)?))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/gamenight")]
|
#[post("/gamenights")]
|
||||||
pub async fn gamenight_post(
|
pub async fn post_gamenights(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
user: AuthUser,
|
user: AuthUser,
|
||||||
gamenight_data: web::Json<AddGamenightRequestBody>,
|
gamenight_data: web::Json<AddGamenightRequestBody>,
|
||||||
@@ -66,24 +55,3 @@ pub async fn gamenight_post(
|
|||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
Ok(HttpResponse::Ok())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/gamenight")]
|
|
||||||
pub async fn gamenight_get(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
gamenight_data: web::Json<GetGamenightRequestBody>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let gamenight = gamenight::get_gamenight(&mut conn, gamenight_data.into_inner().into())?;
|
|
||||||
let model = Gamenight {
|
|
||||||
id: gamenight.id.to_string(),
|
|
||||||
datetime: gamenight.datetime.to_rfc3339(),
|
|
||||||
location_id: gamenight.location_id.map(|x| x.to_string()),
|
|
||||||
name: gamenight.name,
|
|
||||||
owner_id: gamenight.owner_id.to_string(),
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&model)?))
|
|
||||||
}
|
|
||||||
54
backend-actix/src/request/games.rs
Normal file
54
backend-actix/src/request/games.rs
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::game::insert_game;
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::models::add_game_request_body::AddGameRequestBody;
|
||||||
|
use crate::models::game::Game;
|
||||||
|
use crate::models::game_id::GameId;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
|
||||||
|
impl From<AddGameRequestBody> for gamenight_database::game::Game {
|
||||||
|
fn from(value: AddGameRequestBody) -> Self {
|
||||||
|
Self {
|
||||||
|
id: Uuid::new_v4(),
|
||||||
|
name: value.name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[get("/games")]
|
||||||
|
pub async fn get_games(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let games: Vec<gamenight_database::game::Game> = gamenight_database::games(&mut conn)?;
|
||||||
|
let model: Vec<Game> = games
|
||||||
|
.iter()
|
||||||
|
.map(|x| Game {
|
||||||
|
id: x.id.to_string(),
|
||||||
|
name: x.name.clone(),
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&model)?))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/games")]
|
||||||
|
pub async fn post_games(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
game_data: web::Json<AddGameRequestBody>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let game = game_data.0.into();
|
||||||
|
insert_game(&mut conn, &game)?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&GameId{game_id: game.id.to_string()})?))
|
||||||
|
}
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
use actix_web::{post, web, HttpResponse, Responder};
|
|
||||||
use gamenight_database::{
|
|
||||||
gamenight_participants::{
|
|
||||||
delete_gamenight_participant, insert_gamenight_participant, GamenightParticipant,
|
|
||||||
},
|
|
||||||
DbPool, GetConnection,
|
|
||||||
};
|
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
models::gamenight_id::GamenightId,
|
|
||||||
request::{authorization::AuthUser, error::ApiError},
|
|
||||||
};
|
|
||||||
|
|
||||||
#[post("/join")]
|
|
||||||
pub async fn post_join_gamenight(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
user: AuthUser,
|
|
||||||
gamenight_id: web::Json<GamenightId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
web::block(move || -> Result<usize, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
Ok(insert_gamenight_participant(
|
|
||||||
&mut conn,
|
|
||||||
GamenightParticipant {
|
|
||||||
gamenight_id: Uuid::parse_str(&gamenight_id.gamenight_id)?,
|
|
||||||
user_id: user.0.id,
|
|
||||||
},
|
|
||||||
)?)
|
|
||||||
})
|
|
||||||
.await??;
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[post("/leave")]
|
|
||||||
pub async fn post_leave_gamenight(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
user: AuthUser,
|
|
||||||
gamenight_id: web::Json<GamenightId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
web::block(move || -> Result<usize, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let participant = GamenightParticipant {
|
|
||||||
gamenight_id: Uuid::parse_str(&gamenight_id.gamenight_id)?,
|
|
||||||
user_id: user.0.id,
|
|
||||||
};
|
|
||||||
let x = delete_gamenight_participant(&mut conn, participant)?;
|
|
||||||
|
|
||||||
Ok(x)
|
|
||||||
})
|
|
||||||
.await??;
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
|
||||||
}
|
|
||||||
@@ -1,62 +1,25 @@
|
|||||||
use actix_web::{get, http::header::ContentType, post, web, HttpResponse, Responder};
|
use crate::models::location::Location;
|
||||||
use gamenight_database::{
|
use crate::request::authorization::AuthUser;
|
||||||
location::{insert_location, locations},
|
use crate::request::error::ApiError;
|
||||||
DbPool, GetConnection,
|
use actix_web::http::header::ContentType;
|
||||||
};
|
use actix_web::{get, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::{
|
#[get("/location/{locationId}")]
|
||||||
models::{
|
|
||||||
add_location_request_body::AddLocationRequestBody, location::Location,
|
|
||||||
location_id::LocationId,
|
|
||||||
},
|
|
||||||
request::{authorization::AuthUser, error::ApiError},
|
|
||||||
};
|
|
||||||
|
|
||||||
impl From<AddLocationRequestBody> for gamenight_database::location::Location {
|
|
||||||
fn from(value: AddLocationRequestBody) -> Self {
|
|
||||||
Self {
|
|
||||||
id: Uuid::new_v4(),
|
|
||||||
name: value.name,
|
|
||||||
address: value.address,
|
|
||||||
note: value.note,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/locations")]
|
|
||||||
pub async fn get_locations(
|
pub async fn get_locations(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
_user: AuthUser,
|
_user: AuthUser,
|
||||||
|
location_id: web::Path<Uuid>,
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
let mut conn = pool.get_conn();
|
let mut conn = pool.get_conn();
|
||||||
let games: Vec<gamenight_database::location::Location> = locations(&mut conn)?;
|
let location = gamenight_database::location::load_location(&mut conn, location_id.into_inner())?;
|
||||||
let model: Vec<Location> = games
|
|
||||||
.iter()
|
|
||||||
.map(|x| Location {
|
|
||||||
id: x.id.to_string(),
|
|
||||||
name: x.name.clone(),
|
|
||||||
address: x.address.clone(),
|
|
||||||
note: x.note.clone(),
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
let model = Location {
|
||||||
.content_type(ContentType::json())
|
id: location.id.to_string(),
|
||||||
.body(serde_json::to_string(&model)?))
|
name: location.name.clone(),
|
||||||
}
|
note: location.note.clone(),
|
||||||
|
address: location.address.clone(),
|
||||||
#[post("/location")]
|
|
||||||
pub async fn post_location(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
game_data: web::Json<AddLocationRequestBody>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let uuid = insert_location(&mut conn, game_data.0.into())?;
|
|
||||||
|
|
||||||
let model = LocationId {
|
|
||||||
location_id: uuid.to_string(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
Ok(HttpResponse::Ok()
|
||||||
|
|||||||
23
backend-actix/src/request/location_authorized_user.rs
Normal file
23
backend-actix/src/request/location_authorized_user.rs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
use actix_web::{delete, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::location_owner::{revoke_permission, LocationOwner};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
#[delete("/location/{location_id}/authorized_users/{user_id}")]
|
||||||
|
pub async fn delete_location_authorized_user(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
location_id: web::Path<Uuid>,
|
||||||
|
user_id: web::Path<Uuid>
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
|
||||||
|
revoke_permission(&mut conn, LocationOwner {
|
||||||
|
user_id: user_id.into_inner(),
|
||||||
|
location_id: location_id.into_inner()
|
||||||
|
})?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok())
|
||||||
|
}
|
||||||
60
backend-actix/src/request/location_authorized_users.rs
Normal file
60
backend-actix/src/request/location_authorized_users.rs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::location_owner::{grant_permission, location_permissions, LocationOwner};
|
||||||
|
use gamenight_database::user::Role;
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::models::location_id::LocationId;
|
||||||
|
use crate::models::user_id::UserId;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
|
||||||
|
impl From<Uuid> for UserId {
|
||||||
|
fn from(uuid: Uuid) -> Self {
|
||||||
|
Self {
|
||||||
|
user_id: uuid.into(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[get("/location/{locationId}/authorized_users/")]
|
||||||
|
pub async fn get_location_authorized_users(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
location_id: web::Path<Uuid>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
|
||||||
|
let permissions =
|
||||||
|
location_permissions(&mut conn, location_id.into_inner())?;
|
||||||
|
|
||||||
|
let model: Vec<UserId> = permissions.into_iter().map(Into::into).collect();
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&model)?))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/location/{locationId}/authorized_users/")]
|
||||||
|
pub async fn post_location_authorized_users(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
user: AuthUser,
|
||||||
|
location_id1: web::Path<LocationId>,
|
||||||
|
user_id: web::Json<UserId>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
|
||||||
|
let location_uuid = Uuid::parse_str(&location_id1.location_id)?;
|
||||||
|
let user_uuid = Uuid::parse_str(&user_id.user_id)?;
|
||||||
|
let authorized = location_permissions(&mut conn, location_uuid)?;
|
||||||
|
if user.0.role != Role::Admin && !authorized.contains(&user.0.id) {
|
||||||
|
Ok(HttpResponse::Unauthorized())
|
||||||
|
} else {
|
||||||
|
grant_permission(&mut conn, LocationOwner {
|
||||||
|
location_id: location_uuid,
|
||||||
|
user_id: user_uuid,
|
||||||
|
})?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
use actix_web::{get, http::header::ContentType, post, web, HttpResponse, Responder};
|
|
||||||
use gamenight_database::{
|
|
||||||
location_owner::{grant_permission, location_permissions, revoke_permission, LocationOwner},
|
|
||||||
user::Role,
|
|
||||||
DbPool, GetConnection,
|
|
||||||
};
|
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
models::{
|
|
||||||
authorize_location_request_body::{
|
|
||||||
AuthorizeLocationRequestBody,
|
|
||||||
Op::{Grant, Revoke},
|
|
||||||
},
|
|
||||||
location_id::LocationId,
|
|
||||||
user_id::UserId,
|
|
||||||
},
|
|
||||||
request::{authorization::AuthUser, error::ApiError},
|
|
||||||
};
|
|
||||||
|
|
||||||
impl<'a> TryFrom<&'a AuthorizeLocationRequestBody> for LocationOwner {
|
|
||||||
type Error = ApiError;
|
|
||||||
|
|
||||||
fn try_from(value: &'a AuthorizeLocationRequestBody) -> Result<Self, Self::Error> {
|
|
||||||
Ok(LocationOwner {
|
|
||||||
location_id: Uuid::parse_str(&value.location_id)?,
|
|
||||||
user_id: Uuid::parse_str(&value.user_id)?,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[post("/location_authorize")]
|
|
||||||
pub async fn post_location_authorize(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
user: AuthUser,
|
|
||||||
auth_data: web::Json<AuthorizeLocationRequestBody>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
|
|
||||||
let inner_auth_data = &auth_data.into_inner();
|
|
||||||
let location_owner: LocationOwner = inner_auth_data.try_into()?;
|
|
||||||
let authorized = location_permissions(&mut conn, location_owner.location_id)?;
|
|
||||||
if user.0.role != Role::Admin && !authorized.contains(&user.0.id) {
|
|
||||||
Ok(HttpResponse::Unauthorized())
|
|
||||||
} else {
|
|
||||||
match inner_auth_data.op {
|
|
||||||
Grant => grant_permission(&mut conn, location_owner)?,
|
|
||||||
Revoke => revoke_permission(&mut conn, location_owner)?,
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<Uuid> for UserId {
|
|
||||||
fn from(value: Uuid) -> Self {
|
|
||||||
Self {
|
|
||||||
user_id: value.to_string(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/authorized_location_user_ids")]
|
|
||||||
pub async fn get_authorized_location_user_ids(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
location_id: web::Json<LocationId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
|
|
||||||
let permissions =
|
|
||||||
location_permissions(&mut conn, Uuid::parse_str(&location_id.0.location_id)?)?;
|
|
||||||
|
|
||||||
let model: Vec<UserId> = permissions.into_iter().map(Into::into).collect();
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&model)?))
|
|
||||||
}
|
|
||||||
62
backend-actix/src/request/locations.rs
Normal file
62
backend-actix/src/request/locations.rs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::location::{insert_location, locations};
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::models::add_location_request_body::AddLocationRequestBody;
|
||||||
|
use crate::models::location::Location;
|
||||||
|
use crate::models::location_id::LocationId;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
|
||||||
|
impl From<AddLocationRequestBody> for gamenight_database::location::Location {
|
||||||
|
fn from(value: AddLocationRequestBody) -> Self {
|
||||||
|
Self {
|
||||||
|
id: Uuid::new_v4(),
|
||||||
|
name: value.name,
|
||||||
|
address: value.address,
|
||||||
|
note: value.note,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[get("/locations")]
|
||||||
|
pub async fn get_locations(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let games: Vec<gamenight_database::location::Location> = locations(&mut conn)?;
|
||||||
|
let model: Vec<Location> = games
|
||||||
|
.iter()
|
||||||
|
.map(|x| Location {
|
||||||
|
id: x.id.to_string(),
|
||||||
|
name: x.name.clone(),
|
||||||
|
address: x.address.clone(),
|
||||||
|
note: x.note.clone(),
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&model)?))
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/locations")]
|
||||||
|
pub async fn post_locations(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
game_data: web::Json<AddLocationRequestBody>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let uuid = insert_location(&mut conn, game_data.0.into())?;
|
||||||
|
|
||||||
|
let model = LocationId {
|
||||||
|
location_id: uuid.to_string(),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&model)?))
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,34 +1,20 @@
|
|||||||
|
|
||||||
mod authorization;
|
mod authorization;
|
||||||
mod error;
|
mod error;
|
||||||
mod game;
|
|
||||||
mod gamenight_handlers;
|
|
||||||
mod join_gamenight;
|
|
||||||
mod location;
|
|
||||||
mod location_owner;
|
|
||||||
mod participant_handlers;
|
|
||||||
mod user_handlers;
|
|
||||||
|
|
||||||
pub use game::get_game;
|
pub mod token;
|
||||||
pub use game::get_games;
|
pub mod users;
|
||||||
pub use game::get_owned_games;
|
pub mod user;
|
||||||
pub use game::post_disown_game;
|
pub mod user_owned_games;
|
||||||
pub use game::post_game;
|
pub mod gamenights;
|
||||||
pub use game::post_own_game;
|
pub mod gamenight;
|
||||||
pub use game::post_rename_game;
|
pub mod gamenight_participants;
|
||||||
pub use game::delete_game;
|
pub mod gamenight_participant;
|
||||||
pub use gamenight_handlers::gamenight_get;
|
pub mod games;
|
||||||
pub use gamenight_handlers::gamenight_post;
|
pub mod game;
|
||||||
pub use gamenight_handlers::gamenights;
|
pub mod game_owners;
|
||||||
pub use join_gamenight::post_join_gamenight;
|
pub mod game_owner;
|
||||||
pub use join_gamenight::post_leave_gamenight;
|
pub mod locations;
|
||||||
pub use location::get_locations;
|
pub mod location;
|
||||||
pub use location::post_location;
|
pub mod location_authorized_users;
|
||||||
pub use location_owner::get_authorized_location_user_ids;
|
pub mod location_authorized_user;
|
||||||
pub use location_owner::post_location_authorize;
|
|
||||||
pub use participant_handlers::get_get_participants;
|
|
||||||
pub use user_handlers::get_user;
|
|
||||||
pub use user_handlers::get_user_unauthenticated;
|
|
||||||
pub use user_handlers::get_users;
|
|
||||||
pub use user_handlers::login;
|
|
||||||
pub use user_handlers::refresh;
|
|
||||||
pub use user_handlers::register;
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
use actix_web::{get, http::header::ContentType, web, HttpResponse, Responder};
|
|
||||||
use gamenight_database::{DbPool, GetConnection};
|
|
||||||
use uuid::Uuid;
|
|
||||||
|
|
||||||
use crate::{
|
|
||||||
models::{gamenight_id::GamenightId, participants::Participants},
|
|
||||||
request::{authorization::AuthUser, error::ApiError},
|
|
||||||
};
|
|
||||||
|
|
||||||
#[get("/participants")]
|
|
||||||
pub async fn get_get_participants(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
gamenight_info: web::Json<GamenightId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
|
|
||||||
let users = gamenight_database::get_participants(
|
|
||||||
&mut conn,
|
|
||||||
&Uuid::parse_str(&gamenight_info.into_inner().gamenight_id)?,
|
|
||||||
)?
|
|
||||||
.iter()
|
|
||||||
.map(|x| x.to_string())
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&Participants {
|
|
||||||
participants: users,
|
|
||||||
})?))
|
|
||||||
}
|
|
||||||
54
backend-actix/src/request/token.rs
Normal file
54
backend-actix/src/request/token.rs
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
use crate::models::login::Login;
|
||||||
|
use crate::models::token::Token;
|
||||||
|
use crate::request::authorization::{get_token, AuthUser};
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
|
use actix_web::{post, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
|
||||||
|
impl From<Login> for gamenight_database::user::LoginUser {
|
||||||
|
fn from(val: Login) -> Self {
|
||||||
|
gamenight_database::user::LoginUser {
|
||||||
|
username: val.username,
|
||||||
|
password: val.password,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[post("/token")]
|
||||||
|
pub async fn post_token(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
login_data: web::Json<Login>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let data = login_data.into_inner();
|
||||||
|
|
||||||
|
if let Ok(Some(user)) = web::block(move || {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
gamenight_database::login(&mut conn, data.into())
|
||||||
|
})
|
||||||
|
.await?
|
||||||
|
{
|
||||||
|
let token = get_token(&user)?;
|
||||||
|
let response = Token {
|
||||||
|
jwt_token: Some(token),
|
||||||
|
};
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&response)?))
|
||||||
|
} else {
|
||||||
|
Err(ApiError {
|
||||||
|
status: 401,
|
||||||
|
message: "User doesn't exist or password doesn't match".to_string(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[post("/refresh_token")]
|
||||||
|
pub async fn post_refresh_token(user: AuthUser) -> Result<impl Responder, ApiError> {
|
||||||
|
let new_token = get_token(&user.0)?;
|
||||||
|
let response = Token {
|
||||||
|
jwt_token: Some(new_token),
|
||||||
|
};
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&response)?))
|
||||||
|
}
|
||||||
37
backend-actix/src/request/user.rs
Normal file
37
backend-actix/src/request/user.rs
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
use crate::models::user::User;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
use actix_web::{get, http::header::ContentType, web, HttpResponse, Responder};
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use serde_json;
|
||||||
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
use super::authorization::AuthUser;
|
||||||
|
|
||||||
|
|
||||||
|
impl From<gamenight_database::user::User> for User {
|
||||||
|
fn from(value: gamenight_database::user::User) -> Self {
|
||||||
|
Self {
|
||||||
|
id: value.id.to_string(),
|
||||||
|
username: value.username,
|
||||||
|
email: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[get("/user/{userId}")]
|
||||||
|
pub async fn get_user(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
user_id: web::Path<Uuid>,
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
|
||||||
|
let user = gamenight_database::user::get_user(
|
||||||
|
&mut conn,
|
||||||
|
user_id.into_inner()
|
||||||
|
)?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&user)?))
|
||||||
|
}
|
||||||
28
backend-actix/src/request/user_owned_games.rs
Normal file
28
backend-actix/src/request/user_owned_games.rs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
use actix_web::{get, web, HttpResponse, Responder};
|
||||||
|
use actix_web::http::header::ContentType;
|
||||||
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::owned_game::owned_games;
|
||||||
|
use uuid::Uuid;
|
||||||
|
use crate::models;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
|
use crate::request::error::ApiError;
|
||||||
|
|
||||||
|
#[get("/user/{userId}/owned_games")]
|
||||||
|
pub async fn get_user_owned_games(
|
||||||
|
pool: web::Data<DbPool>,
|
||||||
|
_user: AuthUser,
|
||||||
|
user_id: web::Path<Uuid>
|
||||||
|
) -> Result<impl Responder, ApiError> {
|
||||||
|
let mut conn = pool.get_conn();
|
||||||
|
let game_ids = owned_games(&mut conn, user_id.into_inner())?;
|
||||||
|
|
||||||
|
let model = game_ids.iter().map(|(u,g , l)| models::owned_game::OwnedGame {
|
||||||
|
user_id: u.to_string(),
|
||||||
|
game_id: g.to_string(),
|
||||||
|
location_id: l.map(|x| x.to_string())
|
||||||
|
}).collect::<Vec<models::owned_game::OwnedGame>>();
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok()
|
||||||
|
.content_type(ContentType::json())
|
||||||
|
.body(serde_json::to_string(&model)?))
|
||||||
|
}
|
||||||
@@ -1,25 +1,13 @@
|
|||||||
use crate::models::{
|
use actix_web::{get, post, web, HttpResponse, Responder};
|
||||||
login::Login, registration::Registration, token::Token, user::User, user_id::UserId,
|
use actix_web::http::header::ContentType;
|
||||||
};
|
|
||||||
use crate::request::{authorization::get_token, error::ApiError};
|
|
||||||
use actix_web::{get, http::header::ContentType, post, web, HttpResponse, Responder};
|
|
||||||
use gamenight_database::user::{count_users_with_email, count_users_with_username};
|
|
||||||
use gamenight_database::{DbPool, GetConnection};
|
use gamenight_database::{DbPool, GetConnection};
|
||||||
|
use gamenight_database::user::{count_users_with_email, count_users_with_username};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json;
|
|
||||||
use uuid::Uuid;
|
|
||||||
use validator::{Validate, ValidateArgs, ValidationError};
|
use validator::{Validate, ValidateArgs, ValidationError};
|
||||||
|
use crate::models::registration::Registration;
|
||||||
use super::authorization::AuthUser;
|
use crate::models::user::User;
|
||||||
|
use crate::request::authorization::AuthUser;
|
||||||
impl From<Login> for gamenight_database::user::LoginUser {
|
use crate::request::error::ApiError;
|
||||||
fn from(val: Login) -> Self {
|
|
||||||
gamenight_database::user::LoginUser {
|
|
||||||
username: val.username,
|
|
||||||
password: val.password,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<Registration> for gamenight_database::user::Register {
|
impl From<Registration> for gamenight_database::user::Register {
|
||||||
fn from(val: Registration) -> Self {
|
fn from(val: Registration) -> Self {
|
||||||
@@ -35,6 +23,7 @@ pub struct RegisterContext<'v_a> {
|
|||||||
pub pool: &'v_a DbPool,
|
pub pool: &'v_a DbPool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn unique_username(
|
pub fn unique_username(
|
||||||
username: &String,
|
username: &String,
|
||||||
context: &RegisterContext,
|
context: &RegisterContext,
|
||||||
@@ -83,47 +72,23 @@ impl From<Registration> for ValidatableRegistration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/token")]
|
#[get("/users")]
|
||||||
pub async fn login(
|
pub async fn get_users(
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
login_data: web::Json<Login>,
|
_user: AuthUser,
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
let data = login_data.into_inner();
|
|
||||||
|
|
||||||
if let Ok(Some(user)) = web::block(move || {
|
|
||||||
let mut conn = pool.get_conn();
|
let mut conn = pool.get_conn();
|
||||||
gamenight_database::login(&mut conn, data.into())
|
let users = gamenight_database::user::get_users(&mut conn)?;
|
||||||
})
|
|
||||||
.await?
|
let model: Vec<User> = users.into_iter().map(Into::into).collect();
|
||||||
{
|
|
||||||
let token = get_token(&user)?;
|
|
||||||
let response = Token {
|
|
||||||
jwt_token: Some(token),
|
|
||||||
};
|
|
||||||
Ok(HttpResponse::Ok()
|
Ok(HttpResponse::Ok()
|
||||||
.content_type(ContentType::json())
|
.content_type(ContentType::json())
|
||||||
.body(serde_json::to_string(&response)?))
|
.body(serde_json::to_string(&model)?))
|
||||||
} else {
|
|
||||||
Err(ApiError {
|
|
||||||
status: 401,
|
|
||||||
message: "User doesn't exist or password doesn't match".to_string(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[post("/token")]
|
#[post("/users")]
|
||||||
pub async fn refresh(user: AuthUser) -> Result<impl Responder, ApiError> {
|
pub async fn post_users(
|
||||||
let new_token = get_token(&user.0)?;
|
|
||||||
let response = Token {
|
|
||||||
jwt_token: Some(new_token),
|
|
||||||
};
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&response)?))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[post("/user")]
|
|
||||||
pub async fn register(
|
|
||||||
pool: web::Data<DbPool>,
|
pool: web::Data<DbPool>,
|
||||||
register_data: web::Json<Registration>,
|
register_data: web::Json<Registration>,
|
||||||
) -> Result<impl Responder, ApiError> {
|
) -> Result<impl Responder, ApiError> {
|
||||||
@@ -139,54 +104,3 @@ pub async fn register(
|
|||||||
|
|
||||||
Ok(HttpResponse::Ok())
|
Ok(HttpResponse::Ok())
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<gamenight_database::user::User> for User {
|
|
||||||
fn from(value: gamenight_database::user::User) -> Self {
|
|
||||||
Self {
|
|
||||||
id: value.id.to_string(),
|
|
||||||
username: value.username,
|
|
||||||
email: None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/user")]
|
|
||||||
pub async fn get_user(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
user_info: web::Json<UserId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
|
|
||||||
let user = gamenight_database::user::get_user(
|
|
||||||
&mut conn,
|
|
||||||
Uuid::parse_str(&user_info.into_inner().user_id)?,
|
|
||||||
)?;
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&user)?))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/user")]
|
|
||||||
pub async fn get_user_unauthenticated(
|
|
||||||
_path: web::Path<UserId>,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
Ok(HttpResponse::Forbidden())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[get("/users")]
|
|
||||||
|
|
||||||
pub async fn get_users(
|
|
||||||
pool: web::Data<DbPool>,
|
|
||||||
_user: AuthUser,
|
|
||||||
) -> Result<impl Responder, ApiError> {
|
|
||||||
let mut conn = pool.get_conn();
|
|
||||||
let users = gamenight_database::user::get_users(&mut conn)?;
|
|
||||||
|
|
||||||
let model: Vec<User> = users.into_iter().map(Into::into).collect();
|
|
||||||
|
|
||||||
Ok(HttpResponse::Ok()
|
|
||||||
.content_type(ContentType::json())
|
|
||||||
.body(serde_json::to_string(&model)?))
|
|
||||||
}
|
|
||||||
@@ -5,22 +5,20 @@ README.md
|
|||||||
docs/AddGameRequestBody.md
|
docs/AddGameRequestBody.md
|
||||||
docs/AddGamenightRequestBody.md
|
docs/AddGamenightRequestBody.md
|
||||||
docs/AddLocationRequestBody.md
|
docs/AddLocationRequestBody.md
|
||||||
docs/AuthorizeLocationRequestBody.md
|
|
||||||
docs/DefaultApi.md
|
docs/DefaultApi.md
|
||||||
|
docs/EditGameRequestBody.md
|
||||||
docs/Failure.md
|
docs/Failure.md
|
||||||
docs/Game.md
|
docs/Game.md
|
||||||
docs/GameId.md
|
docs/GameId.md
|
||||||
docs/Gamenight.md
|
docs/Gamenight.md
|
||||||
docs/GamenightId.md
|
docs/GamenightId.md
|
||||||
docs/GetGamenightRequestBody.md
|
|
||||||
docs/Location.md
|
docs/Location.md
|
||||||
docs/LocationId.md
|
docs/LocationId.md
|
||||||
docs/Login.md
|
docs/Login.md
|
||||||
docs/OwnGameRequestBody.md
|
docs/OwnGame.md
|
||||||
docs/OwnedGame.md
|
docs/OwnedGame.md
|
||||||
docs/Participants.md
|
docs/Participants.md
|
||||||
docs/Registration.md
|
docs/Registration.md
|
||||||
docs/RenameGameRequestBody.md
|
|
||||||
docs/Token.md
|
docs/Token.md
|
||||||
docs/User.md
|
docs/User.md
|
||||||
docs/UserId.md
|
docs/UserId.md
|
||||||
@@ -32,22 +30,20 @@ src/lib.rs
|
|||||||
src/models/add_game_request_body.rs
|
src/models/add_game_request_body.rs
|
||||||
src/models/add_gamenight_request_body.rs
|
src/models/add_gamenight_request_body.rs
|
||||||
src/models/add_location_request_body.rs
|
src/models/add_location_request_body.rs
|
||||||
src/models/authorize_location_request_body.rs
|
src/models/edit_game_request_body.rs
|
||||||
src/models/failure.rs
|
src/models/failure.rs
|
||||||
src/models/game.rs
|
src/models/game.rs
|
||||||
src/models/game_id.rs
|
src/models/game_id.rs
|
||||||
src/models/gamenight.rs
|
src/models/gamenight.rs
|
||||||
src/models/gamenight_id.rs
|
src/models/gamenight_id.rs
|
||||||
src/models/get_gamenight_request_body.rs
|
|
||||||
src/models/location.rs
|
src/models/location.rs
|
||||||
src/models/location_id.rs
|
src/models/location_id.rs
|
||||||
src/models/login.rs
|
src/models/login.rs
|
||||||
src/models/mod.rs
|
src/models/mod.rs
|
||||||
src/models/own_game_request_body.rs
|
src/models/own_game.rs
|
||||||
src/models/owned_game.rs
|
src/models/owned_game.rs
|
||||||
src/models/participants.rs
|
src/models/participants.rs
|
||||||
src/models/registration.rs
|
src/models/registration.rs
|
||||||
src/models/rename_game_request_body.rs
|
|
||||||
src/models/token.rs
|
src/models/token.rs
|
||||||
src/models/user.rs
|
src/models/user.rs
|
||||||
src/models/user_id.rs
|
src/models/user_id.rs
|
||||||
|
|||||||
@@ -27,30 +27,31 @@ All URIs are relative to *http://localhost:8080*
|
|||||||
|
|
||||||
Class | Method | HTTP request | Description
|
Class | Method | HTTP request | Description
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
*DefaultApi* | [**authorized_location_user_ids_get**](docs/DefaultApi.md#authorized_location_user_ids_get) | **GET** /authorized_location_user_ids |
|
*DefaultApi* | [**delete_game**](docs/DefaultApi.md#delete_game) | **DELETE** /game/{gameId} | Delete this game.
|
||||||
*DefaultApi* | [**disown_post**](docs/DefaultApi.md#disown_post) | **POST** /disown |
|
*DefaultApi* | [**delete_game_owner**](docs/DefaultApi.md#delete_game_owner) | **DELETE** /game/{gameId}/owner/{userId} | no longer own this game
|
||||||
*DefaultApi* | [**game_delete**](docs/DefaultApi.md#game_delete) | **DELETE** /game |
|
*DefaultApi* | [**delete_gamenight_participant**](docs/DefaultApi.md#delete_gamenight_participant) | **DELETE** /gamenight/{gamenightId}/participant/{userId} | deletes a gamenight participant
|
||||||
*DefaultApi* | [**game_get**](docs/DefaultApi.md#game_get) | **GET** /game |
|
*DefaultApi* | [**delete_location_authorized_user**](docs/DefaultApi.md#delete_location_authorized_user) | **DELETE** /location/{locationId}/authorized_user/{userId} | remove an authorized user from a location
|
||||||
*DefaultApi* | [**game_post**](docs/DefaultApi.md#game_post) | **POST** /game |
|
*DefaultApi* | [**get_game**](docs/DefaultApi.md#get_game) | **GET** /game/{gameId} | Get this specific game
|
||||||
*DefaultApi* | [**games_get**](docs/DefaultApi.md#games_get) | **GET** /games |
|
*DefaultApi* | [**get_gamenight**](docs/DefaultApi.md#get_gamenight) | **GET** /gamenight/{gamenightId} | get the specified gamenight
|
||||||
*DefaultApi* | [**get_gamenight**](docs/DefaultApi.md#get_gamenight) | **GET** /gamenight |
|
*DefaultApi* | [**get_gamenight_participants**](docs/DefaultApi.md#get_gamenight_participants) | **GET** /gamenight/{gamenightId}/participants | Get all participants for a gamenight
|
||||||
*DefaultApi* | [**get_gamenights**](docs/DefaultApi.md#get_gamenights) | **GET** /gamenights | Get a all gamenights
|
*DefaultApi* | [**get_gamenights**](docs/DefaultApi.md#get_gamenights) | **GET** /gamenights | Get a all gamenights
|
||||||
*DefaultApi* | [**get_token**](docs/DefaultApi.md#get_token) | **GET** /token |
|
*DefaultApi* | [**get_games**](docs/DefaultApi.md#get_games) | **GET** /games | get all games
|
||||||
*DefaultApi* | [**join_post**](docs/DefaultApi.md#join_post) | **POST** /join |
|
*DefaultApi* | [**get_location**](docs/DefaultApi.md#get_location) | **GET** /location/{locationId} | gets this location
|
||||||
*DefaultApi* | [**leave_post**](docs/DefaultApi.md#leave_post) | **POST** /leave |
|
*DefaultApi* | [**get_location_authorized_users**](docs/DefaultApi.md#get_location_authorized_users) | **GET** /location/{locationId}/authorized_users/ | gets this locations authorized users
|
||||||
*DefaultApi* | [**location_authorize_post**](docs/DefaultApi.md#location_authorize_post) | **POST** /location_authorize |
|
*DefaultApi* | [**get_locations**](docs/DefaultApi.md#get_locations) | **GET** /locations | get all locations
|
||||||
*DefaultApi* | [**location_get**](docs/DefaultApi.md#location_get) | **GET** /location |
|
*DefaultApi* | [**get_user**](docs/DefaultApi.md#get_user) | **GET** /user/{userId} |
|
||||||
*DefaultApi* | [**location_post**](docs/DefaultApi.md#location_post) | **POST** /location |
|
*DefaultApi* | [**get_user_owned_games**](docs/DefaultApi.md#get_user_owned_games) | **GET** /user/{userId}/owned_games | Get owned games of user
|
||||||
*DefaultApi* | [**locations_get**](docs/DefaultApi.md#locations_get) | **GET** /locations |
|
*DefaultApi* | [**get_users**](docs/DefaultApi.md#get_users) | **GET** /users | Get all users
|
||||||
*DefaultApi* | [**own_post**](docs/DefaultApi.md#own_post) | **POST** /own |
|
*DefaultApi* | [**post_game_owners**](docs/DefaultApi.md#post_game_owners) | **POST** /game/{gameId}/owners | Own this game
|
||||||
*DefaultApi* | [**owned_games_get**](docs/DefaultApi.md#owned_games_get) | **GET** /owned_games |
|
*DefaultApi* | [**post_gamenight_participants**](docs/DefaultApi.md#post_gamenight_participants) | **POST** /gamenight/{gamenightId}/participants | Add a participant
|
||||||
*DefaultApi* | [**participants_get**](docs/DefaultApi.md#participants_get) | **GET** /participants | Get all participants for a gamenight
|
*DefaultApi* | [**post_gamenights**](docs/DefaultApi.md#post_gamenights) | **POST** /gamenights | Gets the gamenight
|
||||||
*DefaultApi* | [**post_gamenight**](docs/DefaultApi.md#post_gamenight) | **POST** /gamenight |
|
*DefaultApi* | [**post_games**](docs/DefaultApi.md#post_games) | **POST** /games | add a game
|
||||||
*DefaultApi* | [**post_register**](docs/DefaultApi.md#post_register) | **POST** /user |
|
*DefaultApi* | [**post_location_authorized_users**](docs/DefaultApi.md#post_location_authorized_users) | **POST** /location/{locationId}/authorized_users/ | Authorize a user
|
||||||
*DefaultApi* | [**post_token**](docs/DefaultApi.md#post_token) | **POST** /token |
|
*DefaultApi* | [**post_locations**](docs/DefaultApi.md#post_locations) | **POST** /locations | add a location
|
||||||
*DefaultApi* | [**rename_game_post**](docs/DefaultApi.md#rename_game_post) | **POST** /rename_game |
|
*DefaultApi* | [**post_refresh_token**](docs/DefaultApi.md#post_refresh_token) | **POST** /refresh_token | Refresh a user token
|
||||||
*DefaultApi* | [**user_get**](docs/DefaultApi.md#user_get) | **GET** /user |
|
*DefaultApi* | [**post_token**](docs/DefaultApi.md#post_token) | **POST** /token | Login a user.
|
||||||
*DefaultApi* | [**users_get**](docs/DefaultApi.md#users_get) | **GET** /users |
|
*DefaultApi* | [**post_users**](docs/DefaultApi.md#post_users) | **POST** /users | Registers a user into gamenight.
|
||||||
|
*DefaultApi* | [**put_game**](docs/DefaultApi.md#put_game) | **PUT** /game/{gameId} | Changes this game resource
|
||||||
|
|
||||||
|
|
||||||
## Documentation For Models
|
## Documentation For Models
|
||||||
@@ -58,21 +59,19 @@ Class | Method | HTTP request | Description
|
|||||||
- [AddGameRequestBody](docs/AddGameRequestBody.md)
|
- [AddGameRequestBody](docs/AddGameRequestBody.md)
|
||||||
- [AddGamenightRequestBody](docs/AddGamenightRequestBody.md)
|
- [AddGamenightRequestBody](docs/AddGamenightRequestBody.md)
|
||||||
- [AddLocationRequestBody](docs/AddLocationRequestBody.md)
|
- [AddLocationRequestBody](docs/AddLocationRequestBody.md)
|
||||||
- [AuthorizeLocationRequestBody](docs/AuthorizeLocationRequestBody.md)
|
- [EditGameRequestBody](docs/EditGameRequestBody.md)
|
||||||
- [Failure](docs/Failure.md)
|
- [Failure](docs/Failure.md)
|
||||||
- [Game](docs/Game.md)
|
- [Game](docs/Game.md)
|
||||||
- [GameId](docs/GameId.md)
|
- [GameId](docs/GameId.md)
|
||||||
- [Gamenight](docs/Gamenight.md)
|
- [Gamenight](docs/Gamenight.md)
|
||||||
- [GamenightId](docs/GamenightId.md)
|
- [GamenightId](docs/GamenightId.md)
|
||||||
- [GetGamenightRequestBody](docs/GetGamenightRequestBody.md)
|
|
||||||
- [Location](docs/Location.md)
|
- [Location](docs/Location.md)
|
||||||
- [LocationId](docs/LocationId.md)
|
- [LocationId](docs/LocationId.md)
|
||||||
- [Login](docs/Login.md)
|
- [Login](docs/Login.md)
|
||||||
- [OwnGameRequestBody](docs/OwnGameRequestBody.md)
|
- [OwnGame](docs/OwnGame.md)
|
||||||
- [OwnedGame](docs/OwnedGame.md)
|
- [OwnedGame](docs/OwnedGame.md)
|
||||||
- [Participants](docs/Participants.md)
|
- [Participants](docs/Participants.md)
|
||||||
- [Registration](docs/Registration.md)
|
- [Registration](docs/Registration.md)
|
||||||
- [RenameGameRequestBody](docs/RenameGameRequestBody.md)
|
|
||||||
- [Token](docs/Token.md)
|
- [Token](docs/Token.md)
|
||||||
- [User](docs/User.md)
|
- [User](docs/User.md)
|
||||||
- [UserId](docs/UserId.md)
|
- [UserId](docs/UserId.md)
|
||||||
|
|||||||
@@ -4,72 +4,45 @@ All URIs are relative to *http://localhost:8080*
|
|||||||
|
|
||||||
Method | HTTP request | Description
|
Method | HTTP request | Description
|
||||||
------------- | ------------- | -------------
|
------------- | ------------- | -------------
|
||||||
[**authorized_location_user_ids_get**](DefaultApi.md#authorized_location_user_ids_get) | **GET** /authorized_location_user_ids |
|
[**delete_game**](DefaultApi.md#delete_game) | **DELETE** /game/{gameId} | Delete this game.
|
||||||
[**disown_post**](DefaultApi.md#disown_post) | **POST** /disown |
|
[**delete_game_owner**](DefaultApi.md#delete_game_owner) | **DELETE** /game/{gameId}/owner/{userId} | no longer own this game
|
||||||
[**game_delete**](DefaultApi.md#game_delete) | **DELETE** /game |
|
[**delete_gamenight_participant**](DefaultApi.md#delete_gamenight_participant) | **DELETE** /gamenight/{gamenightId}/participant/{userId} | deletes a gamenight participant
|
||||||
[**game_get**](DefaultApi.md#game_get) | **GET** /game |
|
[**delete_location_authorized_user**](DefaultApi.md#delete_location_authorized_user) | **DELETE** /location/{locationId}/authorized_user/{userId} | remove an authorized user from a location
|
||||||
[**game_post**](DefaultApi.md#game_post) | **POST** /game |
|
[**get_game**](DefaultApi.md#get_game) | **GET** /game/{gameId} | Get this specific game
|
||||||
[**games_get**](DefaultApi.md#games_get) | **GET** /games |
|
[**get_gamenight**](DefaultApi.md#get_gamenight) | **GET** /gamenight/{gamenightId} | get the specified gamenight
|
||||||
[**get_gamenight**](DefaultApi.md#get_gamenight) | **GET** /gamenight |
|
[**get_gamenight_participants**](DefaultApi.md#get_gamenight_participants) | **GET** /gamenight/{gamenightId}/participants | Get all participants for a gamenight
|
||||||
[**get_gamenights**](DefaultApi.md#get_gamenights) | **GET** /gamenights | Get a all gamenights
|
[**get_gamenights**](DefaultApi.md#get_gamenights) | **GET** /gamenights | Get a all gamenights
|
||||||
[**get_token**](DefaultApi.md#get_token) | **GET** /token |
|
[**get_games**](DefaultApi.md#get_games) | **GET** /games | get all games
|
||||||
[**join_post**](DefaultApi.md#join_post) | **POST** /join |
|
[**get_location**](DefaultApi.md#get_location) | **GET** /location/{locationId} | gets this location
|
||||||
[**leave_post**](DefaultApi.md#leave_post) | **POST** /leave |
|
[**get_location_authorized_users**](DefaultApi.md#get_location_authorized_users) | **GET** /location/{locationId}/authorized_users/ | gets this locations authorized users
|
||||||
[**location_authorize_post**](DefaultApi.md#location_authorize_post) | **POST** /location_authorize |
|
[**get_locations**](DefaultApi.md#get_locations) | **GET** /locations | get all locations
|
||||||
[**location_get**](DefaultApi.md#location_get) | **GET** /location |
|
[**get_user**](DefaultApi.md#get_user) | **GET** /user/{userId} |
|
||||||
[**location_post**](DefaultApi.md#location_post) | **POST** /location |
|
[**get_user_owned_games**](DefaultApi.md#get_user_owned_games) | **GET** /user/{userId}/owned_games | Get owned games of user
|
||||||
[**locations_get**](DefaultApi.md#locations_get) | **GET** /locations |
|
[**get_users**](DefaultApi.md#get_users) | **GET** /users | Get all users
|
||||||
[**own_post**](DefaultApi.md#own_post) | **POST** /own |
|
[**post_game_owners**](DefaultApi.md#post_game_owners) | **POST** /game/{gameId}/owners | Own this game
|
||||||
[**owned_games_get**](DefaultApi.md#owned_games_get) | **GET** /owned_games |
|
[**post_gamenight_participants**](DefaultApi.md#post_gamenight_participants) | **POST** /gamenight/{gamenightId}/participants | Add a participant
|
||||||
[**participants_get**](DefaultApi.md#participants_get) | **GET** /participants | Get all participants for a gamenight
|
[**post_gamenights**](DefaultApi.md#post_gamenights) | **POST** /gamenights | Gets the gamenight
|
||||||
[**post_gamenight**](DefaultApi.md#post_gamenight) | **POST** /gamenight |
|
[**post_games**](DefaultApi.md#post_games) | **POST** /games | add a game
|
||||||
[**post_register**](DefaultApi.md#post_register) | **POST** /user |
|
[**post_location_authorized_users**](DefaultApi.md#post_location_authorized_users) | **POST** /location/{locationId}/authorized_users/ | Authorize a user
|
||||||
[**post_token**](DefaultApi.md#post_token) | **POST** /token |
|
[**post_locations**](DefaultApi.md#post_locations) | **POST** /locations | add a location
|
||||||
[**rename_game_post**](DefaultApi.md#rename_game_post) | **POST** /rename_game |
|
[**post_refresh_token**](DefaultApi.md#post_refresh_token) | **POST** /refresh_token | Refresh a user token
|
||||||
[**user_get**](DefaultApi.md#user_get) | **GET** /user |
|
[**post_token**](DefaultApi.md#post_token) | **POST** /token | Login a user.
|
||||||
[**users_get**](DefaultApi.md#users_get) | **GET** /users |
|
[**post_users**](DefaultApi.md#post_users) | **POST** /users | Registers a user into gamenight.
|
||||||
|
[**put_game**](DefaultApi.md#put_game) | **PUT** /game/{gameId} | Changes this game resource
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## authorized_location_user_ids_get
|
## delete_game
|
||||||
|
|
||||||
> Vec<models::UserId> authorized_location_user_ids_get(location_id)
|
|
||||||
|
|
||||||
|
> delete_game(game_id)
|
||||||
|
Delete this game.
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**location_id** | Option<[**LocationId**](LocationId.md)> | | |
|
**game_id** | **String** | Uuid of game to delete. | [required] |
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**Vec<models::UserId>**](UserId.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## disown_post
|
|
||||||
|
|
||||||
> disown_post(game_id)
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**game_id** | Option<[**GameId**](GameId.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -81,23 +54,24 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## game_delete
|
## delete_game_owner
|
||||||
|
|
||||||
> game_delete(game_id)
|
|
||||||
|
|
||||||
|
> delete_game_owner(game_id, user_id)
|
||||||
|
no longer own this game
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**game_id** | Option<[**GameId**](GameId.md)> | | |
|
**game_id** | **String** | Uuid of game that user no longer owns. | [required] |
|
||||||
|
**user_id** | **String** | Uuid of user that no longer owns. | [required] |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -109,23 +83,81 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## game_get
|
## delete_gamenight_participant
|
||||||
|
|
||||||
> models::Game game_get(game_id)
|
|
||||||
|
|
||||||
|
> delete_gamenight_participant(gamenight_id, user_id)
|
||||||
|
deletes a gamenight participant
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**game_id** | Option<[**GameId**](GameId.md)> | | |
|
**gamenight_id** | **String** | Uuid of gamenight to delete participant for | [required] |
|
||||||
|
**user_id** | **String** | Uuid of the of the participant to remove | [required] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
(empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## delete_location_authorized_user
|
||||||
|
|
||||||
|
> delete_location_authorized_user(location_id, user_id)
|
||||||
|
remove an authorized user from a location
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**location_id** | **String** | Uuid of location to deauthorize for. | [required] |
|
||||||
|
**user_id** | **String** | Uuid of user ot deauthorize. | [required] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
(empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## get_game
|
||||||
|
|
||||||
|
> models::Game get_game(game_id)
|
||||||
|
Get this specific game
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**game_id** | **String** | Uuid of game to get. | [required] |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -137,59 +169,6 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## game_post
|
|
||||||
|
|
||||||
> models::GameId game_post(add_game_request_body)
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**add_game_request_body** | Option<[**AddGameRequestBody**](AddGameRequestBody.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**models::GameId**](GameId.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## games_get
|
|
||||||
|
|
||||||
> Vec<models::Game> games_get()
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
This endpoint does not need any parameter.
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**Vec<models::Game>**](Game.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
@@ -198,15 +177,15 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
## get_gamenight
|
## get_gamenight
|
||||||
|
|
||||||
> models::Gamenight get_gamenight(get_gamenight_request_body)
|
> models::Gamenight get_gamenight(gamenight_id)
|
||||||
|
get the specified gamenight
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**get_gamenight_request_body** | Option<[**GetGamenightRequestBody**](GetGamenightRequestBody.md)> | | |
|
**gamenight_id** | **String** | Uuid of gamenight to get. | [required] |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -218,7 +197,37 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## get_gamenight_participants
|
||||||
|
|
||||||
|
> models::Participants get_gamenight_participants(gamenight_id)
|
||||||
|
Get all participants for a gamenight
|
||||||
|
|
||||||
|
Retrieve the participants of a single gamenight by id.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**gamenight_id** | **String** | Uuid of gamenight to get participants for. | [required] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**models::Participants**](Participants.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
@@ -251,51 +260,18 @@ This endpoint does not need any parameter.
|
|||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## get_token
|
## get_games
|
||||||
|
|
||||||
> models::Token get_token(login)
|
> Vec<models::Game> get_games()
|
||||||
|
get all games
|
||||||
|
|
||||||
Submit your credentials to get a JWT-token to use with the rest of the api.
|
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
This endpoint does not need any parameter.
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**login** | Option<[**Login**](Login.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
[**models::Token**](Token.md)
|
[**Vec<models::Game>**](Game.md)
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
No authorization required
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## join_post
|
|
||||||
|
|
||||||
> join_post(gamenight_id)
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**gamenight_id** | Option<[**GamenightId**](GamenightId.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
(empty response body)
|
|
||||||
|
|
||||||
### Authorization
|
### Authorization
|
||||||
|
|
||||||
@@ -303,79 +279,23 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## leave_post
|
## get_location
|
||||||
|
|
||||||
> leave_post(gamenight_id)
|
|
||||||
|
|
||||||
|
> models::Location get_location(location_id)
|
||||||
|
gets this location
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**gamenight_id** | Option<[**GamenightId**](GamenightId.md)> | | |
|
**location_id** | **String** | Uuid of location to get. | [required] |
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
(empty response body)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## location_authorize_post
|
|
||||||
|
|
||||||
> location_authorize_post(authorize_location_request_body)
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**authorize_location_request_body** | Option<[**AuthorizeLocationRequestBody**](AuthorizeLocationRequestBody.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
(empty response body)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## location_get
|
|
||||||
|
|
||||||
> models::Location location_get(location_id)
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**location_id** | Option<[**LocationId**](LocationId.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -387,27 +307,27 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## location_post
|
## get_location_authorized_users
|
||||||
|
|
||||||
> models::LocationId location_post(add_location_request_body)
|
|
||||||
|
|
||||||
|
> Vec<models::UserId> get_location_authorized_users(location_id)
|
||||||
|
gets this locations authorized users
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**add_location_request_body** | Option<[**AddLocationRequestBody**](AddLocationRequestBody.md)> | | |
|
**location_id** | **String** | Uuid of location to get authorized users for. | [required] |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
[**models::LocationId**](LocationId.md)
|
[**Vec<models::UserId>**](UserId.md)
|
||||||
|
|
||||||
### Authorization
|
### Authorization
|
||||||
|
|
||||||
@@ -415,16 +335,16 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
### HTTP request headers
|
### HTTP request headers
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
- **Content-Type**: Not defined
|
||||||
- **Accept**: application/json
|
- **Accept**: application/json
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## locations_get
|
## get_locations
|
||||||
|
|
||||||
> Vec<models::Location> locations_get()
|
|
||||||
|
|
||||||
|
> Vec<models::Location> get_locations()
|
||||||
|
get all locations
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
@@ -446,17 +366,101 @@ This endpoint does not need any parameter.
|
|||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## own_post
|
## get_user
|
||||||
|
|
||||||
> own_post(own_game_request_body)
|
> models::User get_user(user_id)
|
||||||
|
|
||||||
|
|
||||||
|
Get a user from primary id
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**own_game_request_body** | Option<[**OwnGameRequestBody**](OwnGameRequestBody.md)> | | |
|
**user_id** | **String** | Uuid of user to get | [required] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**models::User**](User.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## get_user_owned_games
|
||||||
|
|
||||||
|
> Vec<models::OwnedGame> get_user_owned_games(user_id)
|
||||||
|
Get owned games of user
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**user_id** | **String** | Uuid of user to get owned games for. | [required] |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Vec<models::OwnedGame>**](OwnedGame.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## get_users
|
||||||
|
|
||||||
|
> Vec<models::User> get_users()
|
||||||
|
Get all users
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Vec<models::User>**](User.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## post_game_owners
|
||||||
|
|
||||||
|
> post_game_owners(game_id, own_game)
|
||||||
|
Own this game
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**game_id** | **String** | Uuid of game to own. | [required] |
|
||||||
|
**own_game** | Option<[**OwnGame**](OwnGame.md)> | | |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -474,21 +478,22 @@ Name | Type | Description | Required | Notes
|
|||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## owned_games_get
|
## post_gamenight_participants
|
||||||
|
|
||||||
> Vec<models::OwnedGame> owned_games_get(user_id)
|
|
||||||
|
|
||||||
|
> post_gamenight_participants(gamenight_id, user_id)
|
||||||
|
Add a participant
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**gamenight_id** | **String** | Uuid of gamenight to add participants for. | [required] |
|
||||||
**user_id** | Option<[**UserId**](UserId.md)> | | |
|
**user_id** | Option<[**UserId**](UserId.md)> | | |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
[**Vec<models::OwnedGame>**](OwnedGame.md)
|
(empty response body)
|
||||||
|
|
||||||
### Authorization
|
### Authorization
|
||||||
|
|
||||||
@@ -502,40 +507,10 @@ Name | Type | Description | Required | Notes
|
|||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## participants_get
|
## post_gamenights
|
||||||
|
|
||||||
> models::Participants participants_get(gamenight_id)
|
|
||||||
Get all participants for a gamenight
|
|
||||||
|
|
||||||
Retrieve the participants of a single gamenight by id.
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**gamenight_id** | Option<[**GamenightId**](GamenightId.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**models::Participants**](Participants.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## post_gamenight
|
|
||||||
|
|
||||||
> post_gamenight(add_gamenight_request_body)
|
|
||||||
|
|
||||||
|
> post_gamenights(add_gamenight_request_body)
|
||||||
|
Gets the gamenight
|
||||||
|
|
||||||
Add a gamenight by providing a name and a date, only available when providing an JWT token.
|
Add a gamenight by providing a name and a date, only available when providing an JWT token.
|
||||||
|
|
||||||
@@ -562,10 +537,152 @@ Name | Type | Description | Required | Notes
|
|||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## post_register
|
## post_games
|
||||||
|
|
||||||
> post_register(registration)
|
> models::GameId post_games(add_game_request_body)
|
||||||
|
add a game
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**add_game_request_body** | Option<[**AddGameRequestBody**](AddGameRequestBody.md)> | | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**models::GameId**](GameId.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## post_location_authorized_users
|
||||||
|
|
||||||
|
> post_location_authorized_users(location_id, user_id)
|
||||||
|
Authorize a user
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**location_id** | **String** | Uuid location to authorize for. | [required] |
|
||||||
|
**user_id** | Option<[**UserId**](UserId.md)> | | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
(empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## post_locations
|
||||||
|
|
||||||
|
> models::LocationId post_locations(add_location_request_body)
|
||||||
|
add a location
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**add_location_request_body** | Option<[**AddLocationRequestBody**](AddLocationRequestBody.md)> | | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**models::LocationId**](LocationId.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## post_refresh_token
|
||||||
|
|
||||||
|
> models::Token post_refresh_token()
|
||||||
|
Refresh a user token
|
||||||
|
|
||||||
|
Refresh your JWT-token without logging in again.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**models::Token**](Token.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[JWT-Auth](../README.md#JWT-Auth)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## post_token
|
||||||
|
|
||||||
|
> models::Token post_token(login)
|
||||||
|
Login a user.
|
||||||
|
|
||||||
|
Submit your credentials to get a JWT-token to use with the rest of the api.
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
|
Name | Type | Description | Required | Notes
|
||||||
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
|
**login** | Option<[**Login**](Login.md)> | | |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**models::Token**](Token.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
|
## post_users
|
||||||
|
|
||||||
|
> post_users(registration)
|
||||||
|
Registers a user into gamenight.
|
||||||
|
|
||||||
Create a new user given a registration token and user information, username and email must be unique, and password and password_repeat must match.
|
Create a new user given a registration token and user information, username and email must be unique, and password and password_repeat must match.
|
||||||
|
|
||||||
@@ -592,44 +709,18 @@ Name | Type | Description | Required | Notes
|
|||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## post_token
|
## put_game
|
||||||
|
|
||||||
> models::Token post_token()
|
|
||||||
|
|
||||||
|
|
||||||
Refresh your JWT-token without logging in again.
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
This endpoint does not need any parameter.
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**models::Token**](Token.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## rename_game_post
|
|
||||||
|
|
||||||
> rename_game_post(rename_game_request_body)
|
|
||||||
|
|
||||||
|
> put_game(game_id, edit_game_request_body)
|
||||||
|
Changes this game resource
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
Name | Type | Description | Required | Notes
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
------------- | ------------- | ------------- | ------------- | -------------
|
||||||
**rename_game_request_body** | Option<[**RenameGameRequestBody**](RenameGameRequestBody.md)> | | |
|
**game_id** | **String** | Uuid of game to change. | [required] |
|
||||||
|
**edit_game_request_body** | Option<[**EditGameRequestBody**](EditGameRequestBody.md)> | | |
|
||||||
|
|
||||||
### Return type
|
### Return type
|
||||||
|
|
||||||
@@ -646,58 +737,3 @@ Name | Type | Description | Required | Notes
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
## user_get
|
|
||||||
|
|
||||||
> models::User user_get(user_id)
|
|
||||||
|
|
||||||
|
|
||||||
Get a user from primary id
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
|
|
||||||
Name | Type | Description | Required | Notes
|
|
||||||
------------- | ------------- | ------------- | ------------- | -------------
|
|
||||||
**user_id** | Option<[**UserId**](UserId.md)> | | |
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**models::User**](User.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: application/json
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|
||||||
## users_get
|
|
||||||
|
|
||||||
> Vec<models::User> users_get()
|
|
||||||
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
This endpoint does not need any parameter.
|
|
||||||
|
|
||||||
### Return type
|
|
||||||
|
|
||||||
[**Vec<models::User>**](User.md)
|
|
||||||
|
|
||||||
### Authorization
|
|
||||||
|
|
||||||
[JWT-Auth](../README.md#JWT-Auth)
|
|
||||||
|
|
||||||
### HTTP request headers
|
|
||||||
|
|
||||||
- **Content-Type**: Not defined
|
|
||||||
- **Accept**: application/json
|
|
||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
|
||||||
|
|
||||||
|
|||||||
12
gamenight-api-client-rs/docs/EditGameRequestBody.md
Normal file
12
gamenight-api-client-rs/docs/EditGameRequestBody.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# EditGameRequestBody
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**id** | **String** | |
|
||||||
|
**name** | **String** | |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
12
gamenight-api-client-rs/docs/OwnGame.md
Normal file
12
gamenight-api-client-rs/docs/OwnGame.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# OwnGame
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**user_id** | **String** | |
|
||||||
|
**location_id** | Option<**String**> | | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**user_id** | **String** | |
|
||||||
**game_id** | **String** | |
|
**game_id** | **String** | |
|
||||||
**location_id** | Option<**String**> | | [optional]
|
**location_id** | Option<**String**> | | [optional]
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
30
gamenight-api-client-rs/src/models/edit_game_request_body.rs
Normal file
30
gamenight-api-client-rs/src/models/edit_game_request_body.rs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Gamenight
|
||||||
|
*
|
||||||
|
* Api specification for a Gamenight server
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0
|
||||||
|
* Contact: dennis@brentj.es
|
||||||
|
* Generated by: https://openapi-generator.tech
|
||||||
|
*/
|
||||||
|
|
||||||
|
use crate::models;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
pub struct EditGameRequestBody {
|
||||||
|
#[serde(rename = "id")]
|
||||||
|
pub id: String,
|
||||||
|
#[serde(rename = "name")]
|
||||||
|
pub name: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl EditGameRequestBody {
|
||||||
|
pub fn new(id: String, name: String) -> EditGameRequestBody {
|
||||||
|
EditGameRequestBody {
|
||||||
|
id,
|
||||||
|
name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -4,8 +4,8 @@ pub mod add_gamenight_request_body;
|
|||||||
pub use self::add_gamenight_request_body::AddGamenightRequestBody;
|
pub use self::add_gamenight_request_body::AddGamenightRequestBody;
|
||||||
pub mod add_location_request_body;
|
pub mod add_location_request_body;
|
||||||
pub use self::add_location_request_body::AddLocationRequestBody;
|
pub use self::add_location_request_body::AddLocationRequestBody;
|
||||||
pub mod authorize_location_request_body;
|
pub mod edit_game_request_body;
|
||||||
pub use self::authorize_location_request_body::AuthorizeLocationRequestBody;
|
pub use self::edit_game_request_body::EditGameRequestBody;
|
||||||
pub mod failure;
|
pub mod failure;
|
||||||
pub use self::failure::Failure;
|
pub use self::failure::Failure;
|
||||||
pub mod game;
|
pub mod game;
|
||||||
@@ -16,24 +16,20 @@ pub mod gamenight;
|
|||||||
pub use self::gamenight::Gamenight;
|
pub use self::gamenight::Gamenight;
|
||||||
pub mod gamenight_id;
|
pub mod gamenight_id;
|
||||||
pub use self::gamenight_id::GamenightId;
|
pub use self::gamenight_id::GamenightId;
|
||||||
pub mod get_gamenight_request_body;
|
|
||||||
pub use self::get_gamenight_request_body::GetGamenightRequestBody;
|
|
||||||
pub mod location;
|
pub mod location;
|
||||||
pub use self::location::Location;
|
pub use self::location::Location;
|
||||||
pub mod location_id;
|
pub mod location_id;
|
||||||
pub use self::location_id::LocationId;
|
pub use self::location_id::LocationId;
|
||||||
pub mod login;
|
pub mod login;
|
||||||
pub use self::login::Login;
|
pub use self::login::Login;
|
||||||
pub mod own_game_request_body;
|
pub mod own_game;
|
||||||
pub use self::own_game_request_body::OwnGameRequestBody;
|
pub use self::own_game::OwnGame;
|
||||||
pub mod owned_game;
|
pub mod owned_game;
|
||||||
pub use self::owned_game::OwnedGame;
|
pub use self::owned_game::OwnedGame;
|
||||||
pub mod participants;
|
pub mod participants;
|
||||||
pub use self::participants::Participants;
|
pub use self::participants::Participants;
|
||||||
pub mod registration;
|
pub mod registration;
|
||||||
pub use self::registration::Registration;
|
pub use self::registration::Registration;
|
||||||
pub mod rename_game_request_body;
|
|
||||||
pub use self::rename_game_request_body::RenameGameRequestBody;
|
|
||||||
pub mod token;
|
pub mod token;
|
||||||
pub use self::token::Token;
|
pub use self::token::Token;
|
||||||
pub mod user;
|
pub mod user;
|
||||||
|
|||||||
30
gamenight-api-client-rs/src/models/own_game.rs
Normal file
30
gamenight-api-client-rs/src/models/own_game.rs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Gamenight
|
||||||
|
*
|
||||||
|
* Api specification for a Gamenight server
|
||||||
|
*
|
||||||
|
* The version of the OpenAPI document: 1.0
|
||||||
|
* Contact: dennis@brentj.es
|
||||||
|
* Generated by: https://openapi-generator.tech
|
||||||
|
*/
|
||||||
|
|
||||||
|
use crate::models;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
pub struct OwnGame {
|
||||||
|
#[serde(rename = "user_id")]
|
||||||
|
pub user_id: String,
|
||||||
|
#[serde(rename = "location_id", skip_serializing_if = "Option::is_none")]
|
||||||
|
pub location_id: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OwnGame {
|
||||||
|
pub fn new(user_id: String) -> OwnGame {
|
||||||
|
OwnGame {
|
||||||
|
user_id,
|
||||||
|
location_id: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -13,6 +13,8 @@ use serde::{Deserialize, Serialize};
|
|||||||
|
|
||||||
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
|
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
|
||||||
pub struct OwnedGame {
|
pub struct OwnedGame {
|
||||||
|
#[serde(rename = "user_id")]
|
||||||
|
pub user_id: String,
|
||||||
#[serde(rename = "game_id")]
|
#[serde(rename = "game_id")]
|
||||||
pub game_id: String,
|
pub game_id: String,
|
||||||
#[serde(rename = "location_id", skip_serializing_if = "Option::is_none")]
|
#[serde(rename = "location_id", skip_serializing_if = "Option::is_none")]
|
||||||
@@ -20,8 +22,9 @@ pub struct OwnedGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl OwnedGame {
|
impl OwnedGame {
|
||||||
pub fn new(game_id: String) -> OwnedGame {
|
pub fn new(user_id: String, game_id: String) -> OwnedGame {
|
||||||
OwnedGame {
|
OwnedGame {
|
||||||
|
user_id,
|
||||||
game_id,
|
game_id,
|
||||||
location_id: None,
|
location_id: None,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ impl<'a> Flow<'a> for AddGame {
|
|||||||
let add_game_request = AddGameRequestBody {
|
let add_game_request = AddGameRequestBody {
|
||||||
name
|
name
|
||||||
};
|
};
|
||||||
let game_id_response = state.api.game_post(Some(add_game_request)).await?;
|
let game_id_response = state.api.post_games(Some(add_game_request)).await?;
|
||||||
|
|
||||||
let own_flow = Own::new(Uuid::parse_str(&game_id_response.game_id)?);
|
let own_flow = Own::new(Uuid::parse_str(&game_id_response.game_id)?);
|
||||||
return self.continue_with(state, &own_flow).await;
|
return self.continue_with(state, &own_flow).await;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ impl<'a> Flow<'a> for AddGamenight {
|
|||||||
.to_utc()
|
.to_utc()
|
||||||
.to_rfc3339();
|
.to_rfc3339();
|
||||||
let add_gamenight = models::AddGamenightRequestBody::new(name, datetime);
|
let add_gamenight = models::AddGamenightRequestBody::new(name, datetime);
|
||||||
state.api.post_gamenight(Some(add_gamenight)).await?;
|
state.api.post_gamenights(Some(add_gamenight)).await?;
|
||||||
|
|
||||||
clear_screen::clear();
|
clear_screen::clear();
|
||||||
return Ok((FlowOutcome::Successful, state))
|
return Ok((FlowOutcome::Successful, state))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::{ffi::OsStr, fmt::Display};
|
use std::{ffi::OsStr, fmt::Display};
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::{authorize_location_request_body::Op::Grant, AddLocationRequestBody, AuthorizeLocationRequestBody};
|
use gamenight_api_client_rs::models::{AddLocationRequestBody, UserId};
|
||||||
use inquire::{Editor, Text};
|
use inquire::{Editor, Text};
|
||||||
|
|
||||||
|
|
||||||
@@ -44,15 +44,13 @@ impl<'a> Flow<'a> for AddLocation {
|
|||||||
note
|
note
|
||||||
};
|
};
|
||||||
|
|
||||||
let location_id = state.api.location_post(Some(add_location_request)).await?;
|
let result = state.api.post_locations(Some(add_location_request)).await?;
|
||||||
|
|
||||||
let add_authorize_request = AuthorizeLocationRequestBody {
|
let user_id = UserId {
|
||||||
location_id: location_id.location_id.to_string(),
|
user_id: state.get_user_id()?.to_string()
|
||||||
user_id: state.get_user_id()?.to_string(),
|
|
||||||
op: Grant
|
|
||||||
};
|
};
|
||||||
|
|
||||||
state.api.location_authorize_post(Some(add_authorize_request)).await?;
|
state.api.post_location_authorized_users(&result.location_id, Some(user_id)).await?;
|
||||||
}
|
}
|
||||||
Ok((FlowOutcome::Cancelled, state))
|
Ok((FlowOutcome::Cancelled, state))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ impl Connect {
|
|||||||
pub async fn try_refresh_token_if_exists<'a>(&self, instance: &mut Instance, state: &'a mut GamenightState, instance_name: &String) -> Result<(bool, &'a mut GamenightState), FlowError> {
|
pub async fn try_refresh_token_if_exists<'a>(&self, instance: &mut Instance, state: &'a mut GamenightState, instance_name: &String) -> Result<(bool, &'a mut GamenightState), FlowError> {
|
||||||
if let Some(token) = &instance.token {
|
if let Some(token) = &instance.token {
|
||||||
let state = state.set_bearer_access_token(Some(token.clone()));
|
let state = state.set_bearer_access_token(Some(token.clone()));
|
||||||
let result = state.api.post_token().await;
|
let result = state.api.post_refresh_token().await;
|
||||||
if let Ok(token) = result {
|
if let Ok(token) = result {
|
||||||
let instance = state.gamenight_configuration.instances.iter_mut().find(|x| x.name == *instance_name).unwrap();
|
let instance = state.gamenight_configuration.instances.iter_mut().find(|x| x.name == *instance_name).unwrap();
|
||||||
instance.token = token.jwt_token.clone();
|
instance.token = token.jwt_token.clone();
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::GameId;
|
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
||||||
@@ -22,7 +21,7 @@ impl Disown {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for Disown {
|
impl<'a> Flow<'a> for Disown {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let _ = state.api.disown_post(Some(GameId{game_id: self.game_id.to_string()})).await?;
|
let _ = state.api.delete_game_owner(&self.game_id.to_string(), &state.get_user_id()?.to_string()).await?;
|
||||||
|
|
||||||
clear_screen::clear();
|
clear_screen::clear();
|
||||||
Ok((FlowOutcome::Successful, state))
|
Ok((FlowOutcome::Successful, state))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::GamenightId;
|
use gamenight_api_client_rs::models::UserId;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
||||||
@@ -22,7 +22,7 @@ impl Join {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for Join {
|
impl<'a> Flow<'a> for Join {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let _ = state.api.join_post(Some(GamenightId{gamenight_id: self.gamenight_id.to_string()})).await?;
|
let _ = state.api.post_gamenight_participants(&self.gamenight_id.to_string(), Some(UserId{user_id: state.get_user_id()?.to_string()})).await?;
|
||||||
|
|
||||||
clear_screen::clear();
|
clear_screen::clear();
|
||||||
Ok((FlowOutcome::Successful, state))
|
Ok((FlowOutcome::Successful, state))
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::GamenightId;
|
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
||||||
@@ -22,7 +21,7 @@ impl Leave {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for Leave {
|
impl<'a> Flow<'a> for Leave {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let _ = state.api.leave_post(Some(GamenightId{gamenight_id: self.gamenight_id.to_string()})).await?;
|
let _ = state.api.delete_gamenight_participant(&self.gamenight_id.to_string(), &state.get_user_id()?.to_string()).await?;
|
||||||
|
|
||||||
clear_screen::clear();
|
clear_screen::clear();
|
||||||
Ok((FlowOutcome::Successful, state))
|
Ok((FlowOutcome::Successful, state))
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ impl ListGames {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for ListGames {
|
impl<'a> Flow<'a> for ListGames {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let games = state.api.games_get().await?;
|
let games = state.api.get_games().await?;
|
||||||
|
|
||||||
let mut flows = games.into_iter().map(|game| -> Box<dyn Flow + Send> {
|
let mut flows = games.into_iter().map(|game| -> Box<dyn Flow + Send> {
|
||||||
Box::new(ViewGame::new(game.into()))
|
Box::new(ViewGame::new(game.into()))
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ impl ListLocations {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for ListLocations {
|
impl<'a> Flow<'a> for ListLocations {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let locations = state.api.locations_get().await?;
|
let locations = state.api.get_locations().await?;
|
||||||
|
|
||||||
let mut flows = locations.into_iter().map(|location| -> Box<dyn Flow + Send> {
|
let mut flows = locations.into_iter().map(|location| -> Box<dyn Flow + Send> {
|
||||||
Box::new(ViewLocation::new(location.try_into().unwrap()))
|
Box::new(ViewLocation::new(location.try_into().unwrap()))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::{AuthorizeLocationRequestBody, LocationId, User};
|
use gamenight_api_client_rs::models::{User, UserId};
|
||||||
use inquire::MultiSelect;
|
use inquire::MultiSelect;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
@@ -47,11 +47,9 @@ impl<'a> TryFrom<&'a User> for AuthorizeMultiSelectStruct<'a> {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for LocationAuthorize {
|
impl<'a> Flow<'a> for LocationAuthorize {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let users = state.api.users_get().await?;
|
let users = state.api.get_users().await?;
|
||||||
let location_id = LocationId {
|
|
||||||
location_id: self.location_id.to_string()
|
let authorized_user_ids = state.api.get_location_authorized_users(&self.location_id.to_string()).await?;
|
||||||
};
|
|
||||||
let authorized_user_ids = state.api.authorized_location_user_ids_get(Some(location_id)).await?;
|
|
||||||
let authorized_user_ids : Vec<String> = authorized_user_ids.into_iter().map(|x| x.user_id).collect();
|
let authorized_user_ids : Vec<String> = authorized_user_ids.into_iter().map(|x| x.user_id).collect();
|
||||||
|
|
||||||
let options: Vec<AuthorizeMultiSelectStruct> = users.iter().map(|x| {x.try_into()}).collect::<Result<Vec<AuthorizeMultiSelectStruct>, FlowError>>()?;
|
let options: Vec<AuthorizeMultiSelectStruct> = users.iter().map(|x| {x.try_into()}).collect::<Result<Vec<AuthorizeMultiSelectStruct>, FlowError>>()?;
|
||||||
@@ -66,25 +64,14 @@ impl<'a> Flow<'a> for LocationAuthorize {
|
|||||||
|
|
||||||
if let Some(selections) = &selections {
|
if let Some(selections) = &selections {
|
||||||
for selection in selections {
|
for selection in selections {
|
||||||
|
let user_id = UserId { user_id: selection.id.to_string() };
|
||||||
if authorized_users.iter().find(|x| {x.id == selection.id.to_string()}).is_none() {
|
if authorized_users.iter().find(|x| {x.id == selection.id.to_string()}).is_none() {
|
||||||
state.api.location_authorize_post(Some(
|
state.api.post_location_authorized_users(&self.location_id.to_string(), Some(user_id)).await?
|
||||||
AuthorizeLocationRequestBody {
|
|
||||||
location_id: self.location_id.to_string(),
|
|
||||||
user_id: selection.id.to_string(),
|
|
||||||
op: gamenight_api_client_rs::models::authorize_location_request_body::Op::Grant
|
|
||||||
}
|
|
||||||
)).await?
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for authorized_user in authorized_users {
|
for authorized_user in authorized_users {
|
||||||
if selections.iter().find(|x| {x.id.to_string() == authorized_user.id}).is_none() {
|
if selections.iter().find(|x| {x.id.to_string() == authorized_user.id}).is_none() {
|
||||||
state.api.location_authorize_post(Some(
|
state.api.delete_location_authorized_user(&self.location_id.to_string(), &authorized_user.id.to_string()).await?
|
||||||
AuthorizeLocationRequestBody {
|
|
||||||
location_id: self.location_id.to_string(),
|
|
||||||
user_id: authorized_user.id.to_string(),
|
|
||||||
op: gamenight_api_client_rs::models::authorize_location_request_body::Op::Revoke
|
|
||||||
}
|
|
||||||
)).await?
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ impl<'a> Flow<'a> for Login {
|
|||||||
|
|
||||||
let login = models::Login::new(username, password);
|
let login = models::Login::new(username, password);
|
||||||
|
|
||||||
let result = state.api.get_token(Some(login)).await?;
|
let result = state.api.post_token(Some(login)).await?;
|
||||||
|
|
||||||
clear_screen::clear();
|
clear_screen::clear();
|
||||||
if let Some(token) = result.jwt_token {
|
if let Some(token) = result.jwt_token {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::fmt::Display;
|
|||||||
use super::{Flow, FlowError, FlowOutcome, FlowResult, GamenightState};
|
use super::{Flow, FlowError, FlowOutcome, FlowResult, GamenightState};
|
||||||
use crate::domain::location_select_data::LocationSelectData;
|
use crate::domain::location_select_data::LocationSelectData;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::OwnGameRequestBody;
|
use gamenight_api_client_rs::models::OwnGame;
|
||||||
use inquire::{Confirm, Select};
|
use inquire::{Confirm, Select};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ impl Own {
|
|||||||
impl<'a> Flow<'a> for Own {
|
impl<'a> Flow<'a> for Own {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
|
|
||||||
let mut own_game_request = OwnGameRequestBody {
|
let mut own_game_request = OwnGame {
|
||||||
game_id: self.game_id.to_string(),
|
user_id: state.get_user_id()?.to_string(),
|
||||||
location_id: None
|
location_id: None
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -33,13 +33,13 @@ impl<'a> Flow<'a> for Own {
|
|||||||
if owned {
|
if owned {
|
||||||
if let Some(willing_to_travel) = Confirm::new("Are you willing to travel with this game?").prompt_skippable()? {
|
if let Some(willing_to_travel) = Confirm::new("Are you willing to travel with this game?").prompt_skippable()? {
|
||||||
if !willing_to_travel {
|
if !willing_to_travel {
|
||||||
let locations = state.api.locations_get().await?.iter().map(|x| { x.try_into() }).collect::<Result<Vec<LocationSelectData>, FlowError>>()?;
|
let locations = state.api.get_locations().await?.iter().map(|x| { x.try_into() }).collect::<Result<Vec<LocationSelectData>, FlowError>>()?;
|
||||||
if let Some(location) = Select::new("What location can this game be played?", locations).prompt_skippable()? {
|
if let Some(location) = Select::new("What location can this game be played?", locations).prompt_skippable()? {
|
||||||
own_game_request.location_id = Some(location.id.to_string());
|
own_game_request.location_id = Some(location.id.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let _ = state.api.own_post(Some(own_game_request)).await?;
|
let _ = state.api.post_game_owners(&self.game_id.to_string(), Some(own_game_request)).await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::GameId;
|
|
||||||
|
|
||||||
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
use super::{Flow, FlowOutcome, FlowResult, GamenightState};
|
||||||
use crate::domain::game::Game;
|
use crate::domain::game::Game;
|
||||||
@@ -22,10 +21,7 @@ impl RemoveGame {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for RemoveGame {
|
impl<'a> Flow<'a> for RemoveGame {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let req = GameId {
|
state.api.delete_game(&self.game.id.to_string()).await?;
|
||||||
game_id: self.game.id.to_string()
|
|
||||||
};
|
|
||||||
state.api.game_delete(Some(req)).await?;
|
|
||||||
//Hack to return to right stack item, skipping detail view that doesn't exist.
|
//Hack to return to right stack item, skipping detail view that doesn't exist.
|
||||||
Ok((FlowOutcome::Abort, state))
|
Ok((FlowOutcome::Abort, state))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::fmt::Display;
|
use std::fmt::Display;
|
||||||
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use gamenight_api_client_rs::models::RenameGameRequestBody;
|
use gamenight_api_client_rs::models::EditGameRequestBody;
|
||||||
use inquire::Text;
|
use inquire::Text;
|
||||||
|
|
||||||
use crate::domain::game::Game;
|
use crate::domain::game::Game;
|
||||||
@@ -28,11 +28,11 @@ impl<'a> Flow<'a> for RenameGame {
|
|||||||
.with_initial_value(&self.game.name)
|
.with_initial_value(&self.game.name)
|
||||||
.prompt_skippable()?
|
.prompt_skippable()?
|
||||||
{
|
{
|
||||||
let req = RenameGameRequestBody {
|
let req = EditGameRequestBody {
|
||||||
id: self.game.id.to_string(),
|
id: self.game.id.to_string(),
|
||||||
name
|
name
|
||||||
};
|
};
|
||||||
state.api.rename_game_post(Some(req)).await?;
|
state.api.put_game(&req.id.clone(), Some(req)).await?;
|
||||||
|
|
||||||
return Ok((FlowOutcome::Successful, state))
|
return Ok((FlowOutcome::Successful, state))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
|
|
||||||
use gamenight_api_client_rs::models::{GameId, UserId};
|
|
||||||
use inquire::Select;
|
use inquire::Select;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
use crate::{domain::game::Game, flows::{disown::Disown, exit::Exit, own::Own, rename_game::RenameGame}};
|
|
||||||
use crate::flows::remove_game::RemoveGame;
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use crate::flows::remove_game::RemoveGame;
|
||||||
|
use crate::{domain::game::Game, flows::{disown::Disown, exit::Exit, own::Own, rename_game::RenameGame}};
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ViewGame {
|
pub struct ViewGame {
|
||||||
@@ -23,14 +21,10 @@ impl ViewGame {
|
|||||||
#[async_trait]
|
#[async_trait]
|
||||||
impl<'a> Flow<'a> for ViewGame {
|
impl<'a> Flow<'a> for ViewGame {
|
||||||
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
async fn run(&self, state: &'a mut GamenightState) -> FlowResult<'a> {
|
||||||
let game_id = GameId{ game_id: self.game.id.to_string() };
|
let game: Game = state.api.get_game(&self.game.id.to_string()).await?.into();
|
||||||
let game: Game = state.api.game_get(Some(game_id)).await?.into();
|
|
||||||
|
|
||||||
println!("{}", game);
|
println!("{}", game);
|
||||||
|
let owned_games: Vec<Uuid> = state.api.get_user_owned_games(&state.get_user_id()?.to_string()).await?
|
||||||
let my_uid = state.get_user_id()?;
|
|
||||||
let request = UserId{ user_id: my_uid.to_string() };
|
|
||||||
let owned_games: Vec<Uuid> = state.api.owned_games_get(Some(request)).await?
|
|
||||||
.iter().map(|x| -> Result<Uuid, FlowError> {
|
.iter().map(|x| -> Result<Uuid, FlowError> {
|
||||||
Ok(Uuid::parse_str(&x.game_id)?)
|
Ok(Uuid::parse_str(&x.game_id)?)
|
||||||
}).collect::<Result<Vec<Uuid>, FlowError>>()?;
|
}).collect::<Result<Vec<Uuid>, FlowError>>()?;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use crate::domain::gamenight::Gamenight;
|
use crate::domain::gamenight::Gamenight;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use gamenight_api_client_rs::models::{GameId, GamenightId, LocationId, OwnedGame, UserId};
|
use gamenight_api_client_rs::models::OwnedGame;
|
||||||
use inquire::Select;
|
use inquire::Select;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
@@ -29,30 +29,29 @@ impl<'a> Flow<'a> for ViewGamenight {
|
|||||||
start_time: self.gamenight_select_data.start_time,
|
start_time: self.gamenight_select_data.start_time,
|
||||||
name: self.gamenight_select_data.name.clone(),
|
name: self.gamenight_select_data.name.clone(),
|
||||||
location: None,
|
location: None,
|
||||||
organizer: state.api.user_get(Some(UserId{user_id: self.gamenight_select_data.owner_id.to_string()})).await?.try_into()?,
|
organizer: state.api.get_user(&self.gamenight_select_data.owner_id.to_string()).await?.try_into()?,
|
||||||
participants: Participants(vec![]),
|
participants: Participants(vec![]),
|
||||||
owned_games: OwnedGames(HashMap::new())
|
owned_games: OwnedGames(HashMap::new())
|
||||||
};
|
};
|
||||||
|
|
||||||
gamenight.location = match self.gamenight_select_data.location_id {
|
gamenight.location = match self.gamenight_select_data.location_id {
|
||||||
None => None,
|
None => None,
|
||||||
Some(l) => Some(state.api.location_get(Some(LocationId{location_id: l.to_string()})).await?.try_into()?)
|
Some(l) => Some(state.api.get_location(&l.to_string()).await?.try_into()?)
|
||||||
};
|
};
|
||||||
let participants = state.api.participants_get(Some(GamenightId{gamenight_id: gamenight.id.to_string()})).await?;
|
let participants = state.api.get_gamenight_participants(&gamenight.id.to_string()).await?;
|
||||||
|
|
||||||
for participant in participants.participants.iter() {
|
for participant in participants.participants.iter() {
|
||||||
gamenight.participants.0.push(state.api.user_get(Some(UserId{user_id: participant.clone()})).await?.try_into()?);
|
gamenight.participants.0.push(state.api.get_user(&participant).await?.try_into()?);
|
||||||
}
|
}
|
||||||
|
|
||||||
for user in &gamenight.participants.0 {
|
for user in &gamenight.participants.0 {
|
||||||
let request = UserId{ user_id: user.id.to_string() };
|
let owned_games_refs: Vec<OwnedGame> = state.api.get_user_owned_games(&user.id.to_string()).await?;
|
||||||
let owned_games_refs: Vec<OwnedGame> = state.api.owned_games_get(Some(request)).await?;
|
|
||||||
let mut owned_games = vec![];
|
let mut owned_games = vec![];
|
||||||
for owned_games_ref in owned_games_refs {
|
for owned_games_ref in owned_games_refs {
|
||||||
let game = state.api.game_get(Some(GameId{ game_id: owned_games_ref.game_id.clone()})).await?.into();
|
let game = state.api.get_game(&owned_games_ref.game_id).await?.into();
|
||||||
let location = match owned_games_ref.location_id {
|
let location = match owned_games_ref.location_id {
|
||||||
None => None,
|
None => None,
|
||||||
Some(x) => Some(state.api.location_get(Some(LocationId{location_id: x})).await?.try_into()?)
|
Some(x) => Some(state.api.get_location(&x).await?.try_into()?)
|
||||||
};
|
};
|
||||||
owned_games.push((game, location));
|
owned_games.push((game, location));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,9 +33,9 @@ pub fn disown_game(conn: &mut PgConnection, owned_game: OwnedGame) -> Result<usi
|
|||||||
.execute(conn)?)
|
.execute(conn)?)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn owned_games(conn: &mut PgConnection, uuid: Uuid) -> Result<Vec<(Uuid, Option<Uuid>)>, DatabaseError> {
|
pub fn owned_games(conn: &mut PgConnection, uuid: Uuid) -> Result<Vec<(Uuid, Uuid, Option<Uuid>)>, DatabaseError> {
|
||||||
Ok(owned_game::table
|
Ok(owned_game::table
|
||||||
.select((owned_game::game_id, owned_game::location_id))
|
.select((owned_game::user_id, owned_game::game_id, owned_game::location_id))
|
||||||
.filter(owned_game::user_id.eq(uuid))
|
.filter(owned_game::user_id.eq(uuid))
|
||||||
.get_results(conn)?)
|
.get_results(conn)?)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user