Skip to content

Commit

Permalink
docs: move ARCHITECTURE.md to architecture.rst
Browse files Browse the repository at this point in the history
  • Loading branch information
steve-chavez committed Apr 10, 2024
1 parent 4428253 commit c913681
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 53 deletions.
52 changes: 0 additions & 52 deletions ARCHITECTURE.md

This file was deleted.

63 changes: 63 additions & 0 deletions docs/explanations/architecture.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
Architecture
############

This page describes the architecture of PostgREST.

Bird's Eye View
===============

.. image:: ../_static/arch.png

Code Map
========

This section talks briefly about various important modules.

The starting points of the program are:

- `Main.hs <https://github.com/PostgREST/postgrest/blob/main/main/Main.hs>`_
- `CLI.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/CLI.hs>`_
- `App.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/App.hs>`_

``App.hs`` is then in charge of composing the different modules.

Auth
----

`Auth.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Auth.hs>`_ is in charge of :ref:`authn`.

Api Request
-----------

`ApiRequest.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/ApiRequest.hs>`_ is in charge of parsing the URL query string (following PostgREST syntax), the request headers, and the request body.

A request might be rejected at this level if it's invalid. For example when providing an unknown media type to PostgREST or using an unknown HTTP method.

Plan
----

Using the Schema Cache, `Plan.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Plan.hs>`_ fills in out-of-band SQL details (like an ``ON CONFLICT (pk)`` clause) required to complete the user request.

A request might be rejected at this level if it's invalid. For example when doing resource embedding on a nonexistent resource.

Query
-----

`Query.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Query.hs>`_ generates the SQL queries (parametrized and prepared) required to satisfy the user request.

Only at this stage a connection from the pool might be used.

Schema Cache
------------

`SchemaCache.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/SchemaCache.hs>`_ is in charge of :ref:`schema_cache`.

Config
------

`Config.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Config.hs>`_ is in charge of :ref:`configuration`.

Admin
-----

`Admin.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Admin.hs>`_ is in charge of the :ref:`admin_server`.
2 changes: 1 addition & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ Technical references for PostgREST's functionality.
references/errors.rst
references/configuration.rst
references/observability.rst
references/health_check.rst
references/*

Explanations
------------
Expand Down
1 change: 1 addition & 0 deletions docs/postgrest.dict
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ OpenAPI
openapi
ORM
ov
parametrized
passphrase
PBKDF
PgBouncer
Expand Down

0 comments on commit c913681

Please sign in to comment.