syntax = "proto3";

option csharp_namespace = "EllieBot.GrpcApi";

package greet;

service GrpcXpShop {
  rpc AddXpShopItem (AddXpShopItemRequest) returns (AddXpShopItemReply);
  rpc GetShopItems (GetShopItemsRequest) returns (GetShopItemsReply);
  rpc UseShopItem (UseShopItemRequest) returns (UseShopItemReply);
  rpc BuyShopItem (BuyShopItemRequest) returns (BuyShopItemReply);
}

message UseShopItemRequest {
  uint64 userId = 1;
  string uniqueName = 2;
  GrpcXpShopItemType itemType = 3;
}

message UseShopItemReply {
  bool success = 1;
}

message BuyShopItemRequest {
  uint64 userId = 1;
  string uniqueName = 2;
  GrpcXpShopItemType itemType = 3;
}

message BuyShopItemReply {
  bool success = 1;
  optional BuyShopItemError Error = 2;
}

enum BuyShopItemError {
  NotEnough = 0;
  AlreadyOwned = 1;
  Unknown = 2;
}

message AddXpShopItemRequest {
  XpShopItem item = 1;
  string uniqueName = 2;
  GrpcXpShopItemType itemType = 3;
}

message AddXpShopItemReply {
  bool success = 1;
}

message GetShopItemsRequest {

}

message GetShopItemsReply {
  repeated XpShopItem bgs = 1;
  repeated XpShopItem frames = 2;
}

message XpShopItem {
  string Name = 1;
  string Description = 2;
  int64 Price = 3;
  string FullUrl = 4;
  string PreviewUrl = 5;
}

enum GrpcXpShopItemType {
  Bg = 0;
  Frame = 1;
}