func ticketListHelper(rows lobster.Rows) []*Ticket { tickets := make([]*Ticket, 0) defer rows.Close() for rows.Next() { ticket := Ticket{} rows.Scan(&ticket.Id, &ticket.UserId, &ticket.Name, &ticket.Status, &ticket.Time, &ticket.ModifyTime) tickets = append(tickets, &ticket) } return tickets }
func TicketDetails(userId int, ticketId int, staff bool) *Ticket { var rows lobster.Rows if staff { rows = db.Query("SELECT id, user_id, name, status, time, modify_time FROM tickets WHERE id = ?", ticketId) } else { rows = db.Query("SELECT id, user_id, name, status, time, modify_time FROM tickets WHERE user_id = ? AND id = ?", userId, ticketId) } tickets := ticketListHelper(rows) if len(tickets) != 1 { return nil } ticket := tickets[0] rows = db.Query("SELECT id, staff, message, time FROM ticket_messages WHERE ticket_id = ? ORDER BY id", ticketId) defer rows.Close() for rows.Next() { message := &TicketMessage{} rows.Scan(&message.Id, &message.Staff, &message.Message, &message.Time) ticket.Messages = append(ticket.Messages, message) } return ticket }