| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package graph
- import (
- "strconv"
- "time"
- "gogs.dmsc.dev/arp/graph/model"
- "gogs.dmsc.dev/arp/models"
- )
- // ID helpers for converting between string IDs (GraphQL) and uint IDs (database)
- func toID(s string) (uint, error) {
- id, err := strconv.ParseUint(s, 10, 32)
- return uint(id), err
- }
- // convertUser converts models.User to model.User
- func convertUser(u models.User) *model.User {
- roles := make([]*model.Role, len(u.Roles))
- for i, r := range u.Roles {
- roles[i] = &model.Role{
- ID: strconv.FormatUint(uint64(r.ID), 10),
- Name: r.Name,
- Description: r.Description,
- Permissions: convertPermissions(r.Permissions),
- }
- }
- return &model.User{
- ID: strconv.FormatUint(uint64(u.ID), 10),
- Email: u.Email,
- Password: u.Password,
- Roles: roles,
- CreatedAt: u.CreatedAt.String(),
- UpdatedAt: u.UpdatedAt.String(),
- }
- }
- // convertUsers converts []models.User to []*model.User
- func convertUsers(users []models.User) []*model.User {
- result := make([]*model.User, len(users))
- for i, u := range users {
- result[i] = convertUser(u)
- }
- return result
- }
- // convertNote converts models.Note to model.Note
- func convertNote(n models.Note) *model.Note {
- userID := strconv.FormatUint(uint64(n.UserID), 10)
- serviceID := strconv.FormatUint(uint64(n.ServiceID), 10)
- return &model.Note{
- ID: strconv.FormatUint(uint64(n.ID), 10),
- Title: n.Title,
- Content: n.Content,
- UserID: userID,
- ServiceID: serviceID,
- CreatedAt: n.CreatedAt.String(),
- UpdatedAt: n.UpdatedAt.String(),
- }
- }
- // convertNotes converts []models.Note to []*model.Note
- func convertNotes(notes []models.Note) []*model.Note {
- result := make([]*model.Note, len(notes))
- for i, n := range notes {
- result[i] = convertNote(n)
- }
- return result
- }
- // convertRole converts models.Role to model.Role
- func convertRole(r models.Role) *model.Role {
- permissions := make([]*model.Permission, len(r.Permissions))
- for i, p := range r.Permissions {
- permissions[i] = &model.Permission{
- ID: strconv.FormatUint(uint64(p.ID), 10),
- Code: p.Code,
- Description: p.Description,
- }
- }
- return &model.Role{
- ID: strconv.FormatUint(uint64(r.ID), 10),
- Name: r.Name,
- Description: r.Description,
- Permissions: permissions,
- }
- }
- // convertRoles converts []models.Role to []*model.Role
- func convertRoles(roles []models.Role) []*model.Role {
- result := make([]*model.Role, len(roles))
- for i, r := range roles {
- result[i] = convertRole(r)
- }
- return result
- }
- // convertPermission converts models.Permission to model.Permission
- func convertPermission(p models.Permission) *model.Permission {
- return &model.Permission{
- ID: strconv.FormatUint(uint64(p.ID), 10),
- Code: p.Code,
- Description: p.Description,
- }
- }
- // convertPermissions converts []models.Permission to []*model.Permission
- func convertPermissions(perms []models.Permission) []*model.Permission {
- result := make([]*model.Permission, len(perms))
- for i, p := range perms {
- result[i] = convertPermission(p)
- }
- return result
- }
- // convertService converts models.Service to model.Service
- func convertService(s models.Service) *model.Service {
- var desc *string
- if s.Description != "" {
- desc = &s.Description
- }
- createdByID := strconv.FormatUint(uint64(s.CreatedByID), 10)
- participants := make([]*model.User, len(s.Participants))
- for i, u := range s.Participants {
- participants[i] = convertUser(u)
- }
- tasks := make([]*model.Task, len(s.Tasks))
- for i, t := range s.Tasks {
- tasks[i] = convertTask(t)
- }
- return &model.Service{
- ID: strconv.FormatUint(uint64(s.ID), 10),
- Name: s.Name,
- Description: desc,
- CreatedByID: createdByID,
- CreatedBy: convertUser(s.CreatedBy),
- Participants: participants,
- Tasks: tasks,
- CreatedAt: s.CreatedAt.String(),
- UpdatedAt: s.UpdatedAt.String(),
- }
- }
- // convertServices converts []models.Service to []*model.Service
- func convertServices(services []models.Service) []*model.Service {
- result := make([]*model.Service, len(services))
- for i, s := range services {
- result[i] = convertService(s)
- }
- return result
- }
- // convertTaskStatus converts models.TaskStatus to model.TaskStatus
- func convertTaskStatus(ts models.TaskStatus) *model.TaskStatus {
- tasks := make([]*model.Task, len(ts.Tasks))
- for i, t := range ts.Tasks {
- tasks[i] = convertTask(t)
- }
- return &model.TaskStatus{
- ID: strconv.FormatUint(uint64(ts.ID), 10),
- Code: ts.Code,
- Label: ts.Label,
- Tasks: tasks,
- CreatedAt: ts.CreatedAt.String(),
- UpdatedAt: ts.UpdatedAt.String(),
- }
- }
- // convertTaskStatuses converts []models.TaskStatus to []*model.TaskStatus
- func convertTaskStatuses(statuses []models.TaskStatus) []*model.TaskStatus {
- result := make([]*model.TaskStatus, len(statuses))
- for i, ts := range statuses {
- result[i] = convertTaskStatus(ts)
- }
- return result
- }
- // convertTask converts models.Task to model.Task
- func convertTask(t models.Task) *model.Task {
- var dueDate *string
- if t.DueDate != nil {
- formatted := t.DueDate.Format(time.RFC3339)
- dueDate = &formatted
- }
- var statusID *string
- var status *model.TaskStatus
- if t.Status.ID > 0 {
- sid := strconv.FormatUint(uint64(t.StatusID), 10)
- statusID = &sid
- status = convertTaskStatus(t.Status)
- }
- var assigneeID *string
- var assignee *model.User
- if t.AssigneeID != nil && t.Assignee != nil {
- aid := strconv.FormatUint(uint64(*t.AssigneeID), 10)
- assigneeID = &aid
- assignee = convertUser(*t.Assignee)
- }
- return &model.Task{
- ID: strconv.FormatUint(uint64(t.ID), 10),
- Title: t.Title,
- Content: t.Content,
- CreatedByID: strconv.FormatUint(uint64(t.CreatedByID), 10),
- CreatedBy: convertUser(t.CreatedBy),
- UpdatedByID: strconv.FormatUint(uint64(t.UpdatedByID), 10),
- UpdatedBy: convertUser(t.UpdatedBy),
- AssigneeID: assigneeID,
- Assignee: assignee,
- StatusID: statusID,
- Status: status,
- DueDate: dueDate,
- Priority: t.Priority,
- CreatedAt: t.CreatedAt.String(),
- UpdatedAt: t.UpdatedAt.String(),
- }
- }
- // convertTasks converts []models.Task to []*model.Task
- func convertTasks(tasks []models.Task) []*model.Task {
- result := make([]*model.Task, len(tasks))
- for i, t := range tasks {
- result[i] = convertTask(t)
- }
- return result
- }
- // convertMessage converts models.Message to model.Message
- func convertMessage(m models.Message) *model.Message {
- receivers := make([]string, len(m.Receivers))
- for i, r := range m.Receivers {
- receivers[i] = strconv.FormatUint(uint64(r.ID), 10)
- }
- return &model.Message{
- ID: strconv.FormatUint(uint64(m.ID), 10),
- SenderID: strconv.FormatUint(uint64(m.SenderID), 10),
- Sender: convertUser(m.Sender),
- Content: m.Content,
- SentAt: m.SentAt.String(),
- Receivers: receivers,
- CreatedAt: m.CreatedAt.String(),
- UpdatedAt: m.UpdatedAt.String(),
- }
- }
- // convertMessages converts []models.Message to []*model.Message
- func convertMessages(messages []models.Message) []*model.Message {
- result := make([]*model.Message, len(messages))
- for i, m := range messages {
- result[i] = convertMessage(m)
- }
- return result
- }
|