@battle-racing/br-common-lib
Version:
Common library for all Battle Racing Repositorios
66 lines (65 loc) • 2.43 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreatePurchaseInternalSchema = exports.CreatePurchasePublicSchema = exports.PurchaseSchema = exports.GameTicketSchema = exports.TicketSummarySchema = exports.TicketTypeSchema = exports.TicketUserTypeSchema = exports.GameTicketStatusSchema = exports.TICKET_TYPE = exports.TICKET_USER_TYPE = exports.GAME_TICKET_STATUS = void 0;
const zod_1 = require("zod");
exports.GAME_TICKET_STATUS = {
CREATED: 'created',
ASSIGNED: 'assigned',
ACTIVE: 'active',
COMPLETED: 'completed',
};
exports.TICKET_USER_TYPE = {
LEADER: 'leader',
SUB_USER: 'sub-user',
EXISTING: 'existing',
GUEST: 'guest',
};
exports.TICKET_TYPE = {
RACE: 'race',
BATTLE: 'battle',
SOCCER: 'soccer',
};
exports.GameTicketStatusSchema = zod_1.z.enum(exports.GAME_TICKET_STATUS);
exports.TicketUserTypeSchema = zod_1.z.enum(exports.TICKET_USER_TYPE);
exports.TicketTypeSchema = zod_1.z.enum(exports.TICKET_TYPE);
exports.TicketSummarySchema = zod_1.z.record(exports.TicketTypeSchema, zod_1.z.number());
exports.GameTicketSchema = zod_1.z.object({
id: zod_1.z.string(),
purchaseId: zod_1.z.string(),
gameTurnId: zod_1.z.string(),
ownerUsername: zod_1.z.string(),
userType: exports.TicketUserTypeSchema,
status: exports.GameTicketStatusSchema,
type: exports.TicketTypeSchema.default(exports.TICKET_TYPE.RACE),
createdAt: zod_1.z.date(),
updatedAt: zod_1.z.date(),
completedAt: zod_1.z.date().optional(),
});
exports.PurchaseSchema = zod_1.z.object({
id: zod_1.z.string(),
purchaseNumber: zod_1.z.number(),
buyerUserId: zod_1.z.string(),
totalTickets: zod_1.z.number(),
purchaseDate: zod_1.z.date(),
ticketType: exports.TicketTypeSchema.default(exports.TICKET_TYPE.RACE),
paymentData: zod_1.z.any().optional(),
createdAt: zod_1.z.date(),
updatedAt: zod_1.z.date(),
});
/**
* Probably temporary as the purchase will be a webhook called by the provider (Stripe, PayPal, etc)
*/
exports.CreatePurchasePublicSchema = exports.PurchaseSchema.pick({
ticketType: true,
}).extend({
ticketCount: zod_1.z.number(),
});
/**
* The public input doesn't receive a userId, as it's resolved on the backend
*/
exports.CreatePurchaseInternalSchema = exports.PurchaseSchema.pick({
ticketType: true,
buyerUserId: true,
}).extend({
ticketCount: zod_1.z.number(),
});