based/README.md
2024-12-22 18:37:45 +01:00

1.1 KiB

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:

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)
);

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:

#[get("/")]
pub async fn index(ctx: RequestContext) -> StringRespopnse {
    if ctx.is_htmx {
        ...
    } else {
        ...
    }
}