Skip to content

0.5.0

Choose a tag to compare

@eval eval released this 21 Dec 20:29
· 111 commits to main since this release
3578fd4

What's Changed

πŸ’₯ Breaking Changes

  • πŸ”„ select: keyword argument removed β€” use positional argument instead
    # before
    query.select_all(select: "SELECT * FROM :_")
    # after
    query.select_all("SELECT * FROM :_")

✨ Features

  • 🍾 Add paginate ERB-helper
    SELECT * FROM articles
      <%= paginate(page: 1, per_page: 15) %>
    # SELECT * FROM articles LIMIT 15 OFFSET 0
  • 🧰 Resolve query without extension
    AppQuery[:weekly_sales] loads weekly_sales.sql or weekly_sales.sql.erb.
  • πŸ”— Nested result queries via with_select β€” chain transformations using :_ placeholder to reference the previous result
    active_users = AppQuery("SELECT * FROM users").with_select("SELECT * FROM :_ WHERE active")
    active_users.count("SELECT * FROM :_ WHERE admin")
  • πŸš€ New methods: #column, #ids, #count, #entries β€” efficient shortcuts that only fetch what you need
    query.column(:email)  # SELECT email only
    query.ids             # SELECT id only
    query.count           # SELECT COUNT(*) only
    query.entries         # shorthand for select_all.entries

πŸ› Fixes

  • πŸ”§ Fix leading whitespace in prepend_cte causing parse errors
  • πŸ”§ Fix binds being reset when no placeholders found
  • ⚑ select_one now uses LIMIT 1 for better performance

πŸ“š Documentation

  • πŸ“– Revised README with cleaner intro and examples
  • 🏠 Added example Rails app in examples/demo

Full Diff: 0.4.0...0.5.0
CHANGELOG: 0.5.0