Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

bringing orm-like features to sqlx

License

NotificationsYou must be signed in to change notification settings

NyxCode/ormx

Repository files navigation

lightweight macros forsqlx

Crates.io versionchatdocs.rs docsDownload

getting started

Add ormx and sqlx to yourCargo.toml

[dependencies.ormx]version ="0.11"features = ["postgres"][dependencies.sqlx]version ="0.8"features = ["postgres","runtime-tokio-rustls"]

what does it do?

ormx provides macros for generating commonly used sql queries at compile time.
ormx is meant to be used together with sqlx. Everything it generates usessqlx::query! under the hood, so every generated query will be checked against your database at compile time.

what doesn't it do?

ormx is not a full-fledged ORM nor a query builder. For everything except simple CRUD, you can always just use sqlx.

it is required that every table contains an id column, which uniquelyidentifies a row. probably, you would want to use an auto-incrementing integer for this.this is a central requirement of ormx, and if your table does not fulfill this requirement, ormxis not what you are looking for.

databases

databasecargo feature
PostgreSQLpostgres1
MariaDBmariadb
MySQLmysql2
SQLitecurrently not supported

first, start a postgres database.
if you have docker installed, you can do so using./scripts/postgres.sh.
next, set theDATABASE_URL environment variable:export DATABASE_URL=postgres://postgres:admin@localhost/ormx.
now, insideexample-postgres, use the sqlx cli to setup the database schema:cargo sqlx db setup.
finally, runcargo run.

help

if you encounter an issue or have questions, feel free to ask in#ormx on the sqlx discord.
The documentation currently is not what it should be, so don't be afraid to ask for help.

migrate

to 0.11

v0.11 updated the sqlx dependency to v0.8.
most notably, the semantics of thesqlx::Executor trait have somewhat changed. in most cases, this is fixed by adding a* here or there.

to 0.7

Since 0.7, id columns are not special anymore - if they are generated by the database, you must annotate them with#[ormx(default)].

a note on reborrowing

if you run into the issue that the compiler tells you that you can't re-use a&mut Connection because

  • use of moved value and
  • move occurs because 'con' has type '&mut Connection', which does not implement the 'Copy' trait

you'll have to manually reborrow the connection with&mut *con.

Footnotes

  1. out of these three, thepostgres backend is the most mature.

  2. themysql backenddoes work with both MariaDB and MySQL, though themariadb backend emits cleaner and probably faster queries.


[8]ページ先頭

©2009-2025 Movatter.jp