2024-12-17 23:28:43 +01:00
# Based
Based is a micro framework providing web dev primitives.
## Features
- User Auth
- PostgresDB Connection
- Logging
- Request Contexts
- Templates (Shell)
## User Auth
To use the user auth feature, make sure a migration has added the following to your PostgresDB:
```sql
CREATE TYPE user_role AS ENUM ('regular', 'admin');
CREATE TABLE IF NOT EXISTS users (
username VARCHAR(255) NOT NULL PRIMARY KEY,
"password" text NOT NULL,
user_role user_role NOT NULL DEFAULT 'regular'
);
CREATE TABLE IF NOT EXISTS user_session (
id UUID NOT NULL PRIMARY KEY DEFAULT gen_random_uuid(),
token text NOT NULL,
"user" varchar(255) NOT NULL,
FOREIGN KEY("user") REFERENCES users(username)
);
```
2024-12-22 18:37:45 +01:00
## HTMX
Based has a route for serving HTMX at `based::htmx::htmx_script_route` which you can include in your rocket `routes!` . The HTMX script will be available at `/assets/htmx.min.js` .
Additionally you can check if a requests originates from HTMX:
```rs
#[get("/")]
pub async fn index(ctx: RequestContext) -> StringRespopnse {
if ctx.is_htmx {
...
} else {
...
}
}
```