@gigapay-dev/contracts 1.8.6 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/build/domains/admin/index.d.ts +150 -0
- package/build/domains/admin/index.d.ts.map +1 -0
- package/build/domains/admin/index.js +72 -0
- package/build/domains/admin/index.js.map +1 -0
- package/build/domains/auth/commands.d.ts +294 -0
- package/build/domains/auth/commands.d.ts.map +1 -0
- package/build/domains/auth/commands.js +116 -0
- package/build/domains/auth/commands.js.map +1 -0
- package/build/domains/auth/dtos.d.ts +37 -0
- package/build/domains/auth/dtos.d.ts.map +1 -0
- package/build/domains/auth/dtos.js +26 -0
- package/build/domains/auth/dtos.js.map +1 -0
- package/build/domains/auth/events.d.ts +35 -0
- package/build/domains/auth/events.d.ts.map +1 -0
- package/build/domains/auth/events.js +24 -0
- package/build/domains/auth/events.js.map +1 -0
- package/build/domains/auth/index.d.ts +165 -0
- package/build/domains/auth/index.d.ts.map +1 -0
- package/build/{commands/products → domains/auth}/index.js +12 -6
- package/build/domains/auth/index.js.map +1 -0
- package/build/domains/auth/queries.d.ts +75 -0
- package/build/domains/auth/queries.d.ts.map +1 -0
- package/build/domains/auth/queries.js +25 -0
- package/build/domains/auth/queries.js.map +1 -0
- package/build/domains/catalog/commands.d.ts +255 -0
- package/build/domains/catalog/commands.d.ts.map +1 -0
- package/build/domains/catalog/commands.js +82 -0
- package/build/domains/catalog/commands.js.map +1 -0
- package/build/domains/catalog/dtos.d.ts +89 -0
- package/build/domains/catalog/dtos.d.ts.map +1 -0
- package/build/domains/catalog/dtos.js +43 -0
- package/build/domains/catalog/dtos.js.map +1 -0
- package/build/domains/catalog/index.d.ts +194 -0
- package/build/domains/catalog/index.d.ts.map +1 -0
- package/build/{commands/payment-methods → domains/catalog}/index.js +11 -4
- package/build/domains/catalog/index.js.map +1 -0
- package/build/domains/catalog/queries.d.ts +168 -0
- package/build/domains/catalog/queries.d.ts.map +1 -0
- package/build/domains/catalog/queries.js +29 -0
- package/build/domains/catalog/queries.js.map +1 -0
- package/build/domains/config/index.d.ts +40 -0
- package/build/domains/config/index.d.ts.map +1 -0
- package/build/domains/config/index.js +18 -0
- package/build/domains/config/index.js.map +1 -0
- package/build/domains/orders/commands.d.ts +262 -0
- package/build/domains/orders/commands.d.ts.map +1 -0
- package/build/domains/orders/commands.js +47 -0
- package/build/domains/orders/commands.js.map +1 -0
- package/build/domains/orders/dtos.d.ts +112 -0
- package/build/domains/orders/dtos.d.ts.map +1 -0
- package/build/domains/orders/dtos.js +44 -0
- package/build/domains/orders/dtos.js.map +1 -0
- package/build/domains/orders/events.d.ts +21 -0
- package/build/domains/orders/events.d.ts.map +1 -0
- package/build/domains/orders/events.js +19 -0
- package/build/domains/orders/events.js.map +1 -0
- package/build/domains/orders/index.d.ts +381 -0
- package/build/domains/orders/index.d.ts.map +1 -0
- package/build/domains/orders/index.js +28 -0
- package/build/domains/orders/index.js.map +1 -0
- package/build/domains/orders/queries.d.ts +532 -0
- package/build/domains/orders/queries.d.ts.map +1 -0
- package/build/domains/orders/queries.js +40 -0
- package/build/domains/orders/queries.js.map +1 -0
- package/build/domains/payments/index.d.ts +96 -0
- package/build/domains/payments/index.d.ts.map +1 -0
- package/build/domains/payments/index.js +34 -0
- package/build/domains/payments/index.js.map +1 -0
- package/build/domains/products/commands.d.ts +302 -0
- package/build/domains/products/commands.d.ts.map +1 -0
- package/build/domains/products/commands.js +101 -0
- package/build/domains/products/commands.js.map +1 -0
- package/build/domains/products/dtos.d.ts +122 -0
- package/build/domains/products/dtos.d.ts.map +1 -0
- package/build/domains/products/dtos.js +54 -0
- package/build/domains/products/dtos.js.map +1 -0
- package/build/domains/products/index.d.ts +276 -0
- package/build/domains/products/index.d.ts.map +1 -0
- package/build/{commands/auth → domains/products}/index.js +11 -5
- package/build/domains/products/index.js.map +1 -0
- package/build/domains/products/queries.d.ts +334 -0
- package/build/domains/products/queries.d.ts.map +1 -0
- package/build/domains/products/queries.js +41 -0
- package/build/domains/products/queries.js.map +1 -0
- package/build/domains/promo-codes/index.d.ts +92 -0
- package/build/domains/promo-codes/index.d.ts.map +1 -0
- package/build/domains/promo-codes/index.js +40 -0
- package/build/domains/promo-codes/index.js.map +1 -0
- package/build/domains/stats/index.d.ts +274 -0
- package/build/domains/stats/index.d.ts.map +1 -0
- package/build/domains/stats/index.js +76 -0
- package/build/domains/stats/index.js.map +1 -0
- package/build/domains/users/dtos.d.ts +9 -0
- package/build/domains/users/dtos.d.ts.map +1 -0
- package/build/domains/users/dtos.js +11 -0
- package/build/domains/users/dtos.js.map +1 -0
- package/build/domains/users/index.d.ts +101 -0
- package/build/domains/users/index.d.ts.map +1 -0
- package/build/domains/users/index.js +52 -0
- package/build/domains/users/index.js.map +1 -0
- package/build/index.d.ts +1310 -1
- package/build/index.d.ts.map +1 -0
- package/build/index.js +35 -1
- package/build/index.js.map +1 -0
- package/build/shared/api-response.d.ts +17 -0
- package/build/shared/api-response.d.ts.map +1 -0
- package/build/shared/api-response.js +22 -0
- package/build/shared/api-response.js.map +1 -0
- package/build/shared/common.d.ts +14 -0
- package/build/shared/common.d.ts.map +1 -0
- package/build/shared/common.js +8 -0
- package/build/shared/common.js.map +1 -0
- package/build/shared/errors.d.ts +34 -0
- package/build/shared/errors.d.ts.map +1 -0
- package/build/shared/errors.js +36 -0
- package/build/shared/errors.js.map +1 -0
- package/build/shared/index.d.ts +7 -0
- package/build/shared/index.d.ts.map +1 -0
- package/build/{commands/orders → shared}/index.js +7 -6
- package/build/shared/index.js.map +1 -0
- package/build/shared/money.d.ts +32 -0
- package/build/shared/money.d.ts.map +1 -0
- package/build/shared/money.js +20 -0
- package/build/shared/money.js.map +1 -0
- package/build/shared/pagination.d.ts +27 -0
- package/build/shared/pagination.d.ts.map +1 -0
- package/build/shared/pagination.js +22 -0
- package/build/shared/pagination.js.map +1 -0
- package/build/shared/types.d.ts +20 -0
- package/build/shared/types.d.ts.map +1 -0
- package/build/{types.js → shared/types.js} +1 -0
- package/build/shared/types.js.map +1 -0
- package/package.json +41 -15
- package/build/commands/api-response.d.ts +0 -18
- package/build/commands/api-response.js +0 -13
- package/build/commands/auth/confirm.d.ts +0 -11
- package/build/commands/auth/confirm.js +0 -11
- package/build/commands/auth/endpoints.d.ts +0 -114
- package/build/commands/auth/endpoints.js +0 -50
- package/build/commands/auth/index.d.ts +0 -5
- package/build/commands/auth/login.d.ts +0 -20
- package/build/commands/auth/login.js +0 -11
- package/build/commands/auth/profile.d.ts +0 -18
- package/build/commands/auth/profile.js +0 -10
- package/build/commands/auth/register.d.ts +0 -12
- package/build/commands/auth/register.js +0 -11
- package/build/commands/auth/reset.d.ts +0 -12
- package/build/commands/auth/reset.js +0 -9
- package/build/commands/consts.d.ts +0 -1
- package/build/commands/consts.js +0 -4
- package/build/commands/index.d.ts +0 -13
- package/build/commands/index.js +0 -29
- package/build/commands/orders/create.d.ts +0 -95
- package/build/commands/orders/create.js +0 -40
- package/build/commands/orders/endpoints.d.ts +0 -726
- package/build/commands/orders/endpoints.js +0 -47
- package/build/commands/orders/enums.d.ts +0 -7
- package/build/commands/orders/enums.js +0 -25
- package/build/commands/orders/index.d.ts +0 -6
- package/build/commands/orders/query.d.ts +0 -103
- package/build/commands/orders/query.js +0 -45
- package/build/commands/orders/read.d.ts +0 -230
- package/build/commands/orders/read.js +0 -81
- package/build/commands/orders/update.d.ts +0 -23
- package/build/commands/orders/update.js +0 -16
- package/build/commands/pagination.d.ts +0 -12
- package/build/commands/pagination.js +0 -11
- package/build/commands/payment-methods/create.d.ts +0 -45
- package/build/commands/payment-methods/create.js +0 -22
- package/build/commands/payment-methods/endpoints.d.ts +0 -536
- package/build/commands/payment-methods/endpoints.js +0 -63
- package/build/commands/payment-methods/index.d.ts +0 -4
- package/build/commands/payment-methods/read.d.ts +0 -71
- package/build/commands/payment-methods/read.js +0 -28
- package/build/commands/payment-methods/update.d.ts +0 -45
- package/build/commands/payment-methods/update.js +0 -19
- package/build/commands/products/create.d.ts +0 -229
- package/build/commands/products/create.js +0 -122
- package/build/commands/products/endpoints.d.ts +0 -1881
- package/build/commands/products/endpoints.js +0 -99
- package/build/commands/products/enums.d.ts +0 -19
- package/build/commands/products/enums.js +0 -27
- package/build/commands/products/index.d.ts +0 -6
- package/build/commands/products/query.d.ts +0 -79
- package/build/commands/products/query.js +0 -55
- package/build/commands/products/read.d.ts +0 -1178
- package/build/commands/products/read.js +0 -231
- package/build/commands/products/update.d.ts +0 -78
- package/build/commands/products/update.js +0 -10
- package/build/commands/promocode-activations/create.d.ts +0 -18
- package/build/commands/promocode-activations/create.js +0 -10
- package/build/commands/promocode-activations/index.d.ts +0 -3
- package/build/commands/promocode-activations/index.js +0 -19
- package/build/commands/promocode-activations/read.d.ts +0 -21
- package/build/commands/promocode-activations/read.js +0 -14
- package/build/commands/promocode-activations/update.d.ts +0 -18
- package/build/commands/promocode-activations/update.js +0 -10
- package/build/commands/promocodes/create.d.ts +0 -39
- package/build/commands/promocodes/create.js +0 -18
- package/build/commands/promocodes/endpoints.d.ts +0 -353
- package/build/commands/promocodes/endpoints.js +0 -46
- package/build/commands/promocodes/enums.d.ts +0 -5
- package/build/commands/promocodes/enums.js +0 -9
- package/build/commands/promocodes/index.d.ts +0 -5
- package/build/commands/promocodes/index.js +0 -21
- package/build/commands/promocodes/read.d.ts +0 -45
- package/build/commands/promocodes/read.js +0 -23
- package/build/commands/promocodes/update.d.ts +0 -33
- package/build/commands/promocodes/update.js +0 -16
- package/build/commands/refresh-sessions/create.d.ts +0 -24
- package/build/commands/refresh-sessions/create.js +0 -13
- package/build/commands/refresh-sessions/enums.d.ts +0 -3
- package/build/commands/refresh-sessions/enums.js +0 -8
- package/build/commands/refresh-sessions/index.d.ts +0 -4
- package/build/commands/refresh-sessions/index.js +0 -20
- package/build/commands/refresh-sessions/read.d.ts +0 -27
- package/build/commands/refresh-sessions/read.js +0 -17
- package/build/commands/refresh-sessions/update.d.ts +0 -24
- package/build/commands/refresh-sessions/update.js +0 -16
- package/build/commands/settings/endpoints.d.ts +0 -108
- package/build/commands/settings/endpoints.js +0 -43
- package/build/commands/settings/index.d.ts +0 -3
- package/build/commands/settings/index.js +0 -19
- package/build/commands/settings/read.d.ts +0 -18
- package/build/commands/settings/read.js +0 -10
- package/build/commands/settings/update.d.ts +0 -18
- package/build/commands/settings/update.js +0 -10
- package/build/commands/stats/endpoints.d.ts +0 -67
- package/build/commands/stats/endpoints.js +0 -13
- package/build/commands/stats/index.d.ts +0 -3
- package/build/commands/stats/index.js +0 -19
- package/build/commands/stats/query.d.ts +0 -31
- package/build/commands/stats/query.js +0 -15
- package/build/commands/stats/read.d.ts +0 -30
- package/build/commands/stats/read.js +0 -17
- package/build/commands/users/create.d.ts +0 -42
- package/build/commands/users/create.js +0 -19
- package/build/commands/users/endpoints.d.ts +0 -403
- package/build/commands/users/endpoints.js +0 -39
- package/build/commands/users/enums.d.ts +0 -6
- package/build/commands/users/enums.js +0 -10
- package/build/commands/users/index.d.ts +0 -6
- package/build/commands/users/index.js +0 -22
- package/build/commands/users/query.d.ts +0 -52
- package/build/commands/users/query.js +0 -21
- package/build/commands/users/read.d.ts +0 -60
- package/build/commands/users/read.js +0 -28
- package/build/commands/users/update.d.ts +0 -42
- package/build/commands/users/update.js +0 -19
- package/build/types.d.ts +0 -8
- package/commands/api-response.ts +0 -10
- package/commands/auth/confirm.ts +0 -10
- package/commands/auth/endpoints.ts +0 -51
- package/commands/auth/index.ts +0 -5
- package/commands/auth/login.ts +0 -13
- package/commands/auth/profile.ts +0 -10
- package/commands/auth/register.ts +0 -8
- package/commands/auth/reset.ts +0 -9
- package/commands/consts.ts +0 -1
- package/commands/index.ts +0 -13
- package/commands/orders/create.ts +0 -41
- package/commands/orders/endpoints.ts +0 -51
- package/commands/orders/enums.ts +0 -25
- package/commands/orders/index.ts +0 -6
- package/commands/orders/query.ts +0 -46
- package/commands/orders/read.ts +0 -83
- package/commands/orders/update.ts +0 -16
- package/commands/pagination.ts +0 -8
- package/commands/payment-methods/create.ts +0 -19
- package/commands/payment-methods/endpoints.ts +0 -67
- package/commands/payment-methods/index.ts +0 -4
- package/commands/payment-methods/read.ts +0 -30
- package/commands/payment-methods/update.ts +0 -19
- package/commands/products/create.ts +0 -134
- package/commands/products/endpoints.ts +0 -108
- package/commands/products/enums.ts +0 -33
- package/commands/products/index.ts +0 -6
- package/commands/products/query.ts +0 -52
- package/commands/products/read.ts +0 -268
- package/commands/products/update.ts +0 -11
- package/commands/promocode-activations/create.ts +0 -10
- package/commands/promocode-activations/index.ts +0 -3
- package/commands/promocode-activations/read.ts +0 -11
- package/commands/promocode-activations/update.ts +0 -10
- package/commands/promocodes/create.ts +0 -18
- package/commands/promocodes/endpoints.ts +0 -62
- package/commands/promocodes/enums.ts +0 -9
- package/commands/promocodes/index.ts +0 -5
- package/commands/promocodes/read.ts +0 -20
- package/commands/promocodes/update.ts +0 -16
- package/commands/refresh-sessions/create.ts +0 -13
- package/commands/refresh-sessions/enums.ts +0 -4
- package/commands/refresh-sessions/index.ts +0 -4
- package/commands/refresh-sessions/read.ts +0 -14
- package/commands/refresh-sessions/update.ts +0 -13
- package/commands/settings/endpoints.ts +0 -52
- package/commands/settings/index.ts +0 -3
- package/commands/settings/read.ts +0 -10
- package/commands/settings/update.ts +0 -10
- package/commands/stats/endpoints.ts +0 -23
- package/commands/stats/index.ts +0 -3
- package/commands/stats/query.ts +0 -18
- package/commands/stats/read.ts +0 -14
- package/commands/users/create.ts +0 -19
- package/commands/users/endpoints.ts +0 -47
- package/commands/users/enums.ts +0 -10
- package/commands/users/index.ts +0 -6
- package/commands/users/query.ts +0 -20
- package/commands/users/read.ts +0 -25
- package/commands/users/update.ts +0 -19
- package/index.ts +0 -1
- package/tsconfig.json +0 -111
- package/types.ts +0 -9
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
import { ProductType, DeliveryType, MediaType, SystemRequirementType } from "./enums";
|
|
3
|
-
|
|
4
|
-
/** Запрос на создание продукта */
|
|
5
|
-
export const ProductCreateRequestSchema = z.object({
|
|
6
|
-
/** URL-friendly идентификатор */
|
|
7
|
-
slug: z.string().min(1),
|
|
8
|
-
/** Название продукта */
|
|
9
|
-
title: z.string().min(1),
|
|
10
|
-
/** Оригинальное название (на языке оригинала) */
|
|
11
|
-
originalTitle: z.string().optional(),
|
|
12
|
-
/** Тип продукта */
|
|
13
|
-
type: ProductType,
|
|
14
|
-
/** ID категории */
|
|
15
|
-
categoryId: z.number().int().positive(),
|
|
16
|
-
/** ID родительского продукта (для DLC) */
|
|
17
|
-
parentProductId: z.number().int().positive().optional(),
|
|
18
|
-
/** Полное описание */
|
|
19
|
-
description: z.string().optional(),
|
|
20
|
-
/** Кастомное описание */
|
|
21
|
-
customDescription: z.string().optional(),
|
|
22
|
-
/** Краткое описание */
|
|
23
|
-
shortDescription: z.string().optional(),
|
|
24
|
-
/** URL обложки */
|
|
25
|
-
coverImageUrl: z.string().url().optional(),
|
|
26
|
-
/** Разработчик */
|
|
27
|
-
developer: z.string().optional(),
|
|
28
|
-
/** Издатель */
|
|
29
|
-
publisher: z.string().optional(),
|
|
30
|
-
/** Дата выхода (ISO datetime) */
|
|
31
|
-
releaseDate: z.string().datetime().optional(),
|
|
32
|
-
/** Steam App ID */
|
|
33
|
-
steamAppId: z.number().int().optional(),
|
|
34
|
-
/** Мультиплеер */
|
|
35
|
-
hasMultiplayer: z.boolean().default(false),
|
|
36
|
-
/** Кооператив */
|
|
37
|
-
hasCoop: z.boolean().default(false),
|
|
38
|
-
/** Одиночная игра */
|
|
39
|
-
hasSinglePlayer: z.boolean().default(true),
|
|
40
|
-
/** SEO: заголовок */
|
|
41
|
-
metaTitle: z.string().optional(),
|
|
42
|
-
/** SEO: описание */
|
|
43
|
-
metaDescription: z.string().optional(),
|
|
44
|
-
/** ID жанров для привязки */
|
|
45
|
-
genreIds: z.array(z.number().int().positive()).optional(),
|
|
46
|
-
/** ID тегов для привязки */
|
|
47
|
-
tagIds: z.array(z.number().int().positive()).optional(),
|
|
48
|
-
/** ID регионов для привязки */
|
|
49
|
-
regionIds: z.array(z.number().int().positive()).optional(),
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
export type ProductCreateRequest = z.infer<typeof ProductCreateRequestSchema>;
|
|
53
|
-
|
|
54
|
-
/** Запрос на создание варианта продукта */
|
|
55
|
-
export const VariantCreateRequestSchema = z.object({
|
|
56
|
-
/** Название варианта */
|
|
57
|
-
name: z.string().min(1),
|
|
58
|
-
/** Артикул */
|
|
59
|
-
sku: z.string().min(1),
|
|
60
|
-
/** Цена */
|
|
61
|
-
price: z.number().positive(),
|
|
62
|
-
/** Цена до скидки */
|
|
63
|
-
originalPrice: z.number().positive().optional(),
|
|
64
|
-
/** Себестоимость */
|
|
65
|
-
costPrice: z.number().positive().optional(),
|
|
66
|
-
/** Сумма пополнения (для TOPUP) */
|
|
67
|
-
topupAmount: z.number().positive().optional(),
|
|
68
|
-
/** Валюта */
|
|
69
|
-
currency: z.string().optional(),
|
|
70
|
-
/** Длительность подписки (дни) */
|
|
71
|
-
durationDays: z.number().int().positive().optional(),
|
|
72
|
-
/** Платформа (Steam, Epic Games, ...) */
|
|
73
|
-
platform: z.string().optional(),
|
|
74
|
-
/** Код региона */
|
|
75
|
-
regionCode: z.string().optional(),
|
|
76
|
-
/** Тип доставки */
|
|
77
|
-
deliveryType: DeliveryType.default("AUTOMATIC"),
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
export type VariantCreateRequest = z.infer<typeof VariantCreateRequestSchema>;
|
|
81
|
-
|
|
82
|
-
/** Запрос на импорт ключей */
|
|
83
|
-
export const KeysImportRequestSchema = z.object({
|
|
84
|
-
/** Массив ключей для импорта */
|
|
85
|
-
keys: z.array(z.string().min(1)).min(1),
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
export type KeysImportRequest = z.infer<typeof KeysImportRequestSchema>;
|
|
89
|
-
|
|
90
|
-
/** Ответ на импорт ключей */
|
|
91
|
-
export const KeysImportResponseSchema = z.object({
|
|
92
|
-
/** Количество импортированных ключей */
|
|
93
|
-
imported: z.number(),
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
export type KeysImportResponse = z.infer<typeof KeysImportResponseSchema>;
|
|
97
|
-
|
|
98
|
-
/** Запрос на добавление медиа */
|
|
99
|
-
export const MediaCreateRequestSchema = z.object({
|
|
100
|
-
/** Тип медиа */
|
|
101
|
-
type: MediaType,
|
|
102
|
-
/** URL медиа */
|
|
103
|
-
url: z.string().url(),
|
|
104
|
-
/** Alt-текст */
|
|
105
|
-
alt: z.string().optional(),
|
|
106
|
-
/** Порядок сортировки */
|
|
107
|
-
sortOrder: z.number().int().default(0),
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
export type MediaCreateRequest = z.infer<typeof MediaCreateRequestSchema>;
|
|
111
|
-
|
|
112
|
-
/** Запрос на upsert системных требований */
|
|
113
|
-
export const SystemRequirementsRequestSchema = z.object({
|
|
114
|
-
/** Тип: минимальные / рекомендуемые */
|
|
115
|
-
type: SystemRequirementType,
|
|
116
|
-
/** Операционная система */
|
|
117
|
-
os: z.string().optional(),
|
|
118
|
-
/** Процессор */
|
|
119
|
-
processor: z.string().optional(),
|
|
120
|
-
/** Оперативная память */
|
|
121
|
-
memory: z.string().optional(),
|
|
122
|
-
/** Видеокарта */
|
|
123
|
-
graphics: z.string().optional(),
|
|
124
|
-
/** Место на диске */
|
|
125
|
-
storage: z.string().optional(),
|
|
126
|
-
/** DirectX */
|
|
127
|
-
directx: z.string().optional(),
|
|
128
|
-
/** Сеть */
|
|
129
|
-
network: z.string().optional(),
|
|
130
|
-
/** Дополнительно */
|
|
131
|
-
additional: z.string().optional(),
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
export type SystemRequirementsRequest = z.infer<typeof SystemRequirementsRequestSchema>;
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
import { EndpointContract } from "../../types";
|
|
3
|
-
import { ProductFilterSchema } from "./query";
|
|
4
|
-
import { ProductCreateRequestSchema, VariantCreateRequestSchema, KeysImportRequestSchema, KeysImportResponseSchema, MediaCreateRequestSchema, SystemRequirementsRequestSchema } from "./create";
|
|
5
|
-
import { ProductUpdateRequestSchema } from "./update";
|
|
6
|
-
import { ProductCatalogResponseSchema, ProductDetailResponseSchema, CategoryResponseSchema, GenreResponseSchema, RegionResponseSchema, KeysCountResponseSchema } from "./read";
|
|
7
|
-
|
|
8
|
-
export const ProductEndpoints = {
|
|
9
|
-
// === Публичные ===
|
|
10
|
-
catalog: {
|
|
11
|
-
method: "GET",
|
|
12
|
-
path: "/products",
|
|
13
|
-
request: ProductFilterSchema,
|
|
14
|
-
response: z.object({
|
|
15
|
-
items: z.array(ProductCatalogResponseSchema),
|
|
16
|
-
total: z.number(),
|
|
17
|
-
skip: z.number(),
|
|
18
|
-
take: z.number(),
|
|
19
|
-
}),
|
|
20
|
-
},
|
|
21
|
-
categories: {
|
|
22
|
-
method: "GET",
|
|
23
|
-
path: "/products/categories",
|
|
24
|
-
response: z.array(CategoryResponseSchema),
|
|
25
|
-
},
|
|
26
|
-
genres: {
|
|
27
|
-
method: "GET",
|
|
28
|
-
path: "/products/genres",
|
|
29
|
-
response: z.array(GenreResponseSchema),
|
|
30
|
-
},
|
|
31
|
-
regions: {
|
|
32
|
-
method: "GET",
|
|
33
|
-
path: "/products/regions",
|
|
34
|
-
response: z.array(RegionResponseSchema),
|
|
35
|
-
},
|
|
36
|
-
getBySlug: {
|
|
37
|
-
method: "GET",
|
|
38
|
-
path: "/products/:slug",
|
|
39
|
-
request: z.object({ slug: z.string() }),
|
|
40
|
-
response: ProductDetailResponseSchema,
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
// === Администрирование ===
|
|
44
|
-
create: {
|
|
45
|
-
method: "POST",
|
|
46
|
-
path: "/products/admin",
|
|
47
|
-
request: ProductCreateRequestSchema,
|
|
48
|
-
response: ProductDetailResponseSchema,
|
|
49
|
-
},
|
|
50
|
-
update: {
|
|
51
|
-
method: "PUT",
|
|
52
|
-
path: "/products/admin/:id",
|
|
53
|
-
request: ProductUpdateRequestSchema,
|
|
54
|
-
response: ProductDetailResponseSchema,
|
|
55
|
-
},
|
|
56
|
-
archive: {
|
|
57
|
-
method: "DELETE",
|
|
58
|
-
path: "/products/admin/:id",
|
|
59
|
-
response: z.object({ status: z.string() }),
|
|
60
|
-
},
|
|
61
|
-
createVariant: {
|
|
62
|
-
method: "POST",
|
|
63
|
-
path: "/products/admin/:productId/variants",
|
|
64
|
-
request: VariantCreateRequestSchema,
|
|
65
|
-
},
|
|
66
|
-
updateVariant: {
|
|
67
|
-
method: "PUT",
|
|
68
|
-
path: "/products/admin/variants/:variantId",
|
|
69
|
-
request: VariantCreateRequestSchema,
|
|
70
|
-
},
|
|
71
|
-
importKeys: {
|
|
72
|
-
method: "POST",
|
|
73
|
-
path: "/products/admin/variants/:variantId/keys",
|
|
74
|
-
request: KeysImportRequestSchema,
|
|
75
|
-
response: KeysImportResponseSchema,
|
|
76
|
-
},
|
|
77
|
-
getKeysCount: {
|
|
78
|
-
method: "GET",
|
|
79
|
-
path: "/products/admin/variants/:variantId/keys/count",
|
|
80
|
-
response: KeysCountResponseSchema,
|
|
81
|
-
},
|
|
82
|
-
addMedia: {
|
|
83
|
-
method: "POST",
|
|
84
|
-
path: "/products/admin/:productId/media",
|
|
85
|
-
request: MediaCreateRequestSchema,
|
|
86
|
-
},
|
|
87
|
-
removeMedia: {
|
|
88
|
-
method: "DELETE",
|
|
89
|
-
path: "/products/admin/media/:mediaId",
|
|
90
|
-
},
|
|
91
|
-
upsertSystemRequirements: {
|
|
92
|
-
method: "POST",
|
|
93
|
-
path: "/products/admin/:productId/system-requirements",
|
|
94
|
-
request: SystemRequirementsRequestSchema,
|
|
95
|
-
},
|
|
96
|
-
} satisfies Record<string, EndpointContract>;
|
|
97
|
-
|
|
98
|
-
export type ProductEndpointKey = keyof typeof ProductEndpoints;
|
|
99
|
-
|
|
100
|
-
export type GetProductRequest<K extends ProductEndpointKey> =
|
|
101
|
-
typeof ProductEndpoints[K] extends { request: z.ZodTypeAny }
|
|
102
|
-
? z.infer<typeof ProductEndpoints[K]["request"]>
|
|
103
|
-
: never;
|
|
104
|
-
|
|
105
|
-
export type GetProductResponse<K extends ProductEndpointKey> =
|
|
106
|
-
typeof ProductEndpoints[K] extends { response: z.ZodTypeAny }
|
|
107
|
-
? z.infer<typeof ProductEndpoints[K]["response"]>
|
|
108
|
-
: never;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
|
|
3
|
-
/** Тип продукта */
|
|
4
|
-
export const ProductType = z.enum([
|
|
5
|
-
"GAME_KEY",
|
|
6
|
-
"GAME_GIFT",
|
|
7
|
-
"TOPUP",
|
|
8
|
-
"SUBSCRIPTION",
|
|
9
|
-
"IN_GAME_ITEM",
|
|
10
|
-
"DLC",
|
|
11
|
-
"CURRENCY",
|
|
12
|
-
]);
|
|
13
|
-
export type ProductType = z.infer<typeof ProductType>;
|
|
14
|
-
|
|
15
|
-
/** Статус продукта */
|
|
16
|
-
export const ProductStatus = z.enum(["DRAFT", "ACTIVE", "OUT_OF_STOCK", "ARCHIVED"]);
|
|
17
|
-
export type ProductStatus = z.infer<typeof ProductStatus>;
|
|
18
|
-
|
|
19
|
-
/** Тип доставки варианта */
|
|
20
|
-
export const DeliveryType = z.enum(["AUTOMATIC", "MANUAL", "BOT"]);
|
|
21
|
-
export type DeliveryType = z.infer<typeof DeliveryType>;
|
|
22
|
-
|
|
23
|
-
/** Тип медиа-контента */
|
|
24
|
-
export const MediaType = z.enum(["SCREENSHOT", "SLIDER", "VIDEO", "TRAILER"]);
|
|
25
|
-
export type MediaType = z.infer<typeof MediaType>;
|
|
26
|
-
|
|
27
|
-
/** Статус ключа */
|
|
28
|
-
export const KeyStatus = z.enum(["AVAILABLE", "RESERVED", "SOLD"]);
|
|
29
|
-
export type KeyStatus = z.infer<typeof KeyStatus>;
|
|
30
|
-
|
|
31
|
-
/** Тип системных требований */
|
|
32
|
-
export const SystemRequirementType = z.enum(["minimum", "recommended"]);
|
|
33
|
-
export type SystemRequirementType = z.infer<typeof SystemRequirementType>;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
|
|
3
|
-
/** Фильтры каталога продуктов */
|
|
4
|
-
export const ProductFilterSchema = z.object({
|
|
5
|
-
/** Slug категории */
|
|
6
|
-
category: z.string().optional(),
|
|
7
|
-
/** Тип продукта (GAME_KEY, TOPUP, ...) */
|
|
8
|
-
type: z.string().optional(),
|
|
9
|
-
/** Slugs жанров через запятую */
|
|
10
|
-
genre: z.string().optional(),
|
|
11
|
-
/** Slugs тегов через запятую */
|
|
12
|
-
tag: z.string().optional(),
|
|
13
|
-
/** Код региона (RU, TR, KZ, GLOBAL) */
|
|
14
|
-
region: z.string().optional(),
|
|
15
|
-
/** Платформа (Steam, Epic Games, ...) */
|
|
16
|
-
platform: z.string().optional(),
|
|
17
|
-
/** Минимальная цена */
|
|
18
|
-
minPrice: z.coerce.number().optional(),
|
|
19
|
-
/** Максимальная цена */
|
|
20
|
-
maxPrice: z.coerce.number().optional(),
|
|
21
|
-
/** Фильтр: мультиплеер */
|
|
22
|
-
hasMultiplayer: z
|
|
23
|
-
.enum(["true", "false"])
|
|
24
|
-
.transform(v => v === "true")
|
|
25
|
-
.optional(),
|
|
26
|
-
/** Фильтр: кооператив */
|
|
27
|
-
hasCoop: z
|
|
28
|
-
.enum(["true", "false"])
|
|
29
|
-
.transform(v => v === "true")
|
|
30
|
-
.optional(),
|
|
31
|
-
/** Фильтр: издатель (частичное совпадение) */
|
|
32
|
-
publisher: z.string().optional(),
|
|
33
|
-
/** Минимальный рейтинг */
|
|
34
|
-
minRating: z.coerce.number().optional(),
|
|
35
|
-
/** Фильтр: наличие скидки */
|
|
36
|
-
hasDiscount: z
|
|
37
|
-
.enum(["true", "false"])
|
|
38
|
-
.transform(v => v === "true")
|
|
39
|
-
.optional(),
|
|
40
|
-
/** Поиск по названию */
|
|
41
|
-
search: z.string().optional(),
|
|
42
|
-
/** Поле сортировки */
|
|
43
|
-
sortBy: z.enum(["price", "popularity", "rating", "releaseDate", "title"]).default("popularity"),
|
|
44
|
-
/** Направление сортировки */
|
|
45
|
-
sortDir: z.enum(["asc", "desc"]).default("desc"),
|
|
46
|
-
/** Смещение для пагинации */
|
|
47
|
-
skip: z.coerce.number().default(0),
|
|
48
|
-
/** Количество записей */
|
|
49
|
-
take: z.coerce.number().default(20),
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
export type ProductFilter = z.infer<typeof ProductFilterSchema>;
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
import { ProductType, ProductStatus, DeliveryType, MediaType, SystemRequirementType } from "./enums";
|
|
3
|
-
|
|
4
|
-
// === Вложенные схемы ===
|
|
5
|
-
|
|
6
|
-
/** Категория (краткая) */
|
|
7
|
-
export const CategoryBriefSchema = z.object({
|
|
8
|
-
slug: z.string(),
|
|
9
|
-
name: z.string(),
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
/** Категория (полная, для списка категорий) */
|
|
13
|
-
export const CategoryResponseSchema = z.object({
|
|
14
|
-
id: z.number(),
|
|
15
|
-
slug: z.string(),
|
|
16
|
-
name: z.string(),
|
|
17
|
-
description: z.string().nullable(),
|
|
18
|
-
iconUrl: z.string().nullable(),
|
|
19
|
-
_count: z.object({
|
|
20
|
-
products: z.number(),
|
|
21
|
-
}),
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
/** Жанр (краткий, без ID) */
|
|
25
|
-
export const GenreBriefSchema = z.object({
|
|
26
|
-
slug: z.string(),
|
|
27
|
-
name: z.string(),
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
/** Жанр (полный, для списка жанров) */
|
|
31
|
-
export const GenreResponseSchema = z.object({
|
|
32
|
-
id: z.number(),
|
|
33
|
-
slug: z.string(),
|
|
34
|
-
name: z.string(),
|
|
35
|
-
_count: z.object({
|
|
36
|
-
products: z.number(),
|
|
37
|
-
}),
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
/** Тег */
|
|
41
|
-
export const TagBriefSchema = z.object({
|
|
42
|
-
id: z.number(),
|
|
43
|
-
slug: z.string(),
|
|
44
|
-
name: z.string(),
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
/** Регион (краткий, без ID) */
|
|
48
|
-
export const RegionBriefSchema = z.object({
|
|
49
|
-
code: z.string(),
|
|
50
|
-
name: z.string(),
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
/** Регион (полный, для списка регионов) */
|
|
54
|
-
export const RegionResponseSchema = z.object({
|
|
55
|
-
id: z.number(),
|
|
56
|
-
code: z.string(),
|
|
57
|
-
name: z.string(),
|
|
58
|
-
_count: z.object({
|
|
59
|
-
products: z.number(),
|
|
60
|
-
}),
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
/** Вариант в каталоге (краткий) */
|
|
64
|
-
export const VariantCatalogSchema = z.object({
|
|
65
|
-
id: z.number(),
|
|
66
|
-
name: z.string(),
|
|
67
|
-
price: z.string(),
|
|
68
|
-
originalPrice: z.string().nullable(),
|
|
69
|
-
platform: z.string().nullable(),
|
|
70
|
-
regionCode: z.string().nullable(),
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
/** Вариант в детальной карточке */
|
|
74
|
-
export const VariantDetailSchema = z.object({
|
|
75
|
-
id: z.number(),
|
|
76
|
-
name: z.string(),
|
|
77
|
-
sku: z.string(),
|
|
78
|
-
price: z.string(),
|
|
79
|
-
originalPrice: z.string().nullable(),
|
|
80
|
-
topupAmount: z.string().nullable(),
|
|
81
|
-
currency: z.string().nullable(),
|
|
82
|
-
durationDays: z.number().nullable(),
|
|
83
|
-
platform: z.string().nullable(),
|
|
84
|
-
regionCode: z.string().nullable(),
|
|
85
|
-
deliveryType: z.string(),
|
|
86
|
-
inStock: z.boolean(),
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
/** Медиа */
|
|
90
|
-
export const MediaResponseSchema = z.object({
|
|
91
|
-
id: z.number(),
|
|
92
|
-
type: z.string(),
|
|
93
|
-
url: z.string(),
|
|
94
|
-
alt: z.string().nullable(),
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
/** Системные требования */
|
|
98
|
-
export const SystemRequirementsResponseSchema = z.object({
|
|
99
|
-
type: z.string(),
|
|
100
|
-
os: z.string().nullable(),
|
|
101
|
-
processor: z.string().nullable(),
|
|
102
|
-
memory: z.string().nullable(),
|
|
103
|
-
graphics: z.string().nullable(),
|
|
104
|
-
storage: z.string().nullable(),
|
|
105
|
-
directx: z.string().nullable(),
|
|
106
|
-
network: z.string().nullable(),
|
|
107
|
-
additional: z.string().nullable(),
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
/** DLC в детальной карточке */
|
|
111
|
-
export const DlcBriefSchema = z.object({
|
|
112
|
-
id: z.number(),
|
|
113
|
-
slug: z.string(),
|
|
114
|
-
title: z.string(),
|
|
115
|
-
coverImageUrl: z.string().nullable(),
|
|
116
|
-
variants: z.array(z.object({
|
|
117
|
-
price: z.any(),
|
|
118
|
-
originalPrice: z.any(),
|
|
119
|
-
})),
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
// === Основные схемы ответов ===
|
|
123
|
-
|
|
124
|
-
/** Продукт в каталоге (карточка) */
|
|
125
|
-
export const ProductCatalogResponseSchema = z.object({
|
|
126
|
-
id: z.number(),
|
|
127
|
-
slug: z.string(),
|
|
128
|
-
title: z.string(),
|
|
129
|
-
type: z.string(),
|
|
130
|
-
shortDescription: z.string().nullable(),
|
|
131
|
-
coverImageUrl: z.string().nullable(),
|
|
132
|
-
steamRating: z.number().nullable(),
|
|
133
|
-
hasMultiplayer: z.boolean(),
|
|
134
|
-
hasCoop: z.boolean(),
|
|
135
|
-
salesCount: z.number(),
|
|
136
|
-
publisher: z.string().nullable(),
|
|
137
|
-
releaseDate: z.coerce.date().nullable(),
|
|
138
|
-
category: CategoryBriefSchema,
|
|
139
|
-
genres: z.array(GenreBriefSchema),
|
|
140
|
-
regions: z.array(RegionBriefSchema),
|
|
141
|
-
variants: z.array(VariantCatalogSchema),
|
|
142
|
-
minPrice: z.string().nullable(),
|
|
143
|
-
hasDiscount: z.boolean(),
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
/** Продукт (полная детальная карточка) */
|
|
147
|
-
export const ProductDetailResponseSchema = z.object({
|
|
148
|
-
id: z.number(),
|
|
149
|
-
slug: z.string(),
|
|
150
|
-
title: z.string(),
|
|
151
|
-
originalTitle: z.string().nullable(),
|
|
152
|
-
type: z.string(),
|
|
153
|
-
status: z.string(),
|
|
154
|
-
description: z.string().nullable(),
|
|
155
|
-
customDescription: z.string().nullable(),
|
|
156
|
-
shortDescription: z.string().nullable(),
|
|
157
|
-
coverImageUrl: z.string().nullable(),
|
|
158
|
-
developer: z.string().nullable(),
|
|
159
|
-
publisher: z.string().nullable(),
|
|
160
|
-
releaseDate: z.coerce.date().nullable(),
|
|
161
|
-
steamAppId: z.number().nullable(),
|
|
162
|
-
steamRating: z.number().nullable(),
|
|
163
|
-
hasMultiplayer: z.boolean(),
|
|
164
|
-
hasCoop: z.boolean(),
|
|
165
|
-
hasSinglePlayer: z.boolean(),
|
|
166
|
-
metaTitle: z.string().nullable(),
|
|
167
|
-
metaDescription: z.string().nullable(),
|
|
168
|
-
salesCount: z.number(),
|
|
169
|
-
viewsCount: z.number(),
|
|
170
|
-
category: CategoryBriefSchema.extend({ id: z.number() }),
|
|
171
|
-
variants: z.array(VariantDetailSchema),
|
|
172
|
-
media: z.array(MediaResponseSchema),
|
|
173
|
-
genres: z.array(TagBriefSchema),
|
|
174
|
-
tags: z.array(TagBriefSchema),
|
|
175
|
-
regions: z.array(RegionResponseSchema.omit({ _count: true })),
|
|
176
|
-
systemRequirements: z.array(SystemRequirementsResponseSchema),
|
|
177
|
-
dlcs: z.array(DlcBriefSchema),
|
|
178
|
-
createdAt: z.coerce.date(),
|
|
179
|
-
updatedAt: z.coerce.date(),
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
/** Статистика ключей по варианту */
|
|
183
|
-
export const KeysCountResponseSchema = z.object({
|
|
184
|
-
available: z.number(),
|
|
185
|
-
sold: z.number(),
|
|
186
|
-
reserved: z.number(),
|
|
187
|
-
total: z.number(),
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
// === Парсинг Steam ===
|
|
191
|
-
|
|
192
|
-
/** Спарсенные системные требования */
|
|
193
|
-
const ParsedSystemRequirementsSchema = z.object({
|
|
194
|
-
os: z.string().optional(),
|
|
195
|
-
processor: z.string().optional(),
|
|
196
|
-
memory: z.string().optional(),
|
|
197
|
-
graphics: z.string().optional(),
|
|
198
|
-
storage: z.string().optional(),
|
|
199
|
-
directx: z.string().optional(),
|
|
200
|
-
network: z.string().optional(),
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
/** Данные игры из Steam Store API */
|
|
204
|
-
const SteamParsedDataSchema = z.object({
|
|
205
|
-
title: z.string(),
|
|
206
|
-
originalTitle: z.string().optional(),
|
|
207
|
-
description: z.string(),
|
|
208
|
-
shortDescription: z.string(),
|
|
209
|
-
coverImageUrl: z.string(),
|
|
210
|
-
developer: z.string().optional(),
|
|
211
|
-
publisher: z.string().optional(),
|
|
212
|
-
releaseDate: z.string().optional(),
|
|
213
|
-
steamAppId: z.number(),
|
|
214
|
-
steamRating: z.number().optional(),
|
|
215
|
-
hasMultiplayer: z.boolean(),
|
|
216
|
-
hasCoop: z.boolean(),
|
|
217
|
-
hasSinglePlayer: z.boolean(),
|
|
218
|
-
genres: z.array(z.string()),
|
|
219
|
-
screenshots: z.array(z.string()),
|
|
220
|
-
systemRequirements: z.object({
|
|
221
|
-
minimum: ParsedSystemRequirementsSchema.optional(),
|
|
222
|
-
recommended: ParsedSystemRequirementsSchema.optional(),
|
|
223
|
-
}),
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
/** Региональная цена из Dessly */
|
|
227
|
-
const DesslyRegionPriceSchema = z.object({
|
|
228
|
-
region: z.string(),
|
|
229
|
-
price: z.string(),
|
|
230
|
-
priceOriginal: z.string(),
|
|
231
|
-
discount: z.string(),
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
/** Издание игры из Dessly */
|
|
235
|
-
const DesslyEditionSchema = z.object({
|
|
236
|
-
edition: z.string(),
|
|
237
|
-
packageId: z.number(),
|
|
238
|
-
regions: z.array(DesslyRegionPriceSchema),
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
/** Данные из Dessly API */
|
|
242
|
-
const DesslyParsedDataSchema = z.object({
|
|
243
|
-
editions: z.array(DesslyEditionSchema),
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
/** Ответ парсинга игры по Steam App ID */
|
|
247
|
-
export const SteamParseResponseSchema = z.object({
|
|
248
|
-
steam: SteamParsedDataSchema.nullable(),
|
|
249
|
-
dessly: DesslyParsedDataSchema.nullable(),
|
|
250
|
-
});
|
|
251
|
-
|
|
252
|
-
// === Type exports ===
|
|
253
|
-
|
|
254
|
-
export type CategoryBrief = z.infer<typeof CategoryBriefSchema>;
|
|
255
|
-
export type CategoryResponse = z.infer<typeof CategoryResponseSchema>;
|
|
256
|
-
export type GenreBrief = z.infer<typeof GenreBriefSchema>;
|
|
257
|
-
export type GenreResponse = z.infer<typeof GenreResponseSchema>;
|
|
258
|
-
export type TagBrief = z.infer<typeof TagBriefSchema>;
|
|
259
|
-
export type RegionBrief = z.infer<typeof RegionBriefSchema>;
|
|
260
|
-
export type RegionResponse = z.infer<typeof RegionResponseSchema>;
|
|
261
|
-
export type VariantCatalog = z.infer<typeof VariantCatalogSchema>;
|
|
262
|
-
export type VariantDetail = z.infer<typeof VariantDetailSchema>;
|
|
263
|
-
export type MediaResponse = z.infer<typeof MediaResponseSchema>;
|
|
264
|
-
export type SystemRequirementsResponse = z.infer<typeof SystemRequirementsResponseSchema>;
|
|
265
|
-
export type ProductCatalogResponse = z.infer<typeof ProductCatalogResponseSchema>;
|
|
266
|
-
export type ProductDetailResponse = z.infer<typeof ProductDetailResponseSchema>;
|
|
267
|
-
export type KeysCountResponse = z.infer<typeof KeysCountResponseSchema>;
|
|
268
|
-
export type SteamParseResponse = z.infer<typeof SteamParseResponseSchema>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { ProductCreateRequestSchema } from "./create";
|
|
3
|
-
import { ProductStatus } from "./enums";
|
|
4
|
-
|
|
5
|
-
/** Запрос на обновление продукта (частичное) */
|
|
6
|
-
export const ProductUpdateRequestSchema = ProductCreateRequestSchema.partial().extend({
|
|
7
|
-
/** Статус продукта */
|
|
8
|
-
status: ProductStatus.optional(),
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
export type ProductUpdateRequest = z.infer<typeof ProductUpdateRequestSchema>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
export const PromoCodeActivationCreateSchema = z.object({
|
|
4
|
-
promocodeId: z.coerce.number(),
|
|
5
|
-
refferalId: z.coerce.number(),
|
|
6
|
-
discountValue: z.coerce.number(),
|
|
7
|
-
activatedAt: z.coerce.date(),
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
export type PromoCodeActivationCreate = z.infer<typeof PromoCodeActivationCreateSchema>;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import z from "zod";
|
|
2
|
-
|
|
3
|
-
export const PromoCodeActivationReadResponseSchema = z.object({
|
|
4
|
-
id: z.coerce.number().positive(),
|
|
5
|
-
promocodeId: z.coerce.number().positive(),
|
|
6
|
-
refferalId: z.coerce.number().positive(),
|
|
7
|
-
discountValue: z.string(),
|
|
8
|
-
activatedAt: z.coerce.date(),
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
export type PromoCodeActivationReadResponse = z.infer<typeof PromoCodeActivationReadResponseSchema>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
|
|
3
|
-
export const PromoCodeActivationUpdateSchema = z.object({
|
|
4
|
-
promocodeId: z.coerce.number().optional(),
|
|
5
|
-
refferalId: z.coerce.number().optional(),
|
|
6
|
-
discountValue: z.coerce.number().optional(),
|
|
7
|
-
activatedAt: z.coerce.date().nullable().optional(),
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
export type PromoCodeActivationUpdate = z.infer<typeof PromoCodeActivationUpdateSchema>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { PromoCodeStatus, PromoCodeType } from "./enums";
|
|
3
|
-
|
|
4
|
-
export const PromoCodeCreateSchema = z.object({
|
|
5
|
-
value: z.string(),
|
|
6
|
-
discountValue: z.string(),
|
|
7
|
-
expiredAt: z.coerce.date().nullable().optional(),
|
|
8
|
-
startedAt: z.coerce.date().nullable().optional(),
|
|
9
|
-
createdAt: z.coerce.date().nullable().optional(),
|
|
10
|
-
deletedAt: z.coerce.date().nullable().optional(),
|
|
11
|
-
updatedAt: z.coerce.date().nullable().optional(),
|
|
12
|
-
activationLimit: z.coerce.number().positive().nullable().optional(),
|
|
13
|
-
activationPerUserLimit: z.coerce.number().positive().nullable().optional(),
|
|
14
|
-
type: PromoCodeType,
|
|
15
|
-
status: PromoCodeStatus,
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
export type PromoCodeCreate = z.infer<typeof PromoCodeCreateSchema>;
|