Files
b0esche_cloud/go_cloud/internal/org/org.go
2025-12-18 00:02:50 +01:00

41 lines
1.1 KiB
Go

package org
import (
"context"
"go.b0esche.cloud/backend/internal/database"
"github.com/google/uuid"
)
// ResolveUserOrgs returns the organizations a user belongs to
func ResolveUserOrgs(ctx context.Context, db *database.DB, userID uuid.UUID) ([]database.Organization, error) {
return db.GetUserOrganizations(ctx, userID)
}
// CheckMembership checks if user is member of org and returns role
func CheckMembership(ctx context.Context, db *database.DB, userID, orgID uuid.UUID) (string, error) {
membership, err := db.GetUserMembership(ctx, userID, orgID)
if err != nil {
return "", err
}
return membership.Role, nil
}
// CreateOrg creates a new organization and adds the user as owner
func CreateOrg(ctx context.Context, db *database.DB, userID uuid.UUID, name, slug string) (*database.Organization, error) {
if slug == "" {
// Simple slug generation
slug = name // TODO: make URL safe
}
org, err := db.CreateOrg(ctx, name, slug)
if err != nil {
return nil, err
}
err = db.AddMembership(ctx, userID, org.ID, "owner")
if err != nil {
return nil, err
}
return org, nil
}