Yimaru-BackEnd/internal/repository/ticket.go

89 lines
2.4 KiB
Go

package repository
import (
"context"
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
"github.com/SamuelTariku/FortuneBet-Backend/internal/ports"
)
// Interface for creating new user store
func NewTicketStore(s *Store) ports.TicketStore { return s }
func (s *Store) CreateTicket(ctx context.Context, ticket domain.CreateTicket) (domain.Ticket, error) {
newTicket, err := s.queries.CreateTicket(ctx, domain.ConvertCreateTicket(ticket))
if err != nil {
return domain.Ticket{}, err
}
return domain.ConvertDBTicket(newTicket), err
}
func (s *Store) CreateTicketOutcome(ctx context.Context, outcomes []domain.CreateTicketOutcome) (int64, error) {
var dbParams []dbgen.CreateTicketOutcomeParams = make([]dbgen.CreateTicketOutcomeParams, 0, len(outcomes))
for _, outcome := range outcomes {
dbParams = append(dbParams, domain.ConvertDBCreateTicketOutcome(outcome))
}
rows, err := s.queries.CreateTicketOutcome(ctx, dbParams)
if err != nil {
return rows, err
}
return rows, nil
}
func (s *Store) GetTicketByID(ctx context.Context, id int64) (domain.GetTicket, error) {
ticket, err := s.queries.GetTicketByID(ctx, id)
if err != nil {
return domain.GetTicket{}, err
}
return domain.ConvertDBTicketOutcomes(ticket), nil
}
func (s *Store) GetAllTickets(ctx context.Context, filter domain.TicketFilter) ([]domain.GetTicket, error) {
tickets, err := s.queries.GetAllTickets(ctx, filter.CompanyID.ToPG())
if err != nil {
return nil, err
}
var result []domain.GetTicket = make([]domain.GetTicket, 0, len(tickets))
for _, ticket := range tickets {
result = append(result, domain.ConvertDBTicketOutcomes(ticket))
}
return result, nil
}
func (s *Store) CountTicketByIP(ctx context.Context, IP string) (int64, error) {
count, err := s.queries.CountTicketByIP(ctx, IP)
if err != nil {
return 0, err
}
return count, err
}
func (s *Store) UpdateTicketOutcomeStatus(ctx context.Context, id int64, status domain.OutcomeStatus) error {
err := s.queries.UpdateTicketOutcomeStatus(ctx, dbgen.UpdateTicketOutcomeStatusParams{
Status: int32(status),
ID: id,
})
return err
}
func (s *Store) DeleteOldTickets(ctx context.Context) error {
return s.queries.DeleteOldTickets(ctx)
}
func (s *Store) DeleteTicket(ctx context.Context, id int64) error {
return s.queries.DeleteTicket(ctx, id)
}