taxonomy

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 19, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CreateTaxonomyInput added in v0.4.0

type CreateTaxonomyInput struct {
	Name     string       `json:"name"`
	Code     string       `json:"code"`
	Type     string       `json:"type"`
	Metadata mdk.Metadata `json:"metadata"`
}

type CreateTaxonomyTermInput added in v0.4.0

type CreateTaxonomyTermInput struct {
	TaxonomyID  string       `json:"taxonomyId"`
	ParentID    *string      `json:"parentId"`
	Name        string       `json:"name"`
	Slug        string       `json:"slug"`
	Description *string      `json:"description"`
	SEO         *SEOInput    `json:"seo"`
	Metadata    mdk.Metadata `json:"metadata"`
}

type LinkResourceInput added in v0.4.0

type LinkResourceInput struct {
	TermID       string `json:"termId"`
	ResourceID   string `json:"resourceId"`
	ResourceType string `json:"resourceType"`
}

type Module

type Module struct {
	// contains filtered or unexported fields
}

Module implements the mdk.Module interface for Taxonomy.

func NewModule

func NewModule() *Module

NewModule creates a new instance of the taxonomy module.

func (*Module) CreateTaxonomy added in v0.4.0

func (m *Module) CreateTaxonomy(ctx context.Context, input CreateTaxonomyInput) (*Taxonomy, error)

CreateTaxonomy inserts a new taxonomy record.

func (*Module) CreateTaxonomyStep added in v0.4.0

func (m *Module) CreateTaxonomyStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) CreateTaxonomyTerm added in v0.4.0

func (m *Module) CreateTaxonomyTerm(ctx context.Context, input CreateTaxonomyTermInput) (*TaxonomyTerm, error)

CreateTaxonomyTerm inserts a new taxonomy term.

func (*Module) CreateTermStep added in v0.4.0

func (m *Module) CreateTermStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) FieldResolvers added in v0.4.0

func (m *Module) FieldResolvers() map[string]any

FieldResolvers exposes custom field-level resolvers.

func (*Module) GetResourceIdsForTerm added in v0.4.0

func (m *Module) GetResourceIdsForTerm(ctx context.Context, termID string, resourceType string) ([]string, error)

GetResourceIdsForTerm lists all associated resource IDs of a type linked to a term.

func (*Module) GetTaxonomy added in v0.4.0

func (m *Module) GetTaxonomy(ctx context.Context, code string) (*Taxonomy, error)

GetTaxonomy fetches a taxonomy by its unique code.

func (*Module) GetTaxonomyByCodeStep added in v0.4.0

func (m *Module) GetTaxonomyByCodeStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) GetTerm added in v0.4.0

func (m *Module) GetTerm(ctx context.Context, slug string) (*TaxonomyTerm, error)

GetTerm fetches an individual term by its unique slug.

func (*Module) GetTermBySlugStep added in v0.4.0

func (m *Module) GetTermBySlugStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) GetTermTree added in v0.4.0

func (m *Module) GetTermTree(ctx context.Context, taxonomyID string) ([]*TaxonomyTerm, error)

GetTermTree retrieves the hierarchical term tree structure under a taxonomy.

func (*Module) GetTermTreeStep added in v0.4.0

func (m *Module) GetTermTreeStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) GetTermsForResource added in v0.4.0

func (m *Module) GetTermsForResource(ctx context.Context, resourceID string, resourceType string) ([]*TaxonomyTerm, error)

GetTermsForResource retrieves all terms associated with a polymorphic resource.

func (*Module) ID

func (m *Module) ID() string

ID returns the unique identifier for the taxonomy module.

func (*Module) Init

func (m *Module) Init(ctx context.Context, rt mdk.Runtime) error

Init initializes the repository and database connections.

func (*Module) LinkResource added in v0.4.0

func (m *Module) LinkResource(ctx context.Context, input LinkResourceInput) (bool, error)

LinkResource connects a term to a resource.

func (*Module) LinkStep added in v0.4.0

func (m *Module) LinkStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) ListResources

func (m *Module) ListResources(ctx context.Context) ([]mdk.MCPResource, error)

ListResources implements MCP list resources.

func (*Module) ListTaxonomies added in v0.4.0

func (m *Module) ListTaxonomies(ctx context.Context) ([]*Taxonomy, error)

ListTaxonomies lists all available taxonomies.

func (*Module) ListTaxonomiesStep added in v0.4.0

func (m *Module) ListTaxonomiesStep(sCtx mdk.StepContext) mdk.StepResult

func (*Module) Models

func (m *Module) Models() []any

Models returns instances of the taxonomy database schemas to migrate.

func (*Module) Mutations added in v0.4.0

func (m *Module) Mutations() map[string]any

Mutations exposes resolver mutation maps.

func (*Module) Queries added in v0.4.0

func (m *Module) Queries() map[string]any

Queries exposes resolver query maps.

func (*Module) ReadResource

func (m *Module) ReadResource(ctx context.Context, uri string) (string, error)

ReadResource implements MCP read resource.

func (*Module) Repo

func (m *Module) Repo() *Repository

Repo returns the taxonomy repository.

func (*Module) Routes

func (m *Module) Routes() []mdk.Route

Routes returns HTTP endpoints (none for this module).

func (*Module) Shutdown

func (m *Module) Shutdown(ctx context.Context) error

Shutdown performs cleanups when shutting down hyperrr.

func (*Module) UnlinkResource added in v0.4.0

func (m *Module) UnlinkResource(ctx context.Context, input UnlinkResourceInput) (bool, error)

UnlinkResource removes the resource connection.

type Repository

type Repository struct {
	// contains filtered or unexported fields
}

Repository handles database queries for Taxonomy, TaxonomyTerm, and TaxonomyRelation.

func NewRepository

func NewRepository(db *gorm.DB) *Repository

NewRepository creates a new taxonomy repository.

func (*Repository) CreateTaxonomy

func (r *Repository) CreateTaxonomy(ctx context.Context, t *Taxonomy) error

CreateTaxonomy inserts a new taxonomy record.

func (*Repository) CreateTerm

func (r *Repository) CreateTerm(ctx context.Context, term *TaxonomyTerm) error

CreateTerm inserts a new taxonomy term.

func (*Repository) GetResourceIDsForTerm

func (r *Repository) GetResourceIDsForTerm(ctx context.Context, termID, resourceType string) ([]string, error)

GetResourceIDsForTerm retrieves all resource IDs of a specific type linked to a term.

func (*Repository) GetTaxonomyByCode

func (r *Repository) GetTaxonomyByCode(ctx context.Context, code string) (*Taxonomy, error)

GetTaxonomyByCode retrieves a taxonomy by its unique code.

func (*Repository) GetTermBySlug

func (r *Repository) GetTermBySlug(ctx context.Context, slug string) (*TaxonomyTerm, error)

GetTermBySlug retrieves a taxonomy term by its slug.

func (*Repository) GetTermTree

func (r *Repository) GetTermTree(ctx context.Context, taxonomyID string) ([]TaxonomyTerm, error)

GetTermTree builds and retrieves the nested terms hierarchy for a taxonomy.

func (*Repository) GetTermsForResource

func (r *Repository) GetTermsForResource(ctx context.Context, resourceID, resourceType string) ([]TaxonomyTerm, error)

GetTermsForResource retrieves all terms linked to a resource.

func (*Repository) LinkResource

func (r *Repository) LinkResource(ctx context.Context, termID, resourceID, resourceType string) error

LinkResource associates a resource with a taxonomy term.

func (*Repository) ListTaxonomies

func (r *Repository) ListTaxonomies(ctx context.Context) ([]Taxonomy, error)

ListTaxonomies returns all taxonomies in the database.

func (*Repository) UnlinkResource

func (r *Repository) UnlinkResource(ctx context.Context, termID, resourceID, resourceType string) error

UnlinkResource removes the association between a resource and a taxonomy term.

type SEOInput added in v0.4.0

type SEOInput struct {
	MetaTitle       *string `json:"metaTitle"`
	MetaDescription *string `json:"metaDescription"`
	MetaKeywords    *string `json:"metaKeywords"`
	MetaImage       *string `json:"metaImage"`
}

type Taxonomy

type Taxonomy struct {
	ID        string         `gorm:"primaryKey" json:"id"`
	Name      string         `gorm:"not null" json:"name"`
	Code      string         `gorm:"uniqueIndex;not null" json:"code"`
	Type      string         `json:"type"` // e.g. "category", "tag", "collection", "brand"
	Metadata  mdk.Metadata   `gorm:"type:text" json:"metadata"`
	Terms     []TaxonomyTerm `gorm:"foreignKey:TaxonomyID;constraint:OnDelete:CASCADE" json:"terms"`
	CreatedAt time.Time      `json:"created_at"`
	UpdatedAt time.Time      `json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
}

Taxonomy represents a decoupled categorization system (e.g., categories, tags, collections, brands).

func (*Taxonomy) BeforeCreate

func (t *Taxonomy) BeforeCreate(tx *gorm.DB) error

type TaxonomyRelation

type TaxonomyRelation struct {
	TermID       string `gorm:"primaryKey" json:"term_id"`
	ResourceID   string `gorm:"primaryKey" json:"resource_id"`
	ResourceType string `gorm:"primaryKey" json:"resource_type"` // e.g. "product", "page", "post"
}

TaxonomyRelation creates a polymorphic link between a term and any other entity (e.g. product).

type TaxonomyTerm

type TaxonomyTerm struct {
	ID          string         `gorm:"primaryKey" json:"id"`
	TaxonomyID  string         `gorm:"index;not null" json:"taxonomy_id"`
	ParentID    *string        `gorm:"index" json:"parent_id"`
	Name        string         `gorm:"not null" json:"name"`
	Slug        string         `gorm:"uniqueIndex;not null" json:"slug"`
	Description string         `json:"description"`
	SEO         seo.SEO        `gorm:"embedded;embeddedPrefix:seo_"`
	Metadata    mdk.Metadata   `gorm:"type:text" json:"metadata"`
	CreatedAt   time.Time      `json:"created_at"`
	UpdatedAt   time.Time      `json:"updated_at"`
	DeletedAt   gorm.DeletedAt `gorm:"index" json:"-"`

	Children []TaxonomyTerm `gorm:"foreignKey:ParentID" json:"children,omitempty"`
}

TaxonomyTerm represents an individual hierarchical term inside a Taxonomy.

func (*TaxonomyTerm) BeforeCreate

func (tt *TaxonomyTerm) BeforeCreate(tx *gorm.DB) error

type UnlinkResourceInput added in v0.4.0

type UnlinkResourceInput struct {
	TermID       string `json:"termId"`
	ResourceID   string `json:"resourceId"`
	ResourceType string `json:"resourceType"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL