github.com/RevenueMonster/sqlike@v1.0.6/sql/dialect/mysql/select.go (about) 1 package mysql 2 3 import ( 4 sqlstmt "github.com/RevenueMonster/sqlike/sql/stmt" 5 "github.com/RevenueMonster/sqlike/sqlike/actions" 6 "github.com/RevenueMonster/sqlike/sqlike/options" 7 ) 8 9 // Select : 10 func (ms *MySQL) Select(stmt sqlstmt.Stmt, f *actions.FindActions, lck options.LockMode) (err error) { 11 err = ms.parser.BuildStatement(stmt, f) 12 if err != nil { 13 return 14 } 15 switch lck { 16 case options.LockForUpdate: 17 stmt.WriteString(" FOR UPDATE") 18 case options.LockForRead: 19 stmt.WriteString(" LOCK IN SHARE MODE") 20 } 21 stmt.WriteByte(';') 22 return 23 } 24 25 // SelectStmt : 26 func (ms *MySQL) SelectStmt(stmt sqlstmt.Stmt, query interface{}) (err error) { 27 err = ms.parser.BuildStatement(stmt, query) 28 stmt.WriteByte(';') 29 return 30 } 31 32 func buildStatement(stmt sqlstmt.Stmt, parser *sqlstmt.StatementBuilder, f interface{}) error { 33 if err := parser.BuildStatement(stmt, f); err != nil { 34 return err 35 } 36 stmt.WriteByte(';') 37 return nil 38 }