github.com/aacfactory/fns-contrib/databases/sql@v1.2.84/dac/specifications/orders.go (about) 1 package specifications 2 3 import ( 4 "fmt" 5 "github.com/aacfactory/errors" 6 "github.com/aacfactory/fns-contrib/databases/sql/dac/orders" 7 "github.com/valyala/bytebufferpool" 8 "io" 9 ) 10 11 type Orders orders.Orders 12 13 func (o Orders) Render(ctx Context, w io.Writer) (argument []any, err error) { 14 if len(o) == 0 { 15 return 16 } 17 buf := bytebufferpool.Get() 18 defer bytebufferpool.Put(buf) 19 _, _ = buf.Write(ORDER) 20 _, _ = buf.Write(SPACE) 21 _, _ = buf.Write(BY) 22 _, _ = buf.Write(SPACE) 23 for i, order := range o { 24 if i > 0 { 25 _, _ = buf.Write(COMMA) 26 } 27 content, has := ctx.Localization(order.Name) 28 if !has { 29 err = errors.Warning("sql: render order by failed").WithCause(fmt.Errorf("%s was not found", order.Name)) 30 return 31 } 32 _, _ = buf.WriteString(content[0]) 33 if order.Desc { 34 _, _ = buf.Write(SPACE) 35 _, _ = buf.Write(DESC) 36 } 37 } 38 _, err = w.Write([]byte(buf.String())) 39 if err != nil { 40 err = errors.Warning("sql: render order by failed").WithCause(err) 41 return 42 } 43 return 44 }