1
0

dialect.go 833 B

1234567891011121314151617181920212223242526272829303132
  1. package database
  2. import "fmt"
  3. func JSONClientsFromInbound() string {
  4. if IsPostgres() {
  5. return "FROM inbounds, jsonb_array_elements(inbounds.settings::jsonb -> 'clients') AS client(value)"
  6. }
  7. return "FROM inbounds, JSON_EACH(JSON_EXTRACT(inbounds.settings, '$.clients')) AS client"
  8. }
  9. func JSONFieldText(expr, key string) string {
  10. if IsPostgres() {
  11. return fmt.Sprintf("(%s ->> '%s')", expr, key)
  12. }
  13. return fmt.Sprintf("TRIM(JSON_EXTRACT(%s, '$.%s'), '\"')", expr, key)
  14. }
  15. func GreatestExpr(a, b string) string {
  16. if IsPostgres() {
  17. return fmt.Sprintf("GREATEST(%s::bigint, %s::bigint)", a, b)
  18. }
  19. return fmt.Sprintf("MAX(%s, %s)", a, b)
  20. }
  21. func ClientTrafficEnableMergeExpr() string {
  22. if IsPostgres() {
  23. return "CASE WHEN ?::boolean THEN enable::boolean ELSE false END"
  24. }
  25. return "CASE WHEN ? THEN enable ELSE 0 END"
  26. }