No description
Find a file
2023-01-24 10:57:56 +01:00
prisma added area and last change support 2023-01-24 10:57:37 +01:00
.gitignore 🗃️ migrated saving stricture to prisma 2023-01-19 08:08:53 +01:00
app.js added area and last change support 2023-01-24 10:57:37 +01:00
config.json 🔧 changed default check period 2023-01-24 10:57:56 +01:00
package.json add cors middleware 2023-01-19 23:28:37 +01:00
readme.md added area and last change support 2023-01-24 10:57:37 +01:00
spaces.json added area and last change support 2023-01-24 10:57:37 +01:00
yarn.lock add cors middleware 2023-01-19 23:28:37 +01:00

SpaceCache

Sinn: Frage Spaces cached ab anstatt yolo-like bei jeder Request alles gleichzeitig anzuhauen.

Wie bedienen?

Mach 'ne GraphQL Request. Ist eigentlich recht simpel, aber du kannst auch GraphiQL nutzen um dir eine Request zu erarbeiten. Wenn du alle Spaces haben willst kannst du zum Beispiel sowas basteln.

{ spaces {
  id
  open
} }

Wenn du aber nur Bock auf einen Space hast, kannst du auch diesen stupiden Oneliner bringen:

{ isOpen(id: "unhb") }

Spaces und Config

So sieht ein Eintrag in der spaces.json aus:

{
  "name": "CCC Aachen",
  "id": "cccaachen",
  "area": "DE-NW",
  "endpoint": "https://status.aachen.ccc.de/api/v0/status/current?public",
  "path": "$.changed.status",
  "expected": "public"
}

id ist eine einfache ID des Spaces. Sollte sich natürlich nicht überschneiden.
name ist eine Art Friendly Name. Kann man benutzen damit es schön aussieht.
area ist ein optionaler Value, der den Standort nach ISO 3166-2:DE beschreibt. Kann benutzt werden, um später nach Region zu filtern.
endpoint beschreibt die URL, die der Server anhauen soll.
path ist ein JSONPath zum Wert, der beschreibt, ob der Space offen ist. Das ist nur nötig, wenn die API vom SpaceAPI Standard abweicht.
expected kann einen Value beschreiben, wenn der Wert sich nicht durch einen Boolean darstellen lässt (also nicht true, "true", 1, usw.). Das sollte auch nur nötig sein, wenn die API vom SpaceAPI Srandard abweicht.

Die config.json ist eigentlich selbsterklärend.

Deployment

Aktuell läuft eine Instanz auf https://spaceapi.ryzetech.live/graphql und wird manuell durch ryze deployt. CD ist für irgendwann geplant.
Wenn du das Bedürfnis hast, den Quatsch selbst zu hosten, mach folgendes:

yarn
yarn prisma migrate dev
yarn run start

Dann bau dir die Config wie du willst. Wenn du Fragen hast, schreib mir gerne auf Matrix: @ryze:matrix.un-hack-bar.de

Warum?

@CyReVolt:matrix.org hat eine Seite gebaut, die die Hackspaces in NRW auf ihren Status abfragt => https://metaspora.org/hackerspaces/.
Mich hat es irgendwie gewurmt, dass jeder Status direkt vom Client abgefragt wird. Daraufhin hab ich ein Backend vorgeschlagen, was die Space Server periodisch anhaut und schaut was Phase ist, die Ergebnisse in einer SQLite DB vermerkt und cached.

CyReVolt so:

ryze so: