Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/akoutmos/sql_fmt
Format and pretty print SQL queries
https://github.com/akoutmos/sql_fmt
ecto elixir rust sql
Last synced: 6 days ago
JSON representation
Format and pretty print SQL queries
- Host: GitHub
- URL: https://github.com/akoutmos/sql_fmt
- Owner: akoutmos
- License: mit
- Created: 2024-10-05T01:23:04.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2024-11-05T03:24:41.000Z (3 months ago)
- Last Synced: 2025-01-17T13:08:56.500Z (13 days ago)
- Topics: ecto, elixir, rust, sql
- Language: Elixir
- Homepage: https://hex.pm/packages/sql_fmt
- Size: 133 KB
- Stars: 53
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
Format and pretty print SQL queries
# Contents
- [Installation](#installation)
- [Example Output](#example-output)
- [Mix Formatter](#mix-formatter)
- [Supporting SqlFmt](#supporting-sqlfmt)
- [Attribution](#attribution)## Installation
[Available in Hex](https://hex.pm/packages/sql_fmt), the package can be installed by adding `sql_fmt` to your list of
dependencies in `mix.exs`:```elixir
def deps do
[
{:sql_fmt, "~> 0.3.0"}
]
end
```Documentation can be found at [https://hexdocs.pm/sql_fmt](https://hexdocs.pm/sql_fmt).
## Example Output
After setting up SqlFmt in your application you can use the SqlFmt functions in order to format queries. Here are a
couple examples of queries with having parameters inline and with passing in the parameters separately:```elixir
iex(1)> {:ok, formatted_sql} = SqlFmt.format_query("select * from businesses where id in ('c6f5c5f1-a1fc-4c9a-91f7-6aa40f1e233d', 'f339d4ce-96b6-4440-a541-28a0fb611139');")
{:ok, "SELECT\n *\nFROM\n businesses\nWHERE\n id IN (\n 'c6f5c5f1-a1fc-4c9a-91f7-6aa40f1e233d',\n 'f339d4ce-96b6-4440-a541-28a0fb611139'\n );"}iex(2)> IO.puts(formatted_sql)
SELECT
*
FROM
businesses
WHERE
id IN (
'c6f5c5f1-a1fc-4c9a-91f7-6aa40f1e233d',
'f339d4ce-96b6-4440-a541-28a0fb611139'
);
:ok
``````elixir
iex(1)> {:ok, formatted_sql} = SqlFmt.format_query_with_params("select * from help where help.\"col\" in $1;", ["'asdf'"])
{:ok, "SELECT\n *\nFROM\n help\nWHERE\n help.\"col\" IN 'asdf';"}iex(2)> IO.puts(formatted_sql)
SELECT
*
FROM
help
WHERE
help."col" IN 'asdf';
:ok
```Be sure to checkout the HexDocs as you can also provide formatting options to the functions to tailor the output to your
liking.## Mix Formatter
SqlFmt also provides you with the `~SQL` sigil that can be used to format SQL via Mix Formatter plugin. To set up the
Mix Formatter plugin, simply install this package and add update your `.formatter.exs` file as follows:```elixir
[
plugins: [SqlFmt.MixFormatter],
inputs: ["**/*.sql"],
# ...
]
```With this configuration, the SqlFmt Mix Format plugin will now format all `~SQL` sigils and all files ending in `.sql`.
This can be particularly useful in Ecto migrations where you have large `execute` statements and you want to make sure
that your code is readable. Check out the `SqlFmt.MixFormatter` module docs for more information.## Supporting SqlFmt
If you rely on this library help you debug your Ecto/SQL queries, it would much appreciated if you can give back
to the project in order to help ensure its continued development.Checkout my [GitHub Sponsorship page](https://github.com/sponsors/akoutmos) if you want to help out!
### Gold Sponsors
### Silver Sponsors
### Bronze Sponsors
## Attribution
- The logo for the project is an edited version of an SVG image from the [unDraw project](https://undraw.co/).
- The SqlFmt library leans on the Rust library [sqlformat-rs](https://github.com/shssoichiro/sqlformat-rs) for SQL
statement formatting.