decentralised message store

Compare changes

Choose any two refs to compare.

Changed files
+59 -2
.github
workflows
src
lib
handlers
server
+5
src/server/index.ts
···
import websocket from "@fastify/websocket";
import Fastify from "fastify";
export const setupServer = async () => {
···
logger: true,
});
await fastify.register(websocket);
return fastify;
···
import websocket from "@fastify/websocket";
+
import cors from "@fastify/cors";
import Fastify from "fastify";
export const setupServer = async () => {
···
logger: true,
});
+
await fastify.register(cors, {
+
origin: true,
+
});
+
await fastify.register(websocket);
return fastify;
+1 -1
src/lib/handlers/connect.ts
···
if (!messagesResult.ok) {
console.error(messagesResult.error);
throw new Error(
-
"Channel history function returned 0 results.",
);
}
const historyMessage: HistoryMessage = {
···
if (!messagesResult.ok) {
console.error(messagesResult.error);
throw new Error(
+
"Something went wrong when trying to get messages from the DB. Check the schema and the connection?",
);
}
const historyMessage: HistoryMessage = {
+1
.gitignore
···
/node_modules
/dist
.env
*.tsbuildinfo
···
/node_modules
/dist
.env
+
.docker.env
*.tsbuildinfo
+2
shell.nix
···
pnpm,
typescript,
typescript-language-server,
callPackage,
}:
···
pnpm
typescript
typescript-language-server
];
shellHook = ''
···
pnpm,
typescript,
typescript-language-server,
+
docker,
callPackage,
}:
···
pnpm
typescript
typescript-language-server
+
docker
];
shellHook = ''
+47
.github/workflows/push-image.yaml
···
···
+
name: Build and Push Docker Image
+
+
on:
+
push:
+
tags:
+
- "v*"
+
+
env:
+
REGISTRY: ghcr.io
+
IMAGE_NAME: ${{ github.repository }}
+
+
jobs:
+
build-and-push:
+
runs-on: ubuntu-latest
+
permissions:
+
contents: read
+
packages: write
+
+
steps:
+
- name: Checkout repository
+
uses: actions/checkout@v4
+
+
- name: Log in to GitHub Container Registry
+
uses: docker/login-action@v3
+
with:
+
registry: ${{ env.REGISTRY }}
+
username: ${{ github.actor }}
+
password: ${{ secrets.GITHUB_TOKEN }}
+
+
- name: Extract metadata (tags, labels)
+
id: meta
+
uses: docker/metadata-action@v5
+
with:
+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+
tags: |
+
type=semver,pattern={{version}}
+
type=semver,pattern={{major}}.{{minor}}
+
type=semver,pattern={{major}}
+
type=raw,value=latest
+
+
- name: Build and push Docker image
+
uses: docker/build-push-action@v5
+
with:
+
context: .
+
push: true
+
tags: ${{ steps.meta.outputs.tags }}
+
labels: ${{ steps.meta.outputs.labels }}
+3 -1
src/index.ts
···
import { setupServer } from "@/server";
const main = async () => {
-
if (DB_URL === ":memory:" || DB_URL.startsWith("file:"))
await setupDbWithMigrations("./drizzle");
const server = await setupServer();
for (const [url, route] of Object.entries(routes)) {
···
import { setupServer } from "@/server";
const main = async () => {
+
if (DB_URL === ":memory:" || DB_URL.startsWith("file:")) {
+
console.log("migrating db")
await setupDbWithMigrations("./drizzle");
+
}
const server = await setupServer();
for (const [url, route] of Object.entries(routes)) {