model

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2025 License: Apache-2.0 Imports: 5 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 {
	Name        string               // Go field name
	Type        reflect.Type         // Go type
	DBName      string               // DynamoDB attribute name
	Index       int                  // Field index in struct
	Tags        map[string]string    // Parsed tags
	IsPK        bool                 // Is partition key
	IsSK        bool                 // Is sort key
	IsVersion   bool                 // Is version field
	IsTTL       bool                 // Is TTL field
	IsCreatedAt bool                 // Is created_at field
	IsUpdatedAt bool                 // Is updated_at field
	IsSet       bool                 // Should be stored as DynamoDB set
	OmitEmpty   bool                 // Omit if empty
	IndexInfo   map[string]IndexRole // Index participation
}

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
	TableName      string
	PrimaryKey     *KeySchema
	Indexes        []IndexSchema
	Fields         map[string]*FieldMetadata
	FieldsByDBName map[string]*FieldMetadata
	VersionField   *FieldMetadata
	TTLField       *FieldMetadata
	CreatedAtField *FieldMetadata
	UpdatedAtField *FieldMetadata
}

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