mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-07 07:42:45 +01:00
72 lines
2.6 KiB
Go
72 lines
2.6 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/arangodb/go-driver"
|
|
|
|
"github.com/SecurityBrewery/catalyst/database"
|
|
"github.com/SecurityBrewery/catalyst/generated/models"
|
|
"github.com/SecurityBrewery/catalyst/generated/restapi/api"
|
|
"github.com/SecurityBrewery/catalyst/generated/restapi/operations/tickets"
|
|
)
|
|
|
|
func ticketID(id int64) []driver.DocumentID {
|
|
return []driver.DocumentID{driver.DocumentID(fmt.Sprintf("%s/%d", database.TicketCollectionName, id))}
|
|
}
|
|
|
|
func ticketIDs(ticketResponses []*models.TicketResponse) []driver.DocumentID {
|
|
var ids []driver.DocumentID
|
|
for _, ticketResponse := range ticketResponses {
|
|
ids = append(ids, ticketID(ticketResponse.ID)...)
|
|
}
|
|
return ids
|
|
}
|
|
|
|
func (s *Service) CreateTicket(ctx context.Context, params *tickets.CreateTicketParams) *api.Response {
|
|
createdTickets, err := s.database.TicketBatchCreate(ctx, []*models.TicketForm{params.Ticket})
|
|
if len(createdTickets) > 0 {
|
|
return s.response(ctx, "CreateTicket", ticketIDs(createdTickets), createdTickets[0], err)
|
|
}
|
|
return s.response(ctx, "CreateTicket", ticketIDs(createdTickets), nil, err)
|
|
}
|
|
|
|
func (s *Service) CreateTicketBatch(ctx context.Context, params *tickets.CreateTicketBatchParams) *api.Response {
|
|
ticketBatch, err := s.database.TicketBatchCreate(ctx, params.Ticket)
|
|
return s.response(ctx, "CreateTicketBatch", ticketIDs(ticketBatch), nil, err)
|
|
}
|
|
|
|
func (s *Service) GetTicket(ctx context.Context, params *tickets.GetTicketParams) *api.Response {
|
|
ticket, err := s.database.TicketGet(ctx, params.ID)
|
|
return s.response(ctx, "GetTicket", nil, ticket, err)
|
|
}
|
|
|
|
func (s *Service) UpdateTicket(ctx context.Context, params *tickets.UpdateTicketParams) *api.Response {
|
|
ticket, err := s.database.TicketUpdate(ctx, params.ID, params.Ticket)
|
|
return s.response(ctx, "UpdateTicket", ticketID(ticket.ID), ticket, err)
|
|
}
|
|
|
|
func (s *Service) DeleteTicket(ctx context.Context, params *tickets.DeleteTicketParams) *api.Response {
|
|
if err := s.database.TicketDelete(ctx, params.ID); err != nil {
|
|
return s.response(ctx, "DeleteTicket", ticketID(params.ID), nil, err)
|
|
}
|
|
|
|
_ = s.storage.DeleteBucket(fmt.Sprint(params.ID))
|
|
return s.response(ctx, "DeleteTicket", ticketID(params.ID), nil, nil)
|
|
}
|
|
|
|
func (s *Service) ListTickets(ctx context.Context, params *tickets.ListTicketsParams) *api.Response {
|
|
q := ""
|
|
if params.Query != nil && *params.Query != "" {
|
|
q = *params.Query
|
|
}
|
|
t := ""
|
|
if params.Type != nil && *params.Type != "" {
|
|
t = *params.Type
|
|
}
|
|
|
|
ticketList, err := s.database.TicketList(ctx, t, q, params.Sort, params.Desc, *params.Offset, *params.Count)
|
|
return s.response(ctx, "ListTickets", nil, ticketList, err)
|
|
}
|