From dcde64630f8e14663b0bafc3163cb5fb8a20086c Mon Sep 17 00:00:00 2001 From: Varun Sethu Date: Thu, 15 Jun 2023 21:49:53 +1000 Subject: [PATCH] created docs --- backend/README.md | 14 +++ backend/docs/CMS high level architecture.png | Bin 0 -> 107420 bytes backend/endpoints/docs/Endpoints.md | 105 +++++++++++++++++++ backend/endpoints/registration.go | 1 + postgres/README.md | 24 +++++ postgres/db_diagram.png | Bin 0 -> 65032 bytes 6 files changed, 144 insertions(+) create mode 100644 backend/docs/CMS high level architecture.png create mode 100644 backend/endpoints/docs/Endpoints.md create mode 100644 postgres/README.md create mode 100644 postgres/db_diagram.png diff --git a/backend/README.md b/backend/README.md index 24089dba..58d41794 100644 --- a/backend/README.md +++ b/backend/README.md @@ -20,6 +20,20 @@ The backend folder contains all our backend code 🤯. Theres a few important fo - WIP TypeScript implementation of client server for operational transform +## Architectural Overview +At a very high level our CMS looks as follows +![CMS arch](./docs/CMS%20high%20level%20architecture.png) +There are a few core parts of the CMS + - Handlers (within the `endpoints` directory) + - Repository Layer (within the `database` directory) + - Concurrent Editor (within the `editor` directory) + +Each of these sections has their own little bit of documentation in their respective directory so this bit will focus more on the high level aspects of the CMS. + +At a very high level the CMS allows users to easily manage, collaborate on and create static web content, the whole goal of this is to allow for the easy extension of maintenance of the CSESoc Website as well as any other websites CSESoc produces. The CMS identifies different websites as "frontends", each frontend gets its own unique file tree that members of the frontend can manage, this file tree is stored within the `Postgres DB`. + +Users of the CMS work on the idea of "documents", documents are unique pages that they can create and edit, there are two different types of documents: `published` and `unpublished`, published documents are visible to any unauthenticated user, regardless of if they are a member of the frontend group or not while `unpublished` documents are only visible to editors. Each of these document types are stored in their respective content volumes, we duplicate these documents as we may have a version A of a document that we wish to be public but have a version A' that we're still editing, that should be private. We also store other types of content such as images and videos but such content does not receive a published/unpublished distinction. + ## Papers worth Reading Most of the complexity of the CMS backend is within the editor, to aid with your tickets we have accumilated a few great resources that are worth a read. - [A survey of OT algorithms](https://www.researchgate.net/profile/Ajay-Khunteta-2/publication/45183356_A_Survey_on_Operational_Transformation_Algorithms_Challenges_Issues_and_Achievements/links/5b9b27dca6fdccd3cb533171/A-Survey-on-Operational-Transformation-Algorithms-Challenges-Issues-and-Achievements.pdf?origin=publication_detail) diff --git a/backend/docs/CMS high level architecture.png b/backend/docs/CMS high level architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b41c1d86bdc9128e5fd5adfe2c388ea0b1d9f0 GIT binary patch literal 107420 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℘>Tncy@a#gR=g~XIGs3c~$ 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%0Arl?2G=-W>MFQq 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 literal 0 HcmV?d00001 diff --git a/backend/endpoints/docs/Endpoints.md b/backend/endpoints/docs/Endpoints.md new file mode 100644 index 00000000..7929a120 --- /dev/null +++ b/backend/endpoints/docs/Endpoints.md @@ -0,0 +1,105 @@ +# Endpoints + +Endpoints in the CMS are structured rather differently from endpoints in regular Go applications, CMS endpoints are structured in order to share a lot of common details such as auth and session management between endpoints. The goal was to allow future endpoints to be written in a manner that allowed them to focus PURELY on business logic and not annoying details such as authentication, form parsing and dependency acquisition. + +## Creating an Endpoint +To gain a better understanding of how CMS endpoints work we will create a quick endpoint. This endpoint will be a `GET` endpoint that will take a request body of the form: +```json +{ + "ping_count": 10, + "pong_message": "tomato" +} +``` +and will return a response of the form: +```json +{ + "response": "message" +} +``` +where `"message"` is the pong message repeated `ping_count` times, ie. the response to the request above would be +```json +{ + "response": "tomatotomatotomatotomatotomatotomatotomatotomatotomatotomato" +} +``` +Lets create a handler for this :). The first step is to define a type modelling the input to this http handler, this will look like: +```go +type RequestInput struct { + PingCount int `schema:"ping_count"` + PongMessage string `schema:"pong_message"` +} +``` +The schema field annotations correspond to what fields in the JSON object correspond to the fields in the Go struct definition. Alongside this input type we must also define an output type +```go +type RequestResponse struct { + Response string `schema:"response"` +} +``` +Now that we have both our input and output types we can now define our handler. HTTP handlers take an input form alongside a "dependency factory" (more on this later) as arguments and output a specialized `handlerResponse` type. +```go +func RequestHandler(form RequestInput, df DependencyFactory) handlerResponse[RequestResponse] { + +} +``` +The framework automatically handles the deserialization of the request input and serialization of our output, allowing us to focus entirely on business logic. All thats left for us to do now is define our business logic. +```go +func RequestHandler(form RequestInput, df DependencyFactory) handlerResponse[RequestResponse] { + response := strings.Builder{} + + for i := 0; i < form.PingCount; i++ { + response.WriteString(form.PongMessage) + } + + return handlerResponse[RequestResponse]{ + Status: http.StatusOk, + Response: RequestResponse { + Response: response.String() + } + } +} +``` +Note that when writing this handler we didnt need to worry about any of the usual things we would be concerned with in Go, the inputs and outputs are "automagically" converted to/from JSON for us. + +Now that the core handler logic has been created we must now register it and map it to and endpoint. Endpoints are registered within `registration.go`, there are 3 possible registration types we can apply to an endpoint: + - Regular + - Regular handlers simply take the input form as an argument and a dependency factory. There is no authentication blocking access to these handlers. + - Authenticated + - These handlers are like regular handlers except they require authentication to access. + - Raw + - These are a special type of handler used when your business logic requires access to raw `http.request` and `http.response` values, one obvious example is any handler that upgrades HTTP requests to a websocket connection. + +For our simple endpoint we will go with a regular handler. We can register it like so: +```go +mux.Handle("/ping", newHandler("GET", RequestHandler, /* isMultipart = */ false)) +``` +You may have noticed the weird `isMultipart` field, this field indicates if the request accepts multipart values (ie. Images, Videos, etc). An example of such an endpoint is `/api/filesystem/upload-image`. + +## Endpoint Configurations +As mentioned earlier, there are quite a few ways to configure and customise your endpoint. The main ones being regular/authenticated and raw endpoints. There are however a few more options. + - Regular Handlers, Raw Handlers, Authenticated Handlers + - Each of these handler types support multipart requests, these were discussed earlier + - Authenticated / Unauthenticated raw handlers + - As a leak in the abstraction provided by our endpoint framework, raw handlers require a boolean flag indicating if they require authentication. + - Raw handlers / isWebsocket + - this configuration indicates if you intend to use the handler to upgrade HTTP connections to websocket connections, once again this is a good example of a leaky abstraction which should be refactored out + - the reason we care is because once connections are upgraded to websocket connections the framework must know that it can no longer write data to the corresponding request/response values. + + + + +## Dependencies & Inversion of Control +The way the framework deals with dependencies is by disallowing handlers to instantiate dependencies themselves, instead handlers must fetch dependencies from the `dependencyFactory` thats passed to them as an argument. The `DependencyFactory` is merely a simple interface with the definition: +```go +type DependencyFactory interface { + GetFilesystemRepo() repos.FilesystemRepository + GetGroupsRepo() repos.GroupsRepository + GetFrontendsRepo() repos.FrontendsRepository + GetPersonsRepo() repos.PersonRepository + + GetUnpublishedVolumeRepo() repos.UnpublishedVolumeRepository + GetPublishedVolumeRepo() repos.PublishedVolumeRepository + + GetLogger() *logger.Log +} +``` +the interface exposes a bunch of methods to acquire specific database repositories as well as stuff like loggers. The advantage of writing handlers in such a way is that it makes testing them really simple, we can employ simple mocking strategies to effectively unit test handlers, it also allows us to abstract over details such as what filesystem we may actually be looking at. Doing so allows endpoint handlers to be written without a concern of what filesystem/frontend we're looking at as those details are abstracted away by the factory. \ No newline at end of file diff --git a/backend/endpoints/registration.go b/backend/endpoints/registration.go index 0cb8c03a..5e3d8e25 100644 --- a/backend/endpoints/registration.go +++ b/backend/endpoints/registration.go @@ -26,6 +26,7 @@ func RegisterEditorEndpoints(mux *http.ServeMux) { mux.Handle("/editor", newRawHandler("GET", EditHandler, false, false, true)) // auth } +// TODO: think of a better abstraction to remove all these boolean flags // newHandler is just a small wrapper around a handler that returns an instance of a handler struct func newHandler[T, V any](formType string, handlerFunc func(T, DependencyFactory) handlerResponse[V], isMultipart bool) handler[T, V] { return handler[T, V]{ diff --git a/postgres/README.md b/postgres/README.md new file mode 100644 index 00000000..fd6815b4 --- /dev/null +++ b/postgres/README.md @@ -0,0 +1,24 @@ +# Database + +The database/postgres folder contains everything related to our schema + in house migration system. Before discussing the schema lets talk about the migration mechanism. + +## Migrations +In order to prevent old data from being deleted we cannot completely destroy the DB container when we created changes to the DB. As such we must introduce a migration mechanism. Migrations are basically small little scripts that contain patches we want to apply to the DB, when deploying changes we create these migration scripts and tell the migration engine to run the new script. + +### How to do a CMS Migration +If you're introducing a new DB change to the CMS simply create your migration script in `up/version.sql`, then increase the `dbver.txt` number by 1, doing so will introduce your changes to the staging database. Internally the migration engine just deletes and recreates the DB (this is fine for now but in production situations we cannot do this.) In the future we are looking to replace this with a proper migration engine like `sqitch`. + +## Schema and Tables +The CMS is composed of a few key tables, these are: + - The Frontend Table + - Maintains metadata regarding all frontend clients registered on the CMS (the best way to think of a frontend client is as a website created on the CMS) + - The Person table + - User data (as in editors) + - The Groups table + - The groups table manages catch all permissions that are applied the users, users can be members of certain groups and will inherit those permissions. + - There are more details regarding frontend level groups but that PR is still pending at the moment. + - The Filesystem Table + Metadata Table + - Models filesystem for every possible frontend, the associated metadata table contains information about each entity within the FS table. + +We have produced a small diagram that will hopefully make the DB a little easier to understand. Do not that the diagram is not reflective of teh current state of the DB and is in fact reflective of what it will look like after a few key PRs are finalised. +![Diagram](./db_diagram.png) \ No newline at end of file diff --git a/postgres/db_diagram.png b/postgres/db_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..758463af841fffda61a0d452e001279d4c83f8d1 GIT binary patch literal 65032 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 literal 0 HcmV?d00001