chore: move executable code to src/
src/ now contains all source code - in subdirectories, according to the .cabal component they belong to. This will allow us to put vendored libraries in the same place - and later split our own code into multiple components/libraries as well.
This commit is contained in:
@@ -36,53 +36,53 @@ The starting point of the program is `Main.hs <https://github.com/PostgREST/post
|
|||||||
CLI
|
CLI
|
||||||
---
|
---
|
||||||
|
|
||||||
Main then calls `CLI.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/CLI.hs>`_, which is in charge of :ref:`cli`.
|
Main then calls `CLI.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/CLI.hs>`_, which is in charge of :ref:`cli`.
|
||||||
|
|
||||||
App
|
App
|
||||||
---
|
---
|
||||||
|
|
||||||
`App.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/App.hs>`_ is then in charge of composing the different modules.
|
`App.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/App.hs>`_ is then in charge of composing the different modules.
|
||||||
|
|
||||||
Auth
|
Auth
|
||||||
----
|
----
|
||||||
|
|
||||||
`Auth.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Auth.hs>`_ is in charge of :ref:`authn`.
|
`Auth.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Auth.hs>`_ is in charge of :ref:`authn`.
|
||||||
|
|
||||||
Api Request
|
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.
|
`ApiRequest.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/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.
|
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
|
Plan
|
||||||
----
|
----
|
||||||
|
|
||||||
Using the Schema Cache, `Plan.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Plan.hs>`_ generates an internal AST, filling out-of-band SQL details (like an ``ON CONFLICT (pk)`` clause) required to complete the user request.
|
Using the Schema Cache, `Plan.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Plan.hs>`_ generates an internal AST, filling 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.
|
A request might be rejected at this level if it's invalid. For example when doing resource embedding on a nonexistent resource.
|
||||||
|
|
||||||
Query
|
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.
|
`Query.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/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.
|
Only at this stage a connection from the pool might be used.
|
||||||
|
|
||||||
Schema Cache
|
Schema Cache
|
||||||
------------
|
------------
|
||||||
|
|
||||||
`SchemaCache.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/SchemaCache.hs>`_ is in charge of :ref:`schema_cache`.
|
`SchemaCache.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/SchemaCache.hs>`_ is in charge of :ref:`schema_cache`.
|
||||||
|
|
||||||
Config
|
Config
|
||||||
------
|
------
|
||||||
|
|
||||||
`Config.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Config.hs>`_ is in charge of :ref:`configuration`.
|
`Config.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Config.hs>`_ is in charge of :ref:`configuration`.
|
||||||
|
|
||||||
Admin
|
Admin
|
||||||
-----
|
-----
|
||||||
|
|
||||||
`Admin.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Admin.hs>`_ is in charge of the :ref:`admin_server`.
|
`Admin.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Admin.hs>`_ is in charge of the :ref:`admin_server`.
|
||||||
|
|
||||||
HTTP
|
HTTP
|
||||||
----
|
----
|
||||||
@@ -92,4 +92,4 @@ The HTTP server is provided by `Warp <https://aosabook.org/en/posa/warp.html>`_.
|
|||||||
Listener
|
Listener
|
||||||
--------
|
--------
|
||||||
|
|
||||||
`Listener.hs <https://github.com/PostgREST/postgrest/blob/main/src/PostgREST/Listener.hs>`_ is in charge of the :ref:`listener`.
|
`Listener.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Listener.hs>`_ is in charge of the :ref:`listener`.
|
||||||
|
|||||||
+7
-7
@@ -5,10 +5,10 @@ project. It's available in PostgREST's `nix-shell` by default.
|
|||||||
|
|
||||||
## Dumping imports
|
## Dumping imports
|
||||||
|
|
||||||
Given source code in the directories `src` and `main`, for example, you can run:
|
Given source code in the directories `src/library` and `src/executable`, for example, you can run:
|
||||||
|
|
||||||
```
|
```
|
||||||
hsie dump-imports src main
|
hsie dump-imports src/library src/executable
|
||||||
```
|
```
|
||||||
|
|
||||||
This dumps all imports of the modules in the given directory to a CSV file,
|
This dumps all imports of the modules in the given directory to a CSV file,
|
||||||
@@ -18,7 +18,7 @@ To dump to a JSON file (e.g., to further process with `jq`), add the `--json`
|
|||||||
flag:
|
flag:
|
||||||
|
|
||||||
```
|
```
|
||||||
hsie dump-imports --json src main
|
hsie dump-imports --json src/library src/executable
|
||||||
```
|
```
|
||||||
|
|
||||||
## Graphing imports
|
## Graphing imports
|
||||||
@@ -27,7 +27,7 @@ The tool can generate `graphviz` graphs of module and symbol imports by printing
|
|||||||
a file to `stdout` that can directly be rendered with `dot`:
|
a file to `stdout` that can directly be rendered with `dot`:
|
||||||
|
|
||||||
```
|
```
|
||||||
hsie graph-modules src main | dot -Tpng -o modules.png
|
hsie graph-modules src/library src/executable | dot -Tpng -o modules.png
|
||||||
```
|
```
|
||||||
|
|
||||||
The command `graph-modules` prints a graph of which modules insert which other
|
The command `graph-modules` prints a graph of which modules insert which other
|
||||||
@@ -39,7 +39,7 @@ To check whether modules are imported under consistent aliases in your project,
|
|||||||
run:
|
run:
|
||||||
|
|
||||||
```
|
```
|
||||||
hsie check-aliases main src
|
hsie check-aliases src/library src/executable
|
||||||
```
|
```
|
||||||
|
|
||||||
This will exit with a non-zero exit code if any inconsistent aliases are found.
|
This will exit with a non-zero exit code if any inconsistent aliases are found.
|
||||||
@@ -48,13 +48,13 @@ The following command checks whether any modules are imported as wildcards, i.e.
|
|||||||
not qualified and without specifying symbols.
|
not qualified and without specifying symbols.
|
||||||
|
|
||||||
```
|
```
|
||||||
hsie check-wildcards main src
|
hsie check-wildcards src/library src/executable
|
||||||
```
|
```
|
||||||
|
|
||||||
To whitelist certain modules to be imported as wildcards, use `--ok`:
|
To whitelist certain modules to be imported as wildcards, use `--ok`:
|
||||||
|
|
||||||
```
|
```
|
||||||
hsie check-wildcards main src --ok Protolude --ok Test.Module
|
hsie check-wildcards src/library src/executable --ok Protolude --ok Test.Module
|
||||||
```
|
```
|
||||||
|
|
||||||
## Current limitations
|
## Current limitations
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ let
|
|||||||
args = [ "ARG_OPTIONAL_SINGLE([outfile], [o], [Output filename], [postgrest-module-graph.png])" ];
|
args = [ "ARG_OPTIONAL_SINGLE([outfile], [o], [Output filename], [postgrest-module-graph.png])" ];
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
${hsie} graph-modules main src | ${graphviz}/bin/dot -Tpng -o "$_arg_outfile"
|
${hsie} graph-modules src/library src/executable | ${graphviz}/bin/dot -Tpng -o "$_arg_outfile"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
hsieGraphSymbols =
|
hsieGraphSymbols =
|
||||||
|
|||||||
+1
-1
@@ -88,7 +88,7 @@ let
|
|||||||
${ruff}/bin/ruff check .
|
${ruff}/bin/ruff check .
|
||||||
|
|
||||||
echo "Checking consistency of import aliases in Haskell code..."
|
echo "Checking consistency of import aliases in Haskell code..."
|
||||||
${hsie} check-aliases main src
|
${hsie} check-aliases src/library src/executable
|
||||||
|
|
||||||
echo "Linting Haskell files..."
|
echo "Linting Haskell files..."
|
||||||
${fd}/bin/fd '\.l?hs$' \
|
${fd}/bin/fd '\.l?hs$' \
|
||||||
|
|||||||
+2
-2
@@ -42,7 +42,7 @@ library
|
|||||||
default-extensions: OverloadedStrings
|
default-extensions: OverloadedStrings
|
||||||
NoImplicitPrelude
|
NoImplicitPrelude
|
||||||
NumericUnderscores
|
NumericUnderscores
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src/library
|
||||||
exposed-modules: PostgREST.Admin
|
exposed-modules: PostgREST.Admin
|
||||||
PostgREST.App
|
PostgREST.App
|
||||||
PostgREST.AppState
|
PostgREST.AppState
|
||||||
@@ -194,7 +194,7 @@ executable postgrest
|
|||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
default-extensions: OverloadedStrings
|
default-extensions: OverloadedStrings
|
||||||
NoImplicitPrelude
|
NoImplicitPrelude
|
||||||
hs-source-dirs: main
|
hs-source-dirs: src/executable
|
||||||
main-is: Main.hs
|
main-is: Main.hs
|
||||||
build-depends: base >= 4.9 && < 4.22
|
build-depends: base >= 4.9 && < 4.22
|
||||||
, containers >= 0.5.7 && < 0.8
|
, containers >= 0.5.7 && < 0.8
|
||||||
|
|||||||
Reference in New Issue
Block a user