From a7138c69ca8bb4f2da24010b2854e1cb367c40ab Mon Sep 17 00:00:00 2001 From: "Seo Myunggyun (Jonathan)" Date: Sun, 6 Aug 2023 07:18:18 +0000 Subject: [PATCH 1/2] Prisma format --- prisma/schema.prisma | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8fb6caf..20f1a91 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -2,8 +2,8 @@ // learn more about it in the docs: https://pris.ly/d/prisma-schema generator client { - provider = "prisma-client-js" - output = "../generated/client" + provider = "prisma-client-js" + output = "../generated/client" } datasource db { @@ -63,33 +63,33 @@ model EmitDestination { topic2 Bytes? topic3 Bytes? - Source EventSource @relation(fields: [sourceAddress, abiHash], references: [address, abiHash]) + Source EventSource @relation(fields: [sourceAddress, abiHash], references: [address, abiHash]) Permission Permission[] @@unique([sourceAddress, abiHash, webhookUrl, topic1, topic2, topic3]) } model User { - id Int @id @default(autoincrement()) - email String @unique - password String + id Int @id @default(autoincrement()) + email String @unique + password String Permission Permission[] } model Permission { - id Int @id @default(autoincrement()) - userId Int + id Int @id @default(autoincrement()) + userId Int // SQLite doesn't support ENUM - type String // EventAbi, EventSource, EmitDestination + type String // EventAbi, EventSource, EmitDestination abiHash Bytes? sourceAddress Bytes? destinationId Int? - User User @relation(fields: [userId], references: [id], onDelete: Cascade) - Abi EventAbi? @relation(fields: [abiHash], references: [hash], onDelete: Cascade) - Source EventSource? @relation(fields: [abiHash, sourceAddress], references: [abiHash, address], onDelete: Cascade) + User User @relation(fields: [userId], references: [id], onDelete: Cascade) + Abi EventAbi? @relation(fields: [abiHash], references: [hash], onDelete: Cascade) + Source EventSource? @relation(fields: [abiHash, sourceAddress], references: [abiHash, address], onDelete: Cascade) Destination EmitDestination? @relation(fields: [destinationId], references: [id], onDelete: Cascade) } From 154e29402e85ab3908868ac0ceee89474620ec0b Mon Sep 17 00:00:00 2001 From: "Seo Myunggyun (Jonathan)" Date: Sun, 6 Aug 2023 13:26:18 +0000 Subject: [PATCH 2/2] ControlMessage cleanup --- ControlMessage.ts | 12 ++++++------ control.ts | 3 +-- emitter.ts | 7 ++----- observer.ts | 7 ++----- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/ControlMessage.ts b/ControlMessage.ts index 7e477c4..a0695c7 100644 --- a/ControlMessage.ts +++ b/ControlMessage.ts @@ -1,18 +1,18 @@ import { decode, encode } from "https://deno.land/x/bencodex@0.2.2/mod.ts"; -export type ControlMessage = { action: "reload" }; -export type MarshaledControlMessage = ["reload"]; - -export const ReloadControlMessage: ControlMessage = { action: "reload" }; +export type ReloadControlMessage = { action: "reload" }; export type EmitterControlMessages = - | typeof ReloadControlMessage + | ReloadControlMessage | never; export type ObserverControlMessages = - | typeof ReloadControlMessage + | ReloadControlMessage | never; +export type ControlMessage = EmitterControlMessages | ObserverControlMessages; +export type MarshaledControlMessage = [ReloadControlMessage["action"]]; + export function serializeControlMessage(msg: ControlMessage): Uint8Array { return encode([msg.action] satisfies MarshaledControlMessage); } diff --git a/control.ts b/control.ts index dc50e0a..36d4c5a 100644 --- a/control.ts +++ b/control.ts @@ -5,7 +5,6 @@ import type { AmqpChannel } from "https://deno.land/x/amqp@v0.23.1/mod.ts"; import { EmitterControlMessages, ObserverControlMessages, - ReloadControlMessage, serializeControlMessage, } from "./ControlMessage.ts"; import { @@ -29,7 +28,7 @@ export function reload( } | { routingKey: typeof ControlObserverRoutingKey; reloadMessage: ObserverControlMessages; - } = { routingKey: destination, reloadMessage: ReloadControlMessage }; + } = { routingKey: destination, reloadMessage: { action: "reload" } }; amqpChannel.publish( { exchange: ControlExchangeName, diff --git a/emitter.ts b/emitter.ts index c9e6e5a..056c2de 100644 --- a/emitter.ts +++ b/emitter.ts @@ -18,10 +18,7 @@ import { import type { PrismaClient } from "./prisma-shim.ts"; -import { - deserializeControlMessage, - ReloadControlMessage, -} from "./ControlMessage.ts"; +import { deserializeControlMessage } from "./ControlMessage.ts"; import { deserializeEventMessage, EventMessage } from "./EventMessage.ts"; import { ControlEmitterRoutingKey, @@ -114,7 +111,7 @@ export async function emitter( `Received message from control queue, action: ${message.action}.`, ); if ( - message.action === ReloadControlMessage.action + message.action === "reload" ) { logger.info( "Received reload control message, reloading configuration.", diff --git a/observer.ts b/observer.ts index 05e9b01..78224e9 100644 --- a/observer.ts +++ b/observer.ts @@ -19,10 +19,7 @@ import { import Prisma, { type PrismaClient } from "./prisma-shim.ts"; -import { - deserializeControlMessage, - ReloadControlMessage, -} from "./ControlMessage.ts"; +import { deserializeControlMessage } from "./ControlMessage.ts"; import { serializeEventMessage } from "./EventMessage.ts"; import { ControlExchangeName, @@ -98,7 +95,7 @@ export async function observer( `Received message from control queue, action: ${message.action}.`, ); if ( - message.action === ReloadControlMessage.action + message.action === "reload" ) { logger.info( "Received reload control message, reloading configuration.",