feat: implement game listing API and integrate into frontend for display and selection.
This commit is contained in:
@@ -66,6 +66,10 @@ export interface PersonList {
|
||||
person: Person[];
|
||||
}
|
||||
|
||||
export interface GameList {
|
||||
games: Game[];
|
||||
}
|
||||
|
||||
/** Authentication messages */
|
||||
export interface LoginRequest {
|
||||
username: string;
|
||||
@@ -101,6 +105,9 @@ export interface GameRequest {
|
||||
title: string;
|
||||
}
|
||||
|
||||
export interface GetGamesRequest {
|
||||
}
|
||||
|
||||
export interface AddOpinionRequest {
|
||||
gameTitle: string;
|
||||
wouldPlay: boolean;
|
||||
@@ -474,6 +481,64 @@ export const PersonList: MessageFns<PersonList> = {
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseGameList(): GameList {
|
||||
return { games: [] };
|
||||
}
|
||||
|
||||
export const GameList: MessageFns<GameList> = {
|
||||
encode(message: GameList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
||||
for (const v of message.games) {
|
||||
Game.encode(v!, writer.uint32(10).fork()).join();
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: BinaryReader | Uint8Array, length?: number): GameList {
|
||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
||||
const end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseGameList();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
case 1: {
|
||||
if (tag !== 10) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.games.push(Game.decode(reader, reader.uint32()));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ((tag & 7) === 4 || tag === 0) {
|
||||
break;
|
||||
}
|
||||
reader.skip(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(object: any): GameList {
|
||||
return { games: globalThis.Array.isArray(object?.games) ? object.games.map((e: any) => Game.fromJSON(e)) : [] };
|
||||
},
|
||||
|
||||
toJSON(message: GameList): unknown {
|
||||
const obj: any = {};
|
||||
if (message.games?.length) {
|
||||
obj.games = message.games.map((e) => Game.toJSON(e));
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<GameList>, I>>(base?: I): GameList {
|
||||
return GameList.fromPartial(base ?? ({} as any));
|
||||
},
|
||||
fromPartial<I extends Exact<DeepPartial<GameList>, I>>(object: I): GameList {
|
||||
const message = createBaseGameList();
|
||||
message.games = object.games?.map((e) => Game.fromPartial(e)) || [];
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseLoginRequest(): LoginRequest {
|
||||
return { username: "", password: "" };
|
||||
}
|
||||
@@ -984,6 +1049,49 @@ export const GameRequest: MessageFns<GameRequest> = {
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseGetGamesRequest(): GetGamesRequest {
|
||||
return {};
|
||||
}
|
||||
|
||||
export const GetGamesRequest: MessageFns<GetGamesRequest> = {
|
||||
encode(_: GetGamesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
||||
return writer;
|
||||
},
|
||||
|
||||
decode(input: BinaryReader | Uint8Array, length?: number): GetGamesRequest {
|
||||
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
||||
const end = length === undefined ? reader.len : reader.pos + length;
|
||||
const message = createBaseGetGamesRequest();
|
||||
while (reader.pos < end) {
|
||||
const tag = reader.uint32();
|
||||
switch (tag >>> 3) {
|
||||
}
|
||||
if ((tag & 7) === 4 || tag === 0) {
|
||||
break;
|
||||
}
|
||||
reader.skip(tag & 7);
|
||||
}
|
||||
return message;
|
||||
},
|
||||
|
||||
fromJSON(_: any): GetGamesRequest {
|
||||
return {};
|
||||
},
|
||||
|
||||
toJSON(_: GetGamesRequest): unknown {
|
||||
const obj: any = {};
|
||||
return obj;
|
||||
},
|
||||
|
||||
create<I extends Exact<DeepPartial<GetGamesRequest>, I>>(base?: I): GetGamesRequest {
|
||||
return GetGamesRequest.fromPartial(base ?? ({} as any));
|
||||
},
|
||||
fromPartial<I extends Exact<DeepPartial<GetGamesRequest>, I>>(_: I): GetGamesRequest {
|
||||
const message = createBaseGetGamesRequest();
|
||||
return message;
|
||||
},
|
||||
};
|
||||
|
||||
function createBaseAddOpinionRequest(): AddOpinionRequest {
|
||||
return { gameTitle: "", wouldPlay: false };
|
||||
}
|
||||
@@ -1099,6 +1207,8 @@ export class AuthServiceClientImpl implements AuthService {
|
||||
|
||||
export interface MainService {
|
||||
GetGame(request: GameRequest): Promise<Game>;
|
||||
GetGames(request: GetGamesRequest): Promise<GameList>;
|
||||
AddGame(request: Game): Promise<Game>;
|
||||
AddOpinion(request: AddOpinionRequest): Promise<Person>;
|
||||
}
|
||||
|
||||
@@ -1110,6 +1220,8 @@ export class MainServiceClientImpl implements MainService {
|
||||
this.service = opts?.service || MainServiceServiceName;
|
||||
this.rpc = rpc;
|
||||
this.GetGame = this.GetGame.bind(this);
|
||||
this.GetGames = this.GetGames.bind(this);
|
||||
this.AddGame = this.AddGame.bind(this);
|
||||
this.AddOpinion = this.AddOpinion.bind(this);
|
||||
}
|
||||
GetGame(request: GameRequest): Promise<Game> {
|
||||
@@ -1118,6 +1230,18 @@ export class MainServiceClientImpl implements MainService {
|
||||
return promise.then((data) => Game.decode(new BinaryReader(data)));
|
||||
}
|
||||
|
||||
GetGames(request: GetGamesRequest): Promise<GameList> {
|
||||
const data = GetGamesRequest.encode(request).finish();
|
||||
const promise = this.rpc.request(this.service, "GetGames", data);
|
||||
return promise.then((data) => GameList.decode(new BinaryReader(data)));
|
||||
}
|
||||
|
||||
AddGame(request: Game): Promise<Game> {
|
||||
const data = Game.encode(request).finish();
|
||||
const promise = this.rpc.request(this.service, "AddGame", data);
|
||||
return promise.then((data) => Game.decode(new BinaryReader(data)));
|
||||
}
|
||||
|
||||
AddOpinion(request: AddOpinionRequest): Promise<Person> {
|
||||
const data = AddOpinionRequest.encode(request).finish();
|
||||
const promise = this.rpc.request(this.service, "AddOpinion", data);
|
||||
|
||||
Reference in New Issue
Block a user