model

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package model provides model registration and metadata management for DynamORM

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FieldMetadata

type FieldMetadata struct {
	Type        reflect.Type
	IndexInfo   map[string]IndexRole
	Tags        map[string]string
	DBName      string
	Name        string
	IndexPath   []int
	Index       int
	IsPK        bool
	IsEncrypted bool
	IsVersion   bool
	IsTTL       bool
	IsCreatedAt bool
	IsUpdatedAt bool
	IsSet       bool
	OmitEmpty   bool
	IsSK        bool
}

FieldMetadata holds metadata for a single field

type IndexRole

type IndexRole struct {
	IndexName string
	IsPK      bool
	IsSK      bool
}

IndexRole represents a field's role in an index

type IndexSchema

type IndexSchema struct {
	Name            string
	Type            IndexType
	PartitionKey    *FieldMetadata
	SortKey         *FieldMetadata
	ProjectionType  string
	ProjectedFields []string
	Sparse          bool
}

IndexSchema represents a GSI or LSI schema

type IndexType

type IndexType string

IndexType represents the type of index

const (
	GlobalSecondaryIndex IndexType = "GSI"
	LocalSecondaryIndex  IndexType = "LSI"
)

type KeySchema

type KeySchema struct {
	PartitionKey *FieldMetadata
	SortKey      *FieldMetadata
}

KeySchema represents a primary key or index key schema

type Metadata

type Metadata struct {
	Type             reflect.Type
	PrimaryKey       *KeySchema
	Fields           map[string]*FieldMetadata
	FieldsByDBName   map[string]*FieldMetadata
	VersionField     *FieldMetadata
	TTLField         *FieldMetadata
	CreatedAtField   *FieldMetadata
	UpdatedAtField   *FieldMetadata
	TableName        string
	Indexes          []IndexSchema
	NamingConvention naming.Convention
}

Metadata holds all metadata for a model

type Registry

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

Registry manages registered models and their metadata

func NewRegistry

func NewRegistry() *Registry

NewRegistry creates a new model registry

func (*Registry) GetMetadata

func (r *Registry) GetMetadata(model any) (*Metadata, error)

GetMetadata retrieves metadata for a model

func (*Registry) GetMetadataByTable

func (r *Registry) GetMetadataByTable(tableName string) (*Metadata, error)

GetMetadataByTable retrieves metadata by table name

func (*Registry) Register

func (r *Registry) Register(model any) error

Register registers a model and parses its metadata

Jump to

Keyboard shortcuts

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