github.com/RevenueMonster/sqlike@v1.0.6/sqlike/actions/find_one.go (about) 1 package actions 2 3 import ( 4 "strings" 5 6 "github.com/RevenueMonster/sqlike/sql/expr" 7 ) 8 9 // SelectOneStatement : 10 type SelectOneStatement interface { 11 Distinct() SelectOneStatement 12 Select(fields ...interface{}) SelectOneStatement 13 From(values ...string) SelectOneStatement 14 Where(fields ...interface{}) SelectOneStatement 15 Having(fields ...interface{}) SelectOneStatement 16 GroupBy(fields ...interface{}) SelectOneStatement 17 OrderBy(fields ...interface{}) SelectOneStatement 18 } 19 20 // FindOneActions : 21 type FindOneActions struct { 22 FindActions 23 } 24 25 // Select : 26 func (act *FindOneActions) Select(fields ...interface{}) SelectOneStatement { 27 act.Projections = fields 28 return act 29 } 30 31 // Distinct : 32 func (act *FindOneActions) Distinct() SelectOneStatement { 33 act.DistinctOn = true 34 return act 35 } 36 37 // From : 38 func (act *FindOneActions) From(values ...string) SelectOneStatement { 39 length := len(values) 40 if length == 0 { 41 panic("empty table name") 42 } 43 if length > 0 { 44 act.Table = strings.TrimSpace(values[0]) 45 } 46 if length > 1 { 47 act.Database = strings.TrimSpace(values[0]) 48 act.Table = strings.TrimSpace(values[1]) 49 } 50 return act 51 } 52 53 // Where : 54 func (act *FindOneActions) Where(fields ...interface{}) SelectOneStatement { 55 act.Conditions = expr.And(fields...) 56 return act 57 } 58 59 // Having : 60 func (act *FindOneActions) Having(fields ...interface{}) SelectOneStatement { 61 act.Havings = expr.And(fields...) 62 return act 63 } 64 65 // OrderBy : 66 func (act *FindOneActions) OrderBy(fields ...interface{}) SelectOneStatement { 67 act.Sorts = fields 68 return act 69 } 70 71 // GroupBy : 72 func (act *FindOneActions) GroupBy(fields ...interface{}) SelectOneStatement { 73 act.GroupBys = fields 74 return act 75 }