add remaining org/proj/user initial sync

This commit is contained in:
Mike Mason
2023-07-11 21:32:30 +00:00
parent 80fb879ef6
commit 11fe8f8f2a
15 changed files with 215 additions and 34 deletions

View File

@@ -48,12 +48,18 @@ type Project struct {
}
func (p *Project) ToDetails() *models.ProjectDetails {
if p == nil || p.ID == "" {
var id string
if p != nil {
id = idOrLinkID(p.ID, p.HREF)
}
if id == "" {
return nil
}
details := &models.ProjectDetails{
ID: p.ID,
ID: id,
Name: p.Name,
Organization: p.Organization.ToDetails(),
}
@@ -63,19 +69,19 @@ func (p *Project) ToDetails() *models.ProjectDetails {
return details
}
func (c *Client) getProject(ctx context.Context, id string) (*Project, error) {
func (c *Client) getProjectWithMemberships(ctx context.Context, id string) (*Project, error) {
var project Project
_, err := c.DoRequest(ctx, http.MethodGet, c.baseURL.JoinPath(projectsPath, id).String(), nil, &project)
_, err := c.DoRequest(ctx, http.MethodGet, projectsPath+"/"+id+"?include=memberships.user", nil, &project)
if err != nil {
return nil, fmt.Errorf("error loading project: %w", err)
return nil, fmt.Errorf("error loading organization: %w", err)
}
return &project, nil
}
func (c *Client) GetProjectDetails(ctx context.Context, id gidx.PrefixedID) (*models.ProjectDetails, error) {
project, err := c.getProject(ctx, id.String()[gidx.PrefixPartLength+1:])
project, err := c.getProjectWithMemberships(ctx, id.String()[gidx.PrefixPartLength+1:])
if err != nil {
return nil, err
}