code: func (db *Database) buildSelect() string {
  	if len(db.tables) == 0 {
  		db.panicLog("Please set a table with Model [ + Joins ]")
  	}
  
  	var query bytes.Buffer
  	query.WriteString(db.buildCTE())
  
  	// Select
  	var fields string
  	query.WriteString("SELECT ")
  	if len(db.selectFields) > 0 {
  		fields = db.selectFields
  	}
  
  	query.WriteString(fields)
  	query.WriteString(" FROM ")
  	// Model && Join
  
  	query.WriteString(strings.Join(db.tables, ","))
  	query.WriteString(" ")
  
  	// Join (optional)
  	if len(db.joinTables) > 0 {
  		query.WriteString(strings.Join(db.joinTables, " "))
  		query.WriteString(" ")
  	}
  
  	// Where (optional)
  	if len(db.whereFields) > 0 {
  		query.WriteString(db.buildWhere())
  	}
  
  	// Order (optional)
  	if db.order != "" {
  		query.WriteString(" ORDER BY ")
  		query.WriteString(db.order)
  	}
  
  	// Limit (optional)
  	if db.limit != 0 {
  		query.WriteString(" LIMIT ")
  		query.WriteString(strconv.Itoa(db.limit))
  	}
  
  	// Offset (optional)
  	if db.offset != 0 {
  		query.WriteString(" OFFSET ")
  		query.WriteString(strconv.Itoa(db.offset))
  	}
  
  	query.WriteString(";")
  	qs := query.String()
  	db.printLog(qs)
  	return qs
  }
docs: // buildSelect returns the generated SQL. Panics if it can't generate a query