storj/satellite/console/projectmembers.go
Jeremy Wharton 6b65b7e7d0 satellite/{console,satellitedb}: clean up obsolete project member code
This change removes the obsolete project member paging code.
Previously, we implemented functionality for including project
invitations in pages of project members. However, the satellite
frontend still expected API responses to use the old paging style, so
the related code could not be removed right away. Now that the frontend
has been updated, this code is no longer necessary.

References #5855

Change-Id: I12fdaaeb869977c4d87a0d50b9a7b11c68552c82
2023-06-13 22:13:04 +00:00

73 lines
2.2 KiB
Go

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
package console
import (
"context"
"time"
"storj.io/common/uuid"
)
// ProjectMembers exposes methods to manage ProjectMembers table in database.
//
// architecture: Database
type ProjectMembers interface {
// GetByMemberID is a method for querying project members from the database by memberID.
GetByMemberID(ctx context.Context, memberID uuid.UUID) ([]ProjectMember, error)
// GetPagedWithInvitationsByProjectID is a method for querying project members and invitations from the database by projectID and cursor.
GetPagedWithInvitationsByProjectID(ctx context.Context, projectID uuid.UUID, cursor ProjectMembersCursor) (*ProjectMembersPage, error)
// Insert is a method for inserting project member into the database.
Insert(ctx context.Context, memberID, projectID uuid.UUID) (*ProjectMember, error)
// Delete is a method for deleting project member by memberID and projectID from the database.
Delete(ctx context.Context, memberID, projectID uuid.UUID) error
}
// ProjectMember is a database object that describes ProjectMember entity.
type ProjectMember struct {
// FK on Users table.
MemberID uuid.UUID
// FK on Projects table.
ProjectID uuid.UUID
CreatedAt time.Time
}
// ProjectMembersCursor holds info for project members cursor pagination.
type ProjectMembersCursor struct {
Search string
Limit uint
Page uint
Order ProjectMemberOrder
OrderDirection OrderDirection
}
// ProjectMembersPage represents a page of project members and invitations.
type ProjectMembersPage struct {
ProjectMembers []ProjectMember
ProjectInvitations []ProjectInvitation
Search string
Limit uint
Order ProjectMemberOrder
OrderDirection OrderDirection
Offset uint64
PageCount uint
CurrentPage uint
TotalCount uint64
}
// ProjectMemberOrder is used for querying project members in specified order.
type ProjectMemberOrder int8
const (
// Name indicates that we should order by full name.
Name ProjectMemberOrder = 1
// Email indicates that we should order by email.
Email ProjectMemberOrder = 2
// Created indicates that we should order by created date.
Created ProjectMemberOrder = 3
)