sunboyy/repogen

View on GitHub
internal/spec/models.go

Summary

Maintainability
A
0 mins
Test Coverage
package spec

import "go/types"

// QueryMode one or many
type QueryMode string

// query mode constants
const (
    QueryModeOne  QueryMode = "ONE"
    QueryModeMany QueryMode = "MANY"
)

// MethodSpec is a method specification inside repository specification
type MethodSpec struct {
    Name      string
    Signature *types.Signature
    Operation Operation
}

// Operation is an interface for any kind of operation
type Operation interface {
    Name() string
}

// InsertOperation is a method specification for insert operations
type InsertOperation struct {
    Mode QueryMode
}

// Name returns "Insert" operation name
func (o InsertOperation) Name() string {
    return "Insert"
}

// FindOperation is a method specification for find operations
type FindOperation struct {
    Mode  QueryMode
    Query QuerySpec
    Sorts []Sort
    Limit int
}

// Name returns "Find" operation name
func (o FindOperation) Name() string {
    return "Find"
}

// Sort is a detail of sorting find result
type Sort struct {
    FieldReference FieldReference
    Ordering       Ordering
}

// Ordering is a sort order
type Ordering string

// Ordering constants
const (
    OrderingAscending  = "ASC"
    OrderingDescending = "DESC"
)

// DeleteOperation is a method specification for delete operations
type DeleteOperation struct {
    Mode  QueryMode
    Query QuerySpec
}

// Name returns "Delete" operation name
func (o DeleteOperation) Name() string {
    return "Delete"
}

// CountOperation is a method specification for count operations
type CountOperation struct {
    Query QuerySpec
}

// Name returns "Count" operation name
func (o CountOperation) Name() string {
    return "Count"
}