repogen/internal/spec/models.go

87 lines
1.6 KiB
Go
Raw Normal View History

package spec
2021-01-19 12:26:26 +00:00
import (
"github.com/sunboyy/repogen/internal/code"
)
// 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
Params []code.Param
Returns []code.Type
Operation Operation
}
// Operation is an interface for any kind of operation
type Operation interface {
2021-02-14 04:48:09 +00:00
Name() string
}
2021-02-01 14:39:20 +00:00
// InsertOperation is a method specification for insert operations
type InsertOperation struct {
Mode QueryMode
}
2021-02-14 04:48:09 +00:00
// 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
}
2021-02-14 04:48:09 +00:00
// 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"
)
2021-01-26 13:23:52 +00:00
// DeleteOperation is a method specification for delete operations
type DeleteOperation struct {
Mode QueryMode
Query QuerySpec
}
2021-02-14 04:48:09 +00:00
// Name returns "Delete" operation name
func (o DeleteOperation) Name() string {
return "Delete"
}
2021-02-06 11:05:47 +00:00
// CountOperation is a method specification for count operations
type CountOperation struct {
Query QuerySpec
}
2021-02-14 04:48:09 +00:00
// Name returns "Count" operation name
func (o CountOperation) Name() string {
return "Count"
}