Loading packages/server/prisma/dbml/schema.dbml +5 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,11 @@ //// THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY) //// ------------------------------------------------------ Table Setting { key String [pk] value String [not null] } Table User { sub String [pk] lastPixelTime DateTime [default: `now()`, not null] Loading packages/server/prisma/migrations/20240530220300_add_settings/migration.sql 0 → 100644 +7 −0 Original line number Diff line number Diff line -- CreateTable CREATE TABLE "Setting" ( "key" TEXT NOT NULL, "value" TEXT NOT NULL, CONSTRAINT "Setting_pkey" PRIMARY KEY ("key") ); packages/server/prisma/schema.prisma +5 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,11 @@ datasource db { url = env("DATABASE_URL") } model Setting { key String @id value String // this value will be parsed with JSON.parse } model User { sub String @id lastPixelTime DateTime @default(now()) // the time the last pixel was placed at Loading packages/server/src/index.ts +13 −6 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ import { Logger } from "./lib/Logger"; import { ExpressServer } from "./lib/Express"; import { SocketServer } from "./lib/SocketServer"; import { OpenID } from "./lib/oidc"; import { loadSettings } from "./lib/Settings"; // Validate environment variables Loading Loading @@ -57,10 +58,16 @@ if (!process.env.OIDC_CALLBACK_HOST) { process.exit(1); } Redis.connect(); // run startup tasks, all of these need to be completed to serve Promise.all([ Redis.connect(), OpenID.setup().then(() => { Logger.info("Setup OpenID"); }); }), loadSettings(), ]).then(() => { Logger.info("Startup tasks have completed, starting server"); const express = new ExpressServer(); new SocketServer(express.httpServer); }); packages/server/src/lib/Canvas.ts +19 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import { CanvasConfig } from "@sc07-canvas/lib/src/net"; import { prisma } from "./prisma"; import { Redis } from "./redis"; import { SocketServer } from "./SocketServer"; import { Logger } from "./Logger"; class Canvas { /** Loading Loading @@ -37,7 +38,23 @@ class Canvas { * @param height */ async setSize(width: number, height: number) { Logger.info("Canvas#setSize has started", { old: this.canvasSize, new: [width, height], }); this.canvasSize = [width, height]; await prisma.setting.upsert({ where: { key: "canvas.size" }, create: { key: "canvas.size", value: JSON.stringify({ width, height }), }, update: { key: "canvas.size", value: JSON.stringify({ width, height }), }, }); // we're about to use the redis keys, make sure they are all updated await this.pixelsToRedis(); Loading @@ -51,6 +68,8 @@ class Canvas { await this.getPixelsArray().then((pixels) => { SocketServer.instance.io.emit("canvas", pixels); }); Logger.info("Canvas#setSize has finished"); } /** Loading Loading
packages/server/prisma/dbml/schema.dbml +5 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,11 @@ //// THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY) //// ------------------------------------------------------ Table Setting { key String [pk] value String [not null] } Table User { sub String [pk] lastPixelTime DateTime [default: `now()`, not null] Loading
packages/server/prisma/migrations/20240530220300_add_settings/migration.sql 0 → 100644 +7 −0 Original line number Diff line number Diff line -- CreateTable CREATE TABLE "Setting" ( "key" TEXT NOT NULL, "value" TEXT NOT NULL, CONSTRAINT "Setting_pkey" PRIMARY KEY ("key") );
packages/server/prisma/schema.prisma +5 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,11 @@ datasource db { url = env("DATABASE_URL") } model Setting { key String @id value String // this value will be parsed with JSON.parse } model User { sub String @id lastPixelTime DateTime @default(now()) // the time the last pixel was placed at Loading
packages/server/src/index.ts +13 −6 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ import { Logger } from "./lib/Logger"; import { ExpressServer } from "./lib/Express"; import { SocketServer } from "./lib/SocketServer"; import { OpenID } from "./lib/oidc"; import { loadSettings } from "./lib/Settings"; // Validate environment variables Loading Loading @@ -57,10 +58,16 @@ if (!process.env.OIDC_CALLBACK_HOST) { process.exit(1); } Redis.connect(); // run startup tasks, all of these need to be completed to serve Promise.all([ Redis.connect(), OpenID.setup().then(() => { Logger.info("Setup OpenID"); }); }), loadSettings(), ]).then(() => { Logger.info("Startup tasks have completed, starting server"); const express = new ExpressServer(); new SocketServer(express.httpServer); });
packages/server/src/lib/Canvas.ts +19 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import { CanvasConfig } from "@sc07-canvas/lib/src/net"; import { prisma } from "./prisma"; import { Redis } from "./redis"; import { SocketServer } from "./SocketServer"; import { Logger } from "./Logger"; class Canvas { /** Loading Loading @@ -37,7 +38,23 @@ class Canvas { * @param height */ async setSize(width: number, height: number) { Logger.info("Canvas#setSize has started", { old: this.canvasSize, new: [width, height], }); this.canvasSize = [width, height]; await prisma.setting.upsert({ where: { key: "canvas.size" }, create: { key: "canvas.size", value: JSON.stringify({ width, height }), }, update: { key: "canvas.size", value: JSON.stringify({ width, height }), }, }); // we're about to use the redis keys, make sure they are all updated await this.pixelsToRedis(); Loading @@ -51,6 +68,8 @@ class Canvas { await this.getPixelsArray().then((pixels) => { SocketServer.instance.io.emit("canvas", pixels); }); Logger.info("Canvas#setSize has finished"); } /** Loading