refactor: account model overhaul

This commit is contained in:
2026-01-01 18:29:52 +00:00
parent ad7d7c6a1b
commit 88492dd876
49 changed files with 1559 additions and 573 deletions

View File

@@ -0,0 +1,31 @@
package organization
import (
"time"
"github.com/google/uuid"
"github.com/uptrace/bun"
)
type Kind string
const (
KindPersonal Kind = "personal"
KindTeam Kind = "team"
)
type Organization struct {
bun.BaseModel `bun:"organizations" swaggerignore:"true"`
ID uuid.UUID `bun:",pk,type:uuid" json:"id"`
Kind Kind `bun:"kind,notnull" json:"kind" example:"personal"`
Name string `bun:"name,notnull" json:"name" example:"Personal"`
CreatedAt time.Time `bun:"created_at,notnull,nullzero" json:"createdAt"`
UpdatedAt time.Time `bun:"updated_at,notnull,nullzero" json:"updatedAt"`
}
func newOrganizationID() (uuid.UUID, error) {
return uuid.NewV7()
}

View File

@@ -0,0 +1,44 @@
package organization
import (
"context"
"github.com/google/uuid"
"github.com/uptrace/bun"
)
type Service struct{}
func NewService() *Service {
return &Service{}
}
func (s *Service) CreatePersonalOrganization(ctx context.Context, db bun.IDB, name string) (*Organization, error) {
id, err := newOrganizationID()
if err != nil {
return nil, err
}
org := &Organization{
ID: id,
Kind: KindPersonal,
Name: name,
}
_, err = db.NewInsert().Model(org).Returning("*").Exec(ctx)
if err != nil {
return nil, err
}
return org, nil
}
func (s *Service) OrganizationByID(ctx context.Context, db bun.IDB, id uuid.UUID) (*Organization, error) {
var org Organization
err := db.NewSelect().Model(&org).Where("id = ?", id).Scan(ctx)
if err != nil {
return nil, err
}
return &org, nil
}