Skip to content

Add group contacts query to GraphQL

Lee Tickett requested to merge 2256-add-contacts-to-graphql into master

What does this MR do?

his is part of the ongoing effort to add the concept of organizations and contacts (see #2256).

The tables/models are in place, and we just merged first GraphQL query to pull organizations for a group (!69318 (merged)).

This introduces the corresponding GraphQL query to pull contacts for a group.

Screenshots or Screencasts (strongly suggested)

image

How to setup and validate locally (strongly suggested)

  1. Insert a few organizations for a group (flightjs perhaps):
gdk psql
insert into customer_relations_organizations (group_id, created_at, updated_at, default_rate, name, description) values (26, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 123.45, 'Tickett', 'Monthly retainer £1,000');
insert into customer_relations_organizations (group_id, created_at, updated_at, default_rate, name, description) values (26, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 1000, 'Tickett', 'No monthly retainer');
  1. Grab the inserted record id's:
select * from customer_relations_organizations;
  1. Insert a few contacts for the group (some attached to organizations, some not):
insert into customer_relations_contacts (group_id, organization_id, created_at, updated_at, phone, first_name, last_name, email, description) values (26, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '07777 777777', 'Lee', 'Tickett', 'example@gitlab.com', 'VIP');
insert into customer_relations_contacts (group_id, organization_id, created_at, updated_at, phone, first_name, last_name, email, description) values (26, 2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, null, 'Jane', 'Doe', null, null);
insert into customer_relations_contacts (group_id, organization_id, created_at, updated_at, phone, first_name, last_name, email, description) values (26, null, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, null, 'Marty', 'McFly', null, null);
insert into customer_relations_contacts (group_id, organization_id, created_at, updated_at, phone, first_name, last_name, email, description) values (26, null, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, null, 'Boy', 'George', null, null);
  1. Execute GraphQL query:
query {
  group(fullPath: "flightjs") { 
    contacts {
      nodes {
        id
        organization {
          id
          name
          defaultRate
          description
          createdAt
          updatedAt
        }
        firstName
        lastName
        phone
        email
        description
        createdAt
        updatedAt
      }
    }
  }
}

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #2256

Edited by Lee Tickett

Merge request reports