mirror of
https://github.com/get-drexa/drive.git
synced 2026-02-02 19:31:17 +00:00
feat(backend): introduce org namespaced api routes
This commit is contained in:
@@ -2,7 +2,10 @@ package organization
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"errors"
|
||||
|
||||
"github.com/get-drexa/drexa/internal/account"
|
||||
"github.com/google/uuid"
|
||||
"github.com/uptrace/bun"
|
||||
)
|
||||
@@ -37,8 +40,39 @@ func (s *Service) OrganizationByID(ctx context.Context, db bun.IDB, id uuid.UUID
|
||||
var org Organization
|
||||
err := db.NewSelect().Model(&org).Where("id = ?", id).Scan(ctx)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return nil, ErrOrganizationNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &org, nil
|
||||
}
|
||||
|
||||
func (s *Service) OrganizationBySlug(ctx context.Context, db bun.IDB, slug string) (*Organization, error) {
|
||||
var org Organization
|
||||
err := db.NewSelect().Model(&org).Where("lower(slug) = lower(?)", slug).Scan(ctx)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return nil, ErrOrganizationNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &org, nil
|
||||
}
|
||||
|
||||
func (s *Service) PersonalOrganizationForUser(ctx context.Context, db bun.IDB, userID uuid.UUID) (*Organization, error) {
|
||||
var org Organization
|
||||
err := db.NewSelect().Model(&org).
|
||||
Join("JOIN accounts ON accounts.org_id = organization.id").
|
||||
Where("accounts.user_id = ?", userID).
|
||||
Where("accounts.status = ?", account.StatusActive).
|
||||
Where("organization.kind = ?", KindPersonal).
|
||||
Scan(ctx)
|
||||
if err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return nil, ErrOrganizationNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return &org, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user