123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- import { FieldTypeCode } from "#api/v_0.1.0/types/custom-fields-types.js"; // Удалено, т.к. field_types.code теперь varchar
- import { z } from "zod";
- const DbSchema = {
- usr: {
- users: {
- userId: z.string().uuid(),
- email: z.string().email(),
- password: z.string(),
- wrongPassTries: z.number().int().default(0),
- },
- roles: {
- roleId: z.string().uuid(),
- name: z.string(),
- eventId: z.string().uuid().nullable(),
- eventTypeId: z.string().uuid().nullable(),
- },
- groups: {
- groupId: z.string().uuid(),
- name: z.string(),
- },
- roleGroups: {
- roleId: z.string().uuid(),
- groupId: z.string().uuid(),
- },
- perms: {
- permId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- objId: z.string().uuid(),
- },
- objects: {
- objId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- description: z.string(),
- },
- groupPerms: {
- groupId: z.string().uuid(),
- permId: z.string().uuid(),
- },
- userRoles: {
- roleId: z.string().uuid(),
- userId: z.string().uuid(),
- eventId: z.string().uuid(),
- },
- confirmPins: {
- transactionId: z.string().uuid(),
- email: z.string().email(),
- confirmPin: z.string(),
- createTime: z.string().datetime(), // timestamp в БД
- wrongPinTries: z.number().int().default(0), // int2 в БД
- },
- userRefreshTokens: {
- tokenId: z.string().uuid(),
- userId: z.string().uuid(),
- refreshToken: z.string(),
- rotDate: z.string().datetime(), // timestamp в БД
- },
- },
- ev: {
- events: {
- eventId: z.string().uuid(),
- code: z.string(),
- eventTypeId: z.string().uuid(),
- ownerId: z.string().uuid(),
- },
- eventInst: {
- eventInstId: z.string().uuid(),
- eventId: z.string().uuid(),
- privateName: z.string(),
- publicName: z.string(),
- timezone: z.string(),
- isCurrent: z.boolean().default(false),
- },
- eventTypes: {
- eventTypeId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- },
- userEventFields: {
- // Таблица user_event_fields из новой БД
- userEfId: z.string().uuid(),
- eventId: z.string().uuid(),
- fieldDefinitionId: z.string().uuid(),
- fieldTitleOverride: z.string().nullable(),
- userIdentityOrdinalNumber: z.number().int().nullable(),
- orderNumber: z.number().int().nullable(),
- },
- userEventFieldValues: {
- // Таблица user_event_fields_values из новой БД
- userEfId: z.string().uuid(),
- userId: z.string().uuid(),
- value: z.string().nullable(),
- },
- eventDates: {
- evDateId: z.string().uuid(),
- eventInstId: z.string().uuid(),
- date: z.string().datetime(), // timestamp в БД
- },
- locations: {
- locationId: z.string().uuid(),
- name: z.string(),
- eventInstId: z.string().uuid(),
- },
- areas: {
- areaId: z.string().uuid(),
- name: z.string(),
- locationId: z.string().uuid(),
- parentId: z.string().uuid().nullable(),
- },
- programBlocks: {
- blockId: z.string().uuid(),
- name: z.string(),
- eventInstId: z.string().uuid(),
- },
- programPoints: {
- pointId: z.string().uuid(),
- name: z.string(),
- dateStart: z.string().datetime().nullable(), // timestamp в БД
- dateEnd: z.string().datetime().nullable(), // timestamp в БД
- eventInstId: z.string().uuid(),
- areaId: z.string().uuid().nullable(),
- blockId: z.string().uuid().nullable(),
- isInternal: z.boolean(),
- },
- },
- act: {
- activityCategories: {
- categoryId: z.string().uuid(),
- code: z.string(), // Новое поле
- name: z.string(),
- eventInstId: z.string().uuid(),
- parentId: z.string().uuid().nullable(),
- },
- peTypes: {
- peTypeId: z.string().uuid(),
- eventInstId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- },
- actValidators: {
- actValidatorId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- description: z.string(),
- isPeValidator: z.boolean(),
- },
- actRegValidators: {
- actValidatorId: z.string().uuid(),
- activityId: z.string().uuid(),
- value: z.string().nullable(),
- value2: z.string().nullable(),
- errorMessage: z.string().nullable(),
- },
- activities: {
- activityId: z.string().uuid(),
- code: z.string(), // Новое поле
- privateName: z.string(),
- publicName: z.string(),
- eventInstId: z.string().uuid(),
- categoryId: z.string().uuid().nullable(),
- blockId: z.string().uuid().nullable(),
- isUserReg: z.boolean(),
- paymentConfig: z.enum([
- "PER_REGISTRATION",
- "PER_PARTICIPANT",
- "FREE",
- "NONE",
- ]),
- registrationProductId: z.string().uuid().nullable(),
- participantProductId: z.string().uuid().nullable(),
- initialRegStatusId: z.string().uuid(),
- nextRegStatusIdAfterPayment: z.string().uuid(),
- },
- activityPeTypes: {
- activityId: z.string().uuid(),
- peTypeId: z.string().uuid(),
- },
- partEntities: {
- peId: z.string().uuid(),
- peTypeId: z.string().uuid(),
- eventInstId: z.string().uuid(),
- ownerId: z.string().uuid(),
- name: z.string(),
- },
- peInvites: {
- peInviteId: z.string().uuid(),
- peInviteUuid: z.string().uuid(),
- peId: z.string().uuid(),
- limitVal: z.number().int().nullable(),
- countVal: z.number().int(),
- name: z.string(),
- expirationDate: z.string().datetime().nullable(),
- },
- peMembersRequests: {
- peMemberRequestId: z.string().uuid(),
- peInviteId: z.string().uuid(),
- userId: z.string().uuid(),
- status: z.enum(["PENDING", "ACCEPTED", "REJECTED"]),
- created_at: z.string().datetime(),
- updated_at: z.string().datetime(),
- },
- peMembers: {
- peMemberId: z.string().uuid(),
- userId: z.string().uuid(),
- peId: z.string().uuid(),
- isActive: z.boolean(),
- },
- activityRegFormFields: {
- // Таблица activity_reg_form_fields из новой БД
- arffId: z.string().uuid(),
- activityId: z.string().uuid(),
- fieldDefinitionId: z.string().uuid(),
- fieldTitleOverride: z.string().nullable(),
- isCopyUserValue: z.boolean(),
- isChangeResetStatus: z.boolean(),
- orderNumber: z.number().int().nullable(),
- },
- activityRegs: {
- activityRegId: z.string().uuid(),
- activityId: z.string().uuid(),
- peId: z.string().uuid().nullable(),
- userId: z.string().uuid().nullable(),
- isPaid: z.boolean(),
- number: z.string(),
- isCanceled: z.boolean(),
- },
- actRegStatuses: {
- actRegStatusId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- color: z.string().nullable(),
- isPaymentOpen: z.boolean(),
- },
- actRegStatusHistory: {
- statusHistoryId: z.string().uuid(),
- activityRegId: z.string().uuid(),
- actRegStatusId: z.string().uuid(),
- note: z.string().nullable(),
- setDate: z.string().datetime(),
- },
- arFieldValues: {
- // Таблица ar_field_values из новой БД
- activityRegId: z.string().uuid(),
- arffId: z.string().uuid(),
- value: z.string().nullable(),
- },
- peFormFields: {
- // Таблица pe_form_fields из новой БД
- peFfId: z.string().uuid(),
- peTypeId: z.string().uuid(),
- fieldDefinitionId: z.string().uuid(),
- fieldTitleOverride: z.string().nullable(),
- isCopyUserValue: z.boolean(),
- orderNumber: z.number().int().nullable(),
- },
- peFieldValues: {
- // Таблица pe_field_values из новой БД
- peFfId: z.string().uuid(), // Изменено с fieldDefinitionId
- peId: z.string().uuid(),
- value: z.string().nullable(),
- },
- },
- cf: {
- fieldTypes: {
- fieldTypeId: z.string().uuid(),
- code: FieldTypeCode, // Ранее FieldTypeCode, теперь varchar в БД
- },
- fieldValidators: {
- validatorId: z.string().uuid(),
- code: z.string(),
- name: z.string(),
- fieldTypeId: z.string().uuid().nullable(),
- },
- customFieldDefinitions: {
- fieldDefinitionId: z.string().uuid(),
- code: z.string().nullable(),
- fieldTypeId: z.string().uuid(),
- title: z.string(),
- mask: z.string().nullable(),
- options: z.array(z.string()).nullable(), // jsonb в БД, оставляем как массив строк для совместимости с прошлым использованием
- },
- customFieldValidators: {
- fieldDefinitionId: z.string().uuid(),
- validatorId: z.string().uuid(),
- value: z.string().nullable(),
- errorMessage: z.string().nullable(), // Новое поле
- },
- },
- shop: {
- productCategories: {
- categoryId: z.string().uuid(),
- parentCategoryId: z.string().uuid().nullable(),
- name: z.string(),
- description: z.string().nullable(),
- code: z.string(),
- },
- products: {
- productId: z.string().uuid(),
- categoryId: z.string().nullable(),
- productType: z.enum([
- "SHOP_ORDER",
- "TICKET",
- "ACTIVITY_REGISTRATION",
- "ACTIVITY_PARTICIPANT",
- ]),
- sku: z.string().nullable(),
- name: z.string(),
- description: z.string().nullable(),
- price: z.number(),
- currencyCode: z.string().length(3),
- stockQuantity: z.number().nullable(),
- isActive: z.boolean(),
- attributes: z.any().nullable(),
- createdAt: z.string().datetime(),
- updatedAt: z.string().datetime(),
- },
- carts: {
- cartId: z.string().uuid(),
- userId: z.string().uuid().nullable(),
- createdAt: z.string().datetime(),
- updatedAt: z.string().datetime(),
- },
- cartItems: {
- cartItemId: z.string().uuid(),
- cartId: z.string().uuid(),
- productId: z.string().uuid(),
- // quantity: z.number(),
- priceAtAddition: z.number(),
- activityRegId: z.string().uuid().nullable(),
- peMemberId: z.string().uuid().nullable(),
- addedAt: z.string().datetime(),
- orderId: z.string().uuid().nullable(),
- },
- orders: {
- orderId: z.string().uuid(),
- userId: z.string().uuid().nullable(),
- orderNumber: z.string(),
- status: z.enum([
- "DRAFT",
- "PENDING_PAYMENT",
- "PAID",
- "PROCESSING",
- "COMPLETED",
- "CANCELLED",
- "FAILED",
- ]),
- totalAmount: z.number(),
- currencyCode: z.string().length(3),
- billingDataSnapshot: z.any().nullable(),
- createdAt: z.string().datetime(),
- updatedAt: z.string().datetime(),
- paidAt: z.string().datetime().nullable(),
- completedAt: z.string().datetime().nullable(),
- paymentDueDate: z.string().datetime(),
- },
- orderItems: {
- orderItemId: z.string().uuid(),
- orderId: z.string().uuid(),
- productId: z.string().uuid(),
- // quantity: z.number(),
- unitPrice: z.number(),
- activityRegId: z.string().uuid().nullable(),
- peMemberId: z.string().uuid().nullable(),
- attributesSnapshot: z.any().nullable(),
- status: z.enum([
- "PENDING_PAYMENT",
- "PAID",
- "CANCELLED",
- "FAILED",
- "REFUNDED",
- ]),
- },
- payments: {
- paymentId: z.string().uuid(),
- orderId: z.string().uuid(),
- userId: z.string().uuid().nullable(),
- amount: z.number(),
- currencyCode: z.string().length(3),
- paymentMethod: z.enum(["CARD", "SBP"]),
- bank: z.enum(["YOOKASSA"]),
- status: z.enum([
- "PENDING",
- "SUCCEEDED",
- "FAILED",
- "REFUNDED",
- "CANCELED",
- ]),
- externalTransactionId: z.string().nullable(),
- paymentGatewayDetails: z.any().nullable(),
- createdAt: z.string().datetime(),
- updatedAt: z.string().datetime(),
- confirmation: z
- .object({
- type: z.enum([
- "redirect",
- "qr",
- "embedded",
- "external",
- "mobile_application",
- ]),
- confirmationUrl: z.string().url().nullable(),
- })
- .nullable(),
- },
- },
- };
- export { DbSchema };
|