package orm
import (
)
type CreateCompositeOptions struct {
Varchar int
}
type CreateCompositeQuery struct {
q *Query
opt *CreateCompositeOptions
}
var (
_ QueryAppender = (*CreateCompositeQuery)(nil)
_ QueryCommand = (*CreateCompositeQuery)(nil)
)
func ( *Query, *CreateCompositeOptions) *CreateCompositeQuery {
return &CreateCompositeQuery{
q: ,
opt: ,
}
}
func ( *CreateCompositeQuery) () string {
, := .AppendQuery(defaultFmter, nil)
if != nil {
panic()
}
return string()
}
func ( *CreateCompositeQuery) () QueryOp {
return CreateCompositeOp
}
func ( *CreateCompositeQuery) () QueryCommand {
return &CreateCompositeQuery{
q: .q.Clone(),
opt: .opt,
}
}
func ( *CreateCompositeQuery) () *Query {
return .q
}
func ( *CreateCompositeQuery) ( []byte) ([]byte, error) {
return .AppendQuery(dummyFormatter{}, )
}
func ( *CreateCompositeQuery) ( QueryFormatter, []byte) ([]byte, error) {
if .q.stickyErr != nil {
return nil, .q.stickyErr
}
if .q.tableModel == nil {
return nil, errModelNil
}
:= .q.tableModel.Table()
= append(, "CREATE TYPE "...)
= append(, .Alias...)
= append(, " AS ("...)
for , := range .Fields {
if > 0 {
= append(, ", "...)
}
= append(, .Column...)
= append(, " "...)
if .UserSQLType == "" && .opt != nil && .opt.Varchar > 0 &&
.SQLType == "text" {
= append(, "varchar("...)
= strconv.AppendInt(, int64(.opt.Varchar), 10)
= append(, ")"...)
} else {
= append(, .SQLType...)
}
}
= append(, ")"...)
return , .q.stickyErr
}