sql-fun 0.1.0

SQL query/statement execution code generator
Documentation
# sql-fun – SQLs into first-class functions

`sql-fun` turns SQL queries and statements into **first-class functions**.

It assumes that you **can write SQL and want to write SQL**.

It doesn't try to hide SQL behind abstractions or pretend it knows better than your database.
It just makes **SQL fit cleanly into your development workflow** — statically validated, safe, and enjoyable.

If you're looking for an ORM: this isn't it.  
If you're writing raw SQL and want your tools to help more: this is it.

---

✨ For Rust developers, `sql-fun` provides the **best developer experience** by integrating directly with proc-macros to generate strongly typed async functions at compile time.  
For other ecosystems, `sql-fun` can be used as a **stand-alone SQL semantic validator** and linter, and may serve as a backend for language-specific code generators (Go, Python, TypeScript, …).


## What is `sql-fun`

`sql-fun` is a toolchain for executing and validating SQL queries and statements.

- It is designed for **PostgreSQL**:
  - SQL is parsed using `pg_query`, a full PostgreSQL parser.
    - You can use the full range of PostgreSQL syntax with no limitations.
  - All SQL statements are validated statically:
    - SQL syntax validation
    - Schema-aware validation (optional)
- It provides a command-line tool for schema inspection and query analysis:
  - Explore tables, columns, views, etc.
    - Describe objects in your schema without a live database connection.
  - Find queries referencing a specific table or column in your application
    - More reliable than plain text grep.
  - Run SQL syntax and schema-aware checks on standalone SQL files.
- It does not try to model your entire database schema.
  - Instead, it focuses only on what your application actually *does*—the SQL queries it runs.
  - This keeps the tool lightweight, focused, and reliable.
- For Rust developers, `sql-fun` integrates with proc-macros:
  - Generates strongly typed functions at **compile time**.
  - Requires **no runtime dependencies** in your application.
  - Compatible with `tokio-postgres`, the primary runtime `sql-fun` targets.

## Directory structure

- `src` :
  Procedual macro implementations

- `sql-fun-sqlast/` :
  `sql-fun` semantic SQL parser 

- `xbuild/` : (private crate)
  Project internal utility

- `cli/` :
  CLI user utility for `sql-fun`.

- `examples/` :
  various example.

- `book/` :
  User Manual

- `sql-fun-server/` :
  `sql-fun` Backend JSON RPC Server.

- `sql-fun-client/` :
  Client crate for `sql-fun-server`

- `parse_dat/` : (private crate)
  PostgreSQL internal `.dat` file parser CLI tool.

- `postgres/` : (Git submodule)
  PostgreSQL server source code from mirror.

- `docs` :
  Internal documentations for `sql-fun`


## License

`sql-fun` is primarily distributed under the terms of the MIT license, with portions covered by various BSD-like licenses.


## Small Contributions Are Welcome

Even small tools, shell scripts, or one-off experiments are welcome.

For example:

- 🐚 A shell script that processes `sql-fun.develop.toml` to extract table names
- 📋 A `jq` snippet to list all query parameter names
- 📝 A Gist that generates basic test stubs for each query

If it's useful to you, it might be useful to others.  
You can share it in a PR, an issue, or just drop a link in a discussion thread.