team.go

 1package backend
 2
 3import (
 4	"context"
 5
 6	"github.com/charmbracelet/soft-serve/pkg/db/models"
 7	"github.com/charmbracelet/soft-serve/pkg/proto"
 8)
 9
10// CreateTeam creates a new team for an organization.
11func (d *Backend) CreateTeam(ctx context.Context, org proto.Org, owner proto.User, name string) (proto.Team, error) {
12	m, err := d.store.CreateTeam(ctx, d.db, owner.ID(), org.ID(), name)
13	if err != nil {
14		return team{}, err
15	}
16	return team{m}, err
17}
18
19// ListTeams lists all teams for a user.
20func (d *Backend) ListTeams(ctx context.Context, user proto.User) ([]proto.Team, error) {
21	teams, err := d.store.ListTeams(ctx, d.db, user.ID())
22	var r []proto.Team
23	for _, m := range teams {
24		r = append(r, team{m})
25	}
26	return r, err
27}
28
29// GetTeam gets a team by organization id and team name.
30func (d *Backend) GetTeam(ctx context.Context, user proto.User, org proto.Org, name string) (proto.Team, error) {
31	m, err := d.store.FindTeamByOrgName(ctx, d.db, user.ID(), org.ID(), name)
32	if err != nil {
33		return team{}, err
34	}
35	return team{m}, err
36}
37
38// FindTeam finds a team by name.
39func (d *Backend) FindTeam(ctx context.Context, user proto.User, name string) ([]proto.Team, error) {
40	m, err := d.store.FindTeamByName(ctx, d.db, user.ID(), name)
41	var r []proto.Team
42	for _, m := range m {
43		r = append(r, team{m})
44	}
45	return r, err
46}
47
48// DeleteTeam deletes a team.
49func (d *Backend) DeleteTeam(ctx context.Context, _ proto.User, team proto.Team) error {
50	return d.store.DeleteTeamByID(ctx, d.db, team.ID())
51}
52
53type team struct {
54	t models.Team
55}
56
57var _ proto.Team = team{}
58
59// ID implements proto.Team.
60func (t team) ID() int64 {
61	return t.t.ID
62}
63
64// Name implements proto.Team.
65func (t team) Name() string {
66	return t.t.Name
67}
68
69// Org implements proto.Team.
70func (t team) Org() int64 {
71	return t.t.OrganizationID
72}