Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementación de sistema de transferencia de tickets #286

Merged
merged 21 commits into from
Oct 15, 2024

Conversation

TextC0de
Copy link
Collaborator

@TextC0de TextC0de commented Oct 7, 2024

Este PR implementa la funcionalidad de regalo de tickets (relacionado a #30, #31) y además incorpora optimizaciones de rendimiento propuestas en el PR #273.

Se incluyen los siguientes cambios principales:

  1. Nuevas tablas y relaciones:

    • user_ticket_gifts: Almacena información sobre los regalos de tickets.
    • Actualización de user_tickets con nuevos estados y relaciones.
  2. Endpoints GraphQL:

    • Mutación giftMyTicketToUser: Permite a un usuario regalar su ticket.
    • Mutación acceptGiftedTicket: Permite al receptor aceptar un ticket regalado.
    • Query myTicketGifts: Obtiene los regalos de tickets enviados o recibidos por el usuario actual.
  3. Lógica de negocio:

    • Implementación de validaciones para evitar auto-regalos y exceder límites de tickets.
    • Manejo de estados de regalo (pendiente, aceptado, rechazado, cancelado, expirado).
    • Cálculo de fechas de expiración para regalos.
  4. Servicio de correo electrónico (solo para 9punto5, luego hay que extenderlo):

    • Nuevas plantillas de correo para notificaciones de regalo de tickets.
    • Implementación de métodos para enviar correos de confirmación de regalo y aceptación.
  5. Actualizaciones en flujos existentes:

    • Modificación de claimUserTicket para manejar regalos de tickets durante la compra.
  6. Pruebas:

    • Nuevos tests para cubrir los escenarios de regalo de tickets.

Optimizaciones de rendimiento (del PR #273):

Dado que estamos añadiendo más complejidad a la mutación claim, se han incorporado las optimizaciones propuestas en el PR #273. Estas incluyen:

  • Eliminación de verificaciones redundantes.
  • Paralelización de operaciones usando Promise.all.
  • Optimización de consultas a la base de datos, reemplazando múltiples consultas individuales por consultas en lote más eficientes.

Estas optimizaciones, aunque no cruciales, son relevantes para mantener el rendimiento de la mutación claim a medida que se añade nueva funcionalidad.

Cualquier feedback o sugerencia para mejorar la implementación es bienvenido.

Copy link

github-actions bot commented Oct 7, 2024

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 81.89% 15071 / 18403
🔵 Statements 81.89% 15071 / 18403
🔵 Functions 77.16% 409 / 530
🔵 Branches 79.13% 1100 / 1390
File Coverage
File Stmts % Branch % Funcs % Lines Uncovered Lines
Changed Files
src/datasources/db/schema.ts 100% 100% 100% 100%
src/datasources/db/tickets.ts 100% 100% 100% 100%
src/datasources/db/userTickets.ts 100% 100% 0% 100%
src/datasources/db/userTicketsTransfers.ts 100% 100% 0% 100%
src/datasources/db/users.ts 100% 100% 100% 100%
src/generated/types.ts 100% 100% 100% 100%
src/schema/index.ts 100% 100% 100% 100%
src/schema/purchaseOrder/actions.tsx 41.34% 54.54% 55.55% 41.34% 34-55, 106-111, 116-121, 155-246, 249-317, 320-558, 604-605, 658-659, 666-669, 716-717, 722-758
src/schema/shared/refs.ts 100% 100% 100% 100%
src/schema/ticket/types.ts 83.22% 86.36% 92.85% 83.22% 79-104
src/schema/user/types.ts 75.86% 88.88% 73.33% 75.86% 63-64, 73-76, 82-98, 104-107, 119-147
src/schema/user/userHelpers.ts 21.34% 100% 33.33% 21.34% 18-70, 73-89
src/schema/userTickets/helpers.ts 88.92% 79.48% 100% 88.92% 52-57, 62-67, 70-75, 86-91, 136-137, 164-165, 216-217, 251-252
src/schema/userTickets/mutations.ts 84.52% 72.26% 100% 84.52% 109-110, 156-157, 179-180, 221-222, 233-234, 245-246, 290-291, 302-307, 325-330, 333-338, 363-368, 425-432, 446-451, 464-469, 472-477, 538-543, 588, 615-616, 623-647, 661, 678-679, 703-708, 711-716
src/schema/userTickets/queries.ts 65.3% 100% 57.14% 65.3% 45-62, 84-112, 157-194
src/schema/userTickets/types.ts 88.83% 50% 82.35% 88.83% 50-51, 64-65, 68-69, 81-82, 116-117, 120-121, 143-144, 150-151, 161-162, 168-169, 179-180, 186-187
src/schema/userTickets/tests/claimUserTicket/claimUserTicket.generated.ts 100% 100% 100% 100%
src/schema/userTicketsTransfers/helpers.ts 100% 100% 100% 100%
src/schema/userTicketsTransfers/mutations.ts 92.37% 82.85% 100% 92.37% 53-54, 87-88, 94-95, 124-125, 156-157, 201-208
src/schema/userTicketsTransfers/queries.ts 37.33% 100% 0% 37.33% 27-73
src/schema/userTicketsTransfers/types.ts 93.4% 72.72% 100% 93.4% 41-42, 58-59, 84-85
src/schema/userTicketsTransfers/tests/acceptTransferredTicket/acceptTransferredTicket.generated.ts 100% 100% 100% 100%
src/schema/userTicketsTransfers/tests/transferMyTicketToUser/transferMyTicketToUser.generated.ts 100% 100% 100% 100%
src/tests/fixtures/index.ts 98.35% 82.12% 94.87% 98.35% 186-187, 204-205, 621, 795-799, 802, 806, 848-849
src/tests/fixtures/mocks.ts 100% 100% 100% 100%
Generated in workflow #1227 for commit 3b98e2c by the Vitest Coverage Report Action

...createdAndUpdatedAtFields,
},
(table) => ({
eventIdIndex: index("tickets_event_id_index").on(table.eventId),
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Se añade un index ya que se utiliza bastante este campo para hacer queries

Copy link
Member

@joseglego joseglego Oct 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Me hace sentido. Pero disculpa mi ignorancia, eso no debería ser parte de las drizzle/migrations?

Ok, viendo más abajo está bien acá! Pero no veo la magia de las drizzle/migrations y estos archivos! Me mareé! No entiendo cómo la BD sabe cómo agregar esto! Nuevamente, ignorancia de mi parte

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Creo que en general hay ruido por el cambio de indentación

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sí, el cambio de identación, ocurrio por que añadi el segundo parametro (table) => ({ lo hizo el prettier automatico.

Tengo que revisar lo de que hay dos migraciones 0033 en este PR.
Y ahi de seguro se resuelve tu duda del index en los migrations.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arregladas las migraciones.
Linea 45 de drizzle/migrations/0033_thankful_orphan.sql está el nuevo index agregado.

@TextC0de TextC0de marked this pull request as ready for review October 7, 2024 22:21
- Move userTicketGiftsSchema to separate file as userTicketTransfersSchema
- Update schema, mutations, and queries to use "transfer" terminology
- Consolidate and update migration files (0033) with new transfer schema
- Adjust related code, tests, and email templates for transfer concept
- Rename variables and update text to align with transfer terminology

BREAKING CHANGE: APIs and database schema related to ticket gifting have been
renamed and restructured to use "transfer" concept instead of "gift".
@TextC0de TextC0de changed the title Implementación de sistema de regalo de tickets Implementación de sistema de transferencia de tickets Oct 11, 2024
- Add new approval statuses: transfer_pending and transfer_accepted
- Update queries and mutations to include new transfer statuses
- Adjust tests to reflect new transfer approval flow
- Replace 'gifted' status with 'transfer_pending' where appropriate
@TextC0de
Copy link
Collaborator Author

Actualización importante: Refactorización de "regalos" a "transferencias" de tickets

Basado en el feedback recibido, he realizado una refactorización del concepto de "regalo" de tickets a "transferencia" de tickets. Este cambio refleja mejor la funcionalidad, ya que puede representar situaciones que no son necesariamente regalos. Los cambios principales incluyen:

  1. Renombrado y reubicación de esquemas:

    • user_ticket_gifts ahora es user_ticket_transfers
    • El esquema se ha movido a su propio archivo para mejor organización
  2. Actualizaciones en la API y la base de datos:

    • Todas las referencias a "gift" se han cambiado a "transfer" en mutaciones, consultas y esquemas
    • Los archivos de migración (0033) se han consolidado y actualizado con el nuevo esquema de transferencias
  3. Cambios en el código y las pruebas:

    • Se han actualizado todas las variables, funciones y textos relacionados para reflejar el concepto de transferencia
  4. Actualizaciones en las plantillas de correo electrónico:

    • Las plantillas ahora reflejan el concepto de transferencia de tickets en su nombre de archivo

La funcionalidad principal sigue siendo la misma, pero ahora es más flexible y precisa en su terminología.

@TextC0de
Copy link
Collaborator Author

El commit 896752ed2e7b0c401ec8955c3742752e3e9e099b propone introducir nuevos estados de aprobación específicos para las transferencias de tickets.

Se han añadido los estados 'transfer_pending' y 'transfer_accepted' para representar mejor el proceso de transferencia.

Cambios principales:

  1. Nuevos estados de aprobación en userTicketsApprovalStatusEnum.
  2. Actualización de consultas y mutaciones para incluir los nuevos estados.
  3. Ajuste de las pruebas para reflejar el nuevo flujo de aprobación de transferencias.
  4. Reemplazo del estado 'gifted' por 'transfer_pending' en las partes relevantes del código.

Estos cambios permiten un seguimiento más preciso del estado de los tickets durante el proceso de transferencia, mejorando la claridad y la funcionalidad del sistema de gestión de tickets.

Se mantiene el estado 'gifted' y 'gift_accepted'.
'gifted' es utilizado en la mutación 'giftTicketsToUsers' que usa el dashboard de retool.

Copy link
Member

@joseglego joseglego left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@TextC0de TextC0de merged commit ab11309 into main Oct 15, 2024
6 checks passed
@TextC0de TextC0de deleted the textcode/feat-ticket-gifts branch October 15, 2024 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants