| 263 | } |
| 264 | |
| 265 | func (q *Query) Build() (error, string) { |
| 266 | |
| 267 | if q.Err != nil { |
| 268 | return q.Err, "" |
| 269 | } |
| 270 | |
| 271 | sql := new(strings.Builder) |
| 272 | sql.WriteString("SELECT ") |
| 273 | |
| 274 | if q.SelectColumns.Len() > 0 { |
| 275 | sql.WriteString(q.SelectColumns.String()) |
| 276 | } |
| 277 | |
| 278 | if q.TableName == "" { |
| 279 | return fmt.Errorf("%w", errors.New("table name found")), "" |
| 280 | } |
| 281 | |
| 282 | sql.WriteString(fmt.Sprintf(" FROM %s", q.TableName)) |
| 283 | |
| 284 | if q.ConditionSQL.Len() > 0 { |
| 285 | sql.WriteString(" WHERE ") |
| 286 | sql.WriteString(q.ConditionSQL.String()) |
| 287 | } |
| 288 | |
| 289 | if q.OrderBySQL.Len() > 0 { |
| 290 | sql.WriteString(" ORDER BY ") |
| 291 | sql.WriteString(q.OrderBySQL.String()) |
| 292 | } |
| 293 | |
| 294 | if q.SQLLimit.Len() > 0 { |
| 295 | sql.WriteString(" LIMIT ") |
| 296 | sql.WriteString(q.SQLLimit.String()) |
| 297 | } |
| 298 | |
| 299 | return nil, sql.String() |
| 300 | } |
| 301 | |
| 302 | func (q *Query) String() string { |
| 303 | err, s := q.Build() |