From d8eece32de3b509c9171d0769d042fab672439e1 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Wed, 11 Aug 2021 19:29:39 +0200 Subject: [PATCH] :sparkles: rabbitmq --- package-lock.json | Bin 39066 -> 47678 bytes package.json | 4 ++++ src/util/Config.ts | 38 +++++++++++++++++++++----------------- src/util/RabbitMQ.ts | 14 ++++++++++++++ src/util/index.ts | 3 ++- 5 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 src/util/RabbitMQ.ts diff --git a/package-lock.json b/package-lock.json index 22def022b133eb85e24eff22596514241700388e..4e0e6aed7761eef14c590d8bac474e53d8a8703e 100644 GIT binary patch delta 4096 zcmcguTWs6b8HSw1j@`y>(x!17yRzh^$;wE)h!Uk>NkiRbS(Iprx}lemB1KV@D2Wtx z8xq^V&@RP-H9JK&Y+Vsx@9P3R4FkFr81}MtL-x4sVSU@f9yXwF!+?>pEJsP>UEK!) z=lne9Kj;6?_y6Dbz56pCeKzysdzNR|daGHJIQ!K#`|F6)`@{DvmW3+|^Yim|Ug!jY zjXn#kvva2(S>{9myRbetwgPtjd9ZftIKXnAvtt|VfX5?;;TC)>+axa^sD>dvTJ#n? z8_7mAi24&sFNL&pQYm$cExb#@wKPItR5kDG#0J@|bfQ!*$NN}P^A>4uHkWG>cp`}S zA_*?b#nT=*-0NPuW}n>Gh@!3P0zenmPjWR~;3Sm?53*N4bK!aLgT=KOmj{q%od7vL z2XfyDD+@lDt=Sd+Dl=Fr#udm!l>s~qOjRa&&S1Ni|6q8UXM5q;C zuu^3DsS4Ahwj#bd z-hINxNF@ehaanHR1vHh$DN2G0sbHeZ*SK)0h=z(8I)f>am~)joNzOwiMTYi42^rS~ zq^P?~ei6<$g9AT~G@>Zd*Hjtf>)_{B+qTr!`bwManHac*I8i6Em(h9qehx?Ia5)Jl zHuo)NAH`gT#3TW@@$$f-@cNQTF0q)xn@R!9Gj1fuMn0%9} zdLlu3z?XB7isclA=t*gkCo&0Fbs+a5d4D9+&c*d~zJvCdEW{3aWZhfkb43dA&>32W zFbd22ebud?+~MkUy|mQ^wyVnr$KGAOY(c;~ECxOi&lsb%fOQphNEJzg_EVW#CleeNj{*cwMM)iPU<3A?&Z3g*9VtVB}nNa$z%kL4Pqez)6+>2CS9dMvmFmq z(@Z6p(W^wcqHVMX@}SlsYA(*38f-;3DTD?eTVHzl5Ww*Qr;8)NU`~(I2kye>z=!Xi z0DpB|oocX{<7l%dmi$}(h65yzk5rjZODl+J==#kKy3T{GjHUaEm-{TG=~LTKxe z@W7qk)G`R2QSyTrRl(z$3N;$I1Tm3JKBQHoNPx~MnwZvzVr9cy9@M%tlpKT-8j@%R z$%KkldJ0!-x>>waikg4}-#z_HkR{HY*bB$(Tla`X3kH7s@;bu>h)_-CH`om&#gQop z4K><@POGSKE}>L&cO{R%YTQma5q<^)E3K8t!i78 zf(fzS!0R$o8&{Kb>7@>5?jFj%Gsz4=#=# za#a-$jBVp$Q*+}9ZAS6RHKb1RNwycui*m_JHA`H*MsMGMs=hW% z`s*z{mPT4Z25S~Pa?L~PNp;hmlmq!_A`qqowCXSEq$pN9W(`;!)0s69|GLpT54z`c zfIsV=H|Xya;OXB##yE%aHFxxU4L<#r6>Jyg9wuwolZkr!3nOYn0NpfIh5bgm-xM^M z(;ABXD)`CFABNWSpHDuP$U~_+dnD9Ng46j6+mqHiYJ6Wfd4uo6r>y^iyFqg2OJK+I z6u7(l+%ZE$0PAgROxVip_3a}eY|#*3rik5pMdKY0nDT2Q`@Fp)sG8JJz`fn$Ck*m5 zY3(**GWvMdyuJG6Ls|Xd6Tm;-Tn6v$F77kA>FOb3H+&gQ<}hlfc1>zu#m%cK6+tyP zcT8o*&Bn55Dh!kG$A5t1#?mEYV(|W6(DOH^V&7}nZ}38?!Gk}&yEHdi>oNmI!6%#6 z$=tZ+S5U_xdSE|f)4h4dUX4sJ`0ok?=12qrcs9R+K1$J}Bu?qlC&&bYSLq%5@bBL^ zW*N@C`nzNQt1ieLi7pVYf#1CGi(`h+F?0QS${>3r%3#!N3~6v0{LfQk73LJj=!J0JZMr#BXw delta 91 zcmV-h0HpuE^a7f(0%l9ATKPl{7t(C xvwl?_43q6**^_<+;j{i`=m@j!chUos!F;*1K!0u~v#F*`2D7iNkqVQ6xxHcAD^~yj diff --git a/package.json b/package.json index 4b8e4106..413931b2 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "@types/mongoose-lean-virtuals": "^0.5.1", "@types/node": "^14.14.25", "ajv": "^8.5.0", + "amqplib": "^0.8.0", "dot-prop": "^6.0.1", "env-paths": "^2.2.1", "jsonwebtoken": "^8.5.1", @@ -40,5 +41,8 @@ "mongoose": "^5.12.3", "mongoose-autopopulate": "^0.12.3", "typescript": "^4.1.3" + }, + "devDependencies": { + "@types/amqplib": "^0.8.1" } } diff --git a/src/util/Config.ts b/src/util/Config.ts index cbdc194c..10dddc88 100644 --- a/src/util/Config.ts +++ b/src/util/Config.ts @@ -25,17 +25,17 @@ export interface RateLimitOptions { } export interface Region { - id: string, - name: string, - vip: boolean, - custom: boolean, - deprecated: boolean, - optimal: boolean, + id: string; + name: string; + vip: boolean; + custom: boolean; + deprecated: boolean; + optimal: boolean; } export interface KafkaBroker { - ip: string, - port: number + ip: string; + port: number; } export interface DefaultOptions { @@ -133,10 +133,13 @@ export interface DefaultOptions { regions: { default: string; available: Region[]; - } + }; + rabbitmq: { + host: string | null; + }; kafka: { - brokers: KafkaBroker[] | null - } + brokers: KafkaBroker[] | null; + }; } export const DefaultOptions: DefaultOptions = { @@ -230,17 +233,18 @@ export const DefaultOptions: DefaultOptions = { }, regions: { default: "fosscord", - available: [ - { id: "fosscord", name: "Fosscord", vip: false, custom: false, deprecated: false, optimal: false }, - ] + available: [{ id: "fosscord", name: "Fosscord", vip: false, custom: false, deprecated: false, optimal: false }], + }, + rabbitmq: { + host: null, }, kafka: { - brokers: null - } + brokers: null, + }, }; export const ConfigSchema = new Schema({}, { strict: false }); -export interface DefaultOptionsDocument extends DefaultOptions, Document { } +export interface DefaultOptionsDocument extends DefaultOptions, Document {} export const ConfigModel = model("Config", ConfigSchema, "config"); diff --git a/src/util/RabbitMQ.ts b/src/util/RabbitMQ.ts new file mode 100644 index 00000000..9df95231 --- /dev/null +++ b/src/util/RabbitMQ.ts @@ -0,0 +1,14 @@ +import amqp, { Connection, Channel } from "amqplib"; +import Config from "./Config"; + +var rabbitCon: Connection; +var rabbitCh: Channel; + +export async function init() { + const host = Config.get().rabbitmq.host; + if (!host) return; + rabbitCon = await amqp.connect(host); + rabbitCh = await rabbitCon.createChannel(); +} + +export { rabbitCon, rabbitCh }; diff --git a/src/util/index.ts b/src/util/index.ts index 7e8bca20..7523a6ad 100644 --- a/src/util/index.ts +++ b/src/util/index.ts @@ -5,4 +5,5 @@ export * from "./MessageFlags"; export * from "./Permissions"; export * from "./Snowflake"; export * from "./UserFlags"; -export * from "./toBigInt" \ No newline at end of file +export * from "./toBigInt"; +export * from "./RabbitMQ";