mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
59 lines
1.8 KiB
Go
59 lines
1.8 KiB
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type TeamMembership struct {
|
|
ID uuid.UUID `gorm:"primary_key;column:id;type:char;size:36;" json:"id"`
|
|
|
|
TeamID uuid.UUID `gorm:"column:teamId;type:char;size:36;" json:"teamId"`
|
|
UserID uuid.UUID `gorm:"column:userId;type:char;size:36;" json:"userId"`
|
|
Role TeamMembershipRole `gorm:"column:role;type:varchar;size:255;" json:"role"`
|
|
SubscriptionID uuid.UUID `gorm:"column:subscriptionId;type:char;size:36;" json:"subscriptionId"`
|
|
|
|
CreationTime VarcharTime `gorm:"column:creationTime;type:varchar;size:255;" json:"creationTime"`
|
|
// Read-only (-> property).
|
|
LastModified time.Time `gorm:"->:column:_lastModified;type:timestamp;default:CURRENT_TIMESTAMP(6);" json:"_lastModified"`
|
|
|
|
// deleted column is reserved for use by db-sync
|
|
_ bool `gorm:"column:deleted;type:tinyint;default:0;" json:"deleted"`
|
|
}
|
|
|
|
// TableName sets the insert table name for this struct type
|
|
func (d *TeamMembership) TableName() string {
|
|
return "d_b_team_membership"
|
|
}
|
|
|
|
type TeamMembershipRole string
|
|
|
|
const (
|
|
TeamMembershipRole_Owner = TeamMembershipRole("owner")
|
|
TeamMembershipRole_Member = TeamMembershipRole("member")
|
|
)
|
|
|
|
func ListTeamMembershipsForUserIDs(ctx context.Context, conn *gorm.DB, userIDs []uuid.UUID) ([]TeamMembership, error) {
|
|
if len(userIDs) == 0 {
|
|
return nil, nil
|
|
}
|
|
|
|
var memberships []TeamMembership
|
|
tx := conn.WithContext(ctx).
|
|
Where("userId IN ?", userIDs).
|
|
Find(&memberships)
|
|
if tx.Error != nil {
|
|
return nil, fmt.Errorf("failed to list team memberships for user IDs: %w", tx.Error)
|
|
}
|
|
|
|
return memberships, nil
|
|
}
|