{"size": 1858, "ext": "scrbl", "max_stars_repo_path": "racket/com-spacetimecat/rackbol/begin.scrbl", "max_stars_repo_name": "edom/work", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "racket/com-spacetimecat/rackbol/begin.scrbl", "max_issues_repo_name": "edom/work", "max_issues_repo_issues_event_min_datetime": "2020-12-02T18:37:37.000Z", "max_issues_repo_issues_event_max_datetime": "2022-02-16T00:55:32.000Z", "max_forks_repo_path": "racket/com-spacetimecat/rackbol/begin.scrbl", "max_forks_repo_name": "edom/work", "max_forks_repo_forks_event_min_datetime": "2018-10-02T15:20:22.000Z", "max_forks_repo_forks_event_max_datetime": "2018-10-02T15:20:22.000Z"}
{"max_stars_count": null, "max_issues_count": 4, "max_forks_count": 1, "avg_line_length": 28.5846153846, "max_line_length": 108, "alphanum_fraction": 0.7524219591}
#lang stc-racket/scribble-manual

@title{Beginning Rackbol}

@section{Rackbol is built on top of Racket}

Here are the reexports of the @racketmodname[rackbol] module.

From @racketmodname[racket/base], we reexport almost everything,
but we shadow @racket[λ].

From @racketmodname[racket/pretty], we reexport @racket[pretty-print].

From @racketmodname[racket/include], we reexport @racket[include].

You can write @emph{fewer parentheses} with @racket[λ], @racket[LET],
and its variants @racket[LET*], @racket[LETREC], and @racket[LETREC*].
But we don't aim to eliminate parentheses completely.
This is just a minor usability enhancement.

@section{Define some storages and tables}

Most values are quasiquoted by default because, in our experience,
most values fed to @racket[DEFINE] are constant literals.

Define some storages and tables.

@racketblock[
    (DEFINE STORAGE pg_1
        TYPE postgresql
        HOST localhost
        PORT 5432
        CATALOG test
        USER test
        PASSWORD test
    )
]

A table lives in a storage.

@section{Define some procedures}

What to do with data.

A procedure should be either a command or a query.

@section{Operate your system}

After you develop a software system, you operate it.

Open your system's operation console by running this, where FILE is the path to your Rackbol file:

@verbatim{
racket -t FILE -m
}

Explore the console by entering "(help)" (without quotes).

Security Problem of the "admin" command:
Because we pass the password to "psql" with the PGPASSWORD environment variable,
the password leaks in the file "/proc/<pid>/environ", which is readable by the user that psql is running as,
which is the user that your Racket interpreter runs as, which is your user.
Thus, practically all other running programs can read the password.
However, we assume that you control your machine.
