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 `_ - `CLI.hs `_ - `App.hs `_ ``App.hs`` is then in charge of composing the different modules. Auth ---- `Auth.hs `_ is in charge of :ref:`authn`. Api Request ----------- `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 `_ 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 `_ 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 `_ is in charge of :ref:`schema_cache`. Config ------ `Config.hs `_ is in charge of :ref:`configuration`. Admin ----- `Admin.hs `_ is in charge of the :ref:`admin_server`.