condition.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package core
  2. // 条件接口
  3. type Condition interface {
  4. Fields() []string
  5. Match(row []byte, table *Table) bool
  6. }
  7. // ========== 查询操作 ==========
  8. /*
  9. // 简单查询
  10. rows, err := table.Query().
  11. Select("id", "name", "age").
  12. Where(Eq("status", uint64(1), types.FieldType_8byte)).
  13. OrderBy("age", true). // 降序
  14. Limit(10).
  15. Offset(20).
  16. Find()
  17. // 聚合查询
  18. count, err := table.Query().
  19. Where(Gt("age", uint64(18), types.FieldType_8byte)).
  20. Count()
  21. sum, err := table.Query().
  22. Where(Eq("status", uint64(1), types.FieldType_8byte)).
  23. Sum("score")
  24. maxAge, err := table.Query().
  25. Where(Eq("class", uint64(1), types.FieldType_8byte)).
  26. Max("age")
  27. // 分组查询
  28. result, err := table.Query().
  29. Select("class", "AVG(score)").
  30. GroupBy("class").
  31. Having(Gt("AVG(score)", float64(80), types.FieldType_8byte)).
  32. Find()
  33. // ========== 更新操作 ==========
  34. affected, err := table.Update().
  35. Set("name", []byte("李四")).
  36. Set("age", uint64(26)).
  37. Where(Eq("id", uint64(1), types.FieldType_8byte)).
  38. Exec()
  39. // ========== 删除操作 ==========
  40. affected, err := table.Delete().
  41. Where(And(
  42. Lt("created_at", uint64(time.Now().Unix()), types.FieldType_8byte),
  43. Eq("status", uint64(0), types.FieldType_8byte),
  44. )).
  45. Exec()
  46. // ========== 插入操作 ==========
  47. rowID, err := table.Insert().
  48. Set("id", uint64(1), types.FieldType_8byte).
  49. Set("name", []byte("张三"), types.FieldType_256byte).
  50. Set("age", uint64(25), types.FieldType_8byte).
  51. Exec() */