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  }