Documentation
¶
Index ¶
- Constants
- type Health
- type HealthResponse
- type Item
- type ItemRequest
- type ItemResponse
- type ItemsFilter
- type ItemsResponse
- type ItemsStorage
- type Link
- type LinkRequest
- type LinkResponse
- type LinksFilter
- type LinksResponse
- type LinksStorage
- type Player
- type PlayerRequest
- type PlayerResponse
- type PlayersFilter
- type PlayersResponse
- type PlayersStorage
- type Room
- type RoomRequest
- type RoomResponse
- type RoomsFilter
- type RoomsResponse
- type RoomsStorage
- type StorageDriver
Constants ¶
const ( MaxItemNameLen = 255 MaxItemDescriptionLen = 4096 )
const ( MaxLinkNameLen = 255 MaxLinkDescriptionLen = 4096 )
const ( MaxPlayerNameLen = 255 MaxPlayerDescriptionLen = 4096 DefaultPlayersFilterLimit = 10 MaxPlayersFilterLimit = 100 )
const ( MaxRoomNameLen = 255 MaxRoomDescriptionLen = 4096 DefaultRoomsFilterLimit = 10 MaxRoomsFilterLimit = 100 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Health ¶
type Health struct {
Status string `json:"status"`
}
Health is the internal representation of the health of the system.
type HealthResponse ¶
type HealthResponse struct {
Data Health `json:"data"`
}
HealthResponse is used to json encoded a health response.
type Item ¶
type Item struct {
ID string `json:"itemID"`
Name string `json:"name"`
Description string `json:"description"`
OwnerID string `json:"ownerID"`
LocationID string `json:"locationID"`
InventoryID string `json:"inventoryID"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Item is the internal representation of the data related to a item.
type ItemRequest ¶
type ItemRequest struct {
Name string `json:"name"`
Description string `json:"description"`
OwnerID string `json:"ownerID"`
LocationID string `json:"locationID"`
InventoryID string `json:"inventoryID"`
}
ItemRequest is the payload of a item create or update request.
type ItemResponse ¶
type ItemResponse struct {
Data Item `json:"data"`
}
ItemResponse is used to json encoded a single item response.
type ItemsFilter ¶
type ItemsFilter struct {
// OwnerID filters for items owned by a given item.
OwnerID *string
// LocationID filters for items located in the given room.
LocationID *string
// InventoryID filters for items in the inventory of the given player.
InventoryID *string
// Restrict to a subset of the results.
Offset int
Limit int
}
ItemsFilter is used to filter results from a List.
type ItemsResponse ¶
type ItemsResponse struct {
Data []Item `json:"data"`
}
ItemsResponse is used to json encoded a multi-item response.
func NewItemsResponse ¶
func NewItemsResponse(rs []Item) ItemsResponse
NewItemsResponse returns a items response given a slice of items.
type ItemsStorage ¶ added in v0.0.10
type ItemsStorage interface {
// List returns a slice of items based on the value of the filter.
List(ctx context.Context, filter ItemsFilter) ([]Item, error)
// Get returns a single item given the itemID.
Get(ctx context.Context, itemID string) (Item, error)
// Create a item given the item request, returning the creating item.
Create(ctx context.Context, req ItemRequest) (Item, error)
// Update a item given the item request, returning the updated item.
Update(ctx context.Context, itemID string, req ItemRequest) (Item, error)
// Remove deletes the given item from persistent storage.
Remove(ctx context.Context, itemID string) error
}
ItemsStorage represents the persistent storage of items.
type Link ¶
type Link struct {
ID string `json:"linkID"`
Name string `json:"name"`
Description string `json:"description"`
OwnerID string `json:"ownerID"`
LocationID string `json:"locationID"`
DestinationID string `json:"destinationID"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Link is the internal representation of the data related to a link.
type LinkRequest ¶
type LinkRequest struct {
Name string `json:"name"`
Description string `json:"description"`
OwnerID string `json:"ownerID"`
LocationID string `json:"locationID"`
DestinationID string `json:"destinationID"`
}
LinkRequest is the payload of a link create or update request.
type LinkResponse ¶
type LinkResponse struct {
Data Link `json:"data"`
}
LinkResponse is used to json encoded a single link response.
type LinksFilter ¶
type LinksFilter struct {
// OwnerID filters for links owned by a given link.
OwnerID *string
// LocationID filters for links located in a location link (non-recursive).
LocationID *string
// DestinationID filters for links connected to the given destination.
DestinationID *string
// Restrict to a subset of the results.
Offset int
Limit int
}
LinksFilter is used to filter results from a List.
type LinksResponse ¶
type LinksResponse struct {
Data []Link `json:"data"`
}
LinksResponse is used to json encoded a multi-link response.
func NewLinksResponse ¶
func NewLinksResponse(rs []Link) LinksResponse
NewLinksResponse returns a links response given a slice of links.
type LinksStorage ¶ added in v0.0.10
type LinksStorage interface {
// List returns a slice of links based on the value of the filter.
List(ctx context.Context, filter LinksFilter) ([]Link, error)
// Get returns a single link given the linkID.
Get(ctx context.Context, linkID string) (Link, error)
// Create a link given the link request, returning the creating link.
Create(ctx context.Context, req LinkRequest) (Link, error)
// Update a link given the link request, returning the updated link.
Update(ctx context.Context, linkID string, req LinkRequest) (Link, error)
// Remove deletes the given link from persistent storage.
Remove(ctx context.Context, linkID string) error
}
LinksStorage represents the persistent storage of links.
type Player ¶
type Player struct {
ID string `json:"playerID"`
Name string `json:"name"`
Description string `json:"description"`
HomeID string `json:"homeID"`
LocationID string `json:"locationID"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Player is the internal representation of the data related to a player.
type PlayerRequest ¶
type PlayerRequest struct {
Name string `json:"name"`
Description string `json:"description"`
HomeID string `json:"homeID"`
LocationID string `json:"locationID"`
}
PlayerRequest is the payload of a player create or update request.
type PlayerResponse ¶
type PlayerResponse struct {
Data Player `json:"data"`
}
PlayerResponse is used to json encoded a single player response.
type PlayersFilter ¶
type PlayersFilter struct {
// LocationID filters for players in a given location.
LocationID *uuid.UUID
// Restrict to a subset of the results.
Offset int
Limit int
}
PlayersFilter is used to filter results from List.
func NewPlayersFilter ¶ added in v0.0.10
func NewPlayersFilter(r *http.Request) (PlayersFilter, error)
NewPlayersFilter creates a PlayersFilter from the the given request's URL query parameters
type PlayersResponse ¶
type PlayersResponse struct {
Data []Player `json:"data"`
}
PlayersResponse is used to json encoded a multi-player resposne.
func NewPlayersResponse ¶
func NewPlayersResponse(ps []Player) PlayersResponse
NewPlayersResponse returns a players response given a slice of players.
type PlayersStorage ¶ added in v0.0.10
type PlayersStorage interface {
// List returns a slice of players based on the value of the filter.
List(ctx context.Context, filter PlayersFilter) ([]Player, error)
// Get returns a single player given the playerID.
Get(ctx context.Context, playerID string) (Player, error)
// Create a player given the player request, returning the creating player.
Create(ctx context.Context, req PlayerRequest) (Player, error)
// Update a player given the player request, returning the updated player.
Update(ctx context.Context, playerID string, req PlayerRequest) (Player, error)
// Remove deletes the given player from persistent storage.
Remove(ctx context.Context, playerID string) error
}
PlayersStorage represents the persistent storage of players.
type Room ¶
type Room struct {
ID string `json:"roomID"`
Name string `json:"name"`
Description string `json:"description"`
OwnerID string `json:"ownerID"`
ParentID string `json:"parentID"`
Created time.Time `json:"created"`
Updated time.Time `json:"updated"`
}
Room is the internal representation of the data related to a room.
type RoomRequest ¶
type RoomRequest struct {
Name string `json:"name"`
Description string `json:"description"`
OwnerID string `json:"ownerID"`
ParentID string `json:"parentID"`
}
RoomRequest is the payload of a room create or update request.
type RoomResponse ¶
type RoomResponse struct {
Data Room `json:"data"`
}
RoomResponse is used to json encoded a single room response.
type RoomsFilter ¶
type RoomsFilter struct {
// OwnerID filters for rooms owned by a given room.
OwnerID *uuid.UUID
// ParentID filters for rooms located in a parent room (non-recursive).
ParentID *uuid.UUID
// Restrict to a subset of the results.
Offset int
Limit int
}
RoomsFilter is used to filter results from a List.
func NewRoomsFilter ¶ added in v0.0.10
func NewRoomsFilter(r *http.Request) (RoomsFilter, error)
NewRoomsFilter creates a RoomsFilter from the the given request's URL query parameters
type RoomsResponse ¶
type RoomsResponse struct {
Data []Room `json:"data"`
}
RoomsResponse is used to json encoded a multi-room response.
func NewRoomsResponse ¶
func NewRoomsResponse(rs []Room) RoomsResponse
NewRoomsResponse returns a rooms response given a slice of rooms.
type RoomsStorage ¶ added in v0.0.10
type RoomsStorage interface {
// List returns a slice of rooms based on the value of the filter.
List(ctx context.Context, filter RoomsFilter) ([]Room, error)
// Get returns a single room given the roomID.
Get(ctx context.Context, roomID string) (Room, error)
// Create a room given the room request, returning the creating room.
Create(ctx context.Context, req RoomRequest) (Room, error)
// Update a room given the room request, returning the updated room.
Update(ctx context.Context, roomID string, req RoomRequest) (Room, error)
// Remove deletes the given room from persistent storage.
Remove(ctx context.Context, roomID string) error
}
RoomsStorage represents the persistent storage of rooms.
type StorageDriver ¶
type StorageDriver interface {
// PlayersListQuery returns the List query string given the filter.
PlayersListQuery(PlayersFilter) string
// PlayersGetQuery returns the Get query string.
PlayersGetQuery() string
// PlayersCreateQuery returns the Create query string.
PlayersCreateQuery() string
// PlayersUpdateQuery returns the update query string.
PlayersUpdateQuery() string
// PlayersRemoveQuery returns the Remove query string.
PlayersRemoveQuery() string
// RoomListQuery returns the List query string given the filter.
RoomsListQuery(RoomsFilter) string
// RoomsGetQuery returns the Get query string.
RoomsGetQuery() string
// RoomsCreateQuery returns the Create query string.
RoomsCreateQuery() string
// RoomsUpdateQuery returns the Update query string.
RoomsUpdateQuery() string
// RoomsRemoveQuery returns the Remove query string.
RoomsRemoveQuery() string
// LinksListQuery returns the List query string given the filter.
LinksListQuery(LinksFilter) string
// LinksGetQuery returns the Get query string.
LinksGetQuery() string
// LinksCreateQuery returns the Create query string.
LinksCreateQuery() string
// LinksUpdateQuery returns the Update query string.
LinksUpdateQuery() string
// LinksRemoveQuery returns the Remove query string.
LinksRemoveQuery() string
// ItemsListQuery returns the List query string given the filter.
ItemsListQuery(ItemsFilter) string
// ItemsGetQuery returns the Get query string.
ItemsGetQuery() string
// ItemsCreateQuery returns the Create query string.
ItemsCreateQuery() string
// ItemsUpdateQuery returns the Update query string.
ItemsUpdateQuery() string
// ItemsRemoveQuery returns the Remove query string.
ItemsRemoveQuery() string
// IsForeignKeyViolation returns true if the given error is a foreign key violation error.
IsForeignKeyViolation(err error) bool
// IsUniqueViolation returns true if the given error is a unique violation error.
IsUniqueViolation(err error) bool
}
Storage represents the SQL driver specific functionality.