diff --git a/apps/backend/internal/drexa/api_integration_test.go b/apps/backend/internal/drexa/api_integration_test.go index 872b139..298b7b8 100644 --- a/apps/backend/internal/drexa/api_integration_test.go +++ b/apps/backend/internal/drexa/api_integration_test.go @@ -142,6 +142,9 @@ func TestRegistrationFlow(t *testing.T) { if login.Organizations[0].Kind != string(organization.KindPersonal) { t.Fatalf("unexpected organization kind: %q", login.Organizations[0].Kind) } + if login.Organizations[0].Slug != organization.ReservedSlug { + t.Fatalf("unexpected personal organization slug: %q", login.Organizations[0].Slug) + } }) t.Run("drives list", func(t *testing.T) { @@ -186,6 +189,9 @@ func TestRegistrationFlow(t *testing.T) { if orgs[0].Kind != string(organization.KindPersonal) { t.Fatalf("unexpected organization kind: %q", orgs[0].Kind) } + if orgs[0].Slug != organization.ReservedSlug { + t.Fatalf("unexpected personal organization slug: %q", orgs[0].Slug) + } }) t.Run("organizations/:orgSlug", func(t *testing.T) { @@ -199,6 +205,9 @@ func TestRegistrationFlow(t *testing.T) { if myOrg.Kind != string(organization.KindPersonal) { t.Fatalf("unexpected personal org kind: %q", myOrg.Kind) } + if myOrg.Slug != organization.ReservedSlug { + t.Fatalf("unexpected personal org slug: %q", myOrg.Slug) + } orgID, err := uuid.NewV7() if err != nil { diff --git a/apps/backend/internal/organization/organization.go b/apps/backend/internal/organization/organization.go index f3a7a42..e94228b 100644 --- a/apps/backend/internal/organization/organization.go +++ b/apps/backend/internal/organization/organization.go @@ -1,6 +1,7 @@ package organization import ( + "encoding/json" "time" "github.com/google/uuid" @@ -26,6 +27,32 @@ type Organization struct { UpdatedAt time.Time `bun:"updated_at,notnull,nullzero" json:"updatedAt"` } +func (o Organization) MarshalJSON() ([]byte, error) { + type organizationJSON struct { + ID uuid.UUID `json:"id"` + Kind Kind `json:"kind"` + Name string `json:"name"` + Slug *string `json:"slug,omitempty"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` + } + + slug := o.Slug + if o.Kind == KindPersonal { + s := ReservedSlug + slug = &s + } + + return json.Marshal(organizationJSON{ + ID: o.ID, + Kind: o.Kind, + Name: o.Name, + Slug: slug, + CreatedAt: o.CreatedAt, + UpdatedAt: o.UpdatedAt, + }) +} + func newOrganizationID() (uuid.UUID, error) { return uuid.NewV7() }