feat(scum): add versioned gift grants
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"browser.local/platform/domain"
|
||||
"time"
|
||||
)
|
||||
|
||||
type GameGiftItemRequest struct {
|
||||
CatalogItemKey string `json:"catalogItemKey"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
type GameGiftItemResponse struct {
|
||||
CatalogItemKey string `json:"catalogItemKey"`
|
||||
Label string `json:"label"`
|
||||
Quantity int `json:"quantity"`
|
||||
}
|
||||
type GameGiftCatalogRequest struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
Name string `json:"name"`
|
||||
GameVersion string `json:"gameVersion"`
|
||||
Items []GameGiftItemRequest `json:"items"`
|
||||
}
|
||||
type GameGiftCatalogResponse struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
GameVersion string `json:"gameVersion"`
|
||||
DraftItems []GameGiftItemResponse `json:"draftItems"`
|
||||
LatestRevisionID string `json:"latestRevisionId,omitempty"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
}
|
||||
type GameGiftCatalogListResponse struct {
|
||||
Items []GameGiftCatalogResponse `json:"items"`
|
||||
}
|
||||
type GameGiftRevisionResponse struct {
|
||||
ID string `json:"id"`
|
||||
CatalogID string `json:"catalogId"`
|
||||
Revision int `json:"revision"`
|
||||
GameVersion string `json:"gameVersion"`
|
||||
Items []GameGiftItemResponse `json:"items"`
|
||||
PublishedBy string `json:"publishedBy"`
|
||||
PublishedAt time.Time `json:"publishedAt"`
|
||||
}
|
||||
type GameGiftRevisionListResponse struct {
|
||||
Items []GameGiftRevisionResponse `json:"items"`
|
||||
}
|
||||
type GameGiftGrantRequest struct {
|
||||
RevisionID string `json:"revisionId"`
|
||||
GamePlayerRecordID string `json:"gamePlayerRecordId"`
|
||||
Notice string `json:"notice"`
|
||||
IdempotencyKey string `json:"idempotencyKey"`
|
||||
}
|
||||
type GameGiftGrantResponse struct {
|
||||
ID string `json:"id"`
|
||||
RevisionID string `json:"revisionId"`
|
||||
RevisionNumber int `json:"revisionNumber"`
|
||||
GameVersion string `json:"gameVersion"`
|
||||
Items []GameGiftItemResponse `json:"items"`
|
||||
GamePlayerRecordID string `json:"gamePlayerRecordId"`
|
||||
PlayerDisplayName string `json:"playerDisplayName"`
|
||||
Notice string `json:"notice"`
|
||||
RequesterID string `json:"requesterId"`
|
||||
ApproverID string `json:"approverId,omitempty"`
|
||||
Status string `json:"status"`
|
||||
DeliverySummary string `json:"deliverySummary,omitempty"`
|
||||
NotificationSummary string `json:"notificationSummary,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
ApprovedAt time.Time `json:"approvedAt,omitempty"`
|
||||
CompletedAt time.Time `json:"completedAt,omitempty"`
|
||||
}
|
||||
type GameGiftGrantListResponse struct {
|
||||
Items []GameGiftGrantResponse `json:"items"`
|
||||
}
|
||||
|
||||
func (r GameGiftCatalogRequest) ToDomain() domain.GameGiftCatalogRequest {
|
||||
items := make([]domain.GameGiftItem, len(r.Items))
|
||||
for i, item := range r.Items {
|
||||
def, _ := domain.SCUMGiftItemForVersion(r.GameVersion, item.CatalogItemKey)
|
||||
items[i] = domain.GameGiftItem{CatalogItemKey: item.CatalogItemKey, Label: def.Label, Quantity: item.Quantity}
|
||||
}
|
||||
return domain.GameGiftCatalogRequest{ID: r.ID, Name: r.Name, GameVersion: r.GameVersion, Items: items}
|
||||
}
|
||||
func (r GameGiftGrantRequest) ToDomain() domain.GameGiftGrantRequest {
|
||||
return domain.GameGiftGrantRequest{RevisionID: r.RevisionID, GamePlayerRecordID: r.GamePlayerRecordID, Notice: r.Notice, IdempotencyKey: r.IdempotencyKey}
|
||||
}
|
||||
func giftItems(items []domain.GameGiftItem) []GameGiftItemResponse {
|
||||
out := make([]GameGiftItemResponse, len(items))
|
||||
for i, item := range items {
|
||||
out[i] = GameGiftItemResponse{CatalogItemKey: item.CatalogItemKey, Label: item.Label, Quantity: item.Quantity}
|
||||
}
|
||||
return out
|
||||
}
|
||||
func GameGiftCatalogFromDomain(v domain.GameGiftCatalog) GameGiftCatalogResponse {
|
||||
return GameGiftCatalogResponse{ID: v.ID, Name: v.Name, GameVersion: v.GameVersion, DraftItems: giftItems(v.DraftItems), LatestRevisionID: v.LatestRevisionID, UpdatedAt: v.UpdatedAt}
|
||||
}
|
||||
func GameGiftCatalogsFromDomain(v []domain.GameGiftCatalog) GameGiftCatalogListResponse {
|
||||
out := make([]GameGiftCatalogResponse, len(v))
|
||||
for i, x := range v {
|
||||
out[i] = GameGiftCatalogFromDomain(x)
|
||||
}
|
||||
return GameGiftCatalogListResponse{Items: out}
|
||||
}
|
||||
func GameGiftRevisionFromDomain(v domain.GameGiftRevision) GameGiftRevisionResponse {
|
||||
return GameGiftRevisionResponse{ID: v.ID, CatalogID: v.CatalogID, Revision: v.Revision, GameVersion: v.GameVersion, Items: giftItems(v.Items), PublishedBy: v.PublishedBy, PublishedAt: v.PublishedAt}
|
||||
}
|
||||
func GameGiftRevisionsFromDomain(v []domain.GameGiftRevision) GameGiftRevisionListResponse {
|
||||
out := make([]GameGiftRevisionResponse, len(v))
|
||||
for i, x := range v {
|
||||
out[i] = GameGiftRevisionFromDomain(x)
|
||||
}
|
||||
return GameGiftRevisionListResponse{Items: out}
|
||||
}
|
||||
func GameGiftGrantFromDomain(v domain.GameGiftGrant) GameGiftGrantResponse {
|
||||
return GameGiftGrantResponse{ID: v.ID, RevisionID: v.RevisionID, RevisionNumber: v.RevisionNumber, GameVersion: v.GameVersion, Items: giftItems(v.Items), GamePlayerRecordID: v.GamePlayerRecordID, PlayerDisplayName: v.PlayerDisplayName, Notice: v.Notice, RequesterID: v.RequesterID, ApproverID: v.ApproverID, Status: string(v.Status), DeliverySummary: v.DeliverySummary, NotificationSummary: v.NotificationSummary, CreatedAt: v.CreatedAt, ApprovedAt: v.ApprovedAt, CompletedAt: v.CompletedAt}
|
||||
}
|
||||
func GameGiftGrantsFromDomain(v []domain.GameGiftGrant) GameGiftGrantListResponse {
|
||||
out := make([]GameGiftGrantResponse, len(v))
|
||||
for i, x := range v {
|
||||
out[i] = GameGiftGrantFromDomain(x)
|
||||
}
|
||||
return GameGiftGrantListResponse{Items: out}
|
||||
}
|
||||
Reference in New Issue
Block a user