From 8aedf1e61e439caa5d616578a3e7893c38984d7f Mon Sep 17 00:00:00 2001 From: Lakshaya Date: Fri, 9 Feb 2024 18:52:59 +0530 Subject: [PATCH] docs: add database design document Add database-design.md with database schema section give overview of the tables, data dictionary section explaining the different properties in the tables Add the database er diagram image and file to assets Update api readme to include link to the database design doc --- apps/api/README.md | 1 + .../api/docs/assets/OsmoX_database_schema.erd | 1 + .../api/docs/assets/OsmoX_database_schema.png | Bin 0 -> 11540 bytes apps/api/docs/database-design.md | 45 ++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 apps/api/docs/assets/OsmoX_database_schema.erd create mode 100644 apps/api/docs/assets/OsmoX_database_schema.png create mode 100644 apps/api/docs/database-design.md diff --git a/apps/api/README.md b/apps/api/README.md index e4473b24..7c01337a 100644 --- a/apps/api/README.md +++ b/apps/api/README.md @@ -35,6 +35,7 @@ Imagine having a central hub where you can create and send notifications seamles - [Usage Guide](docs/usage-guide.md) - [Add New Provider](docs/add-new-provider.md) - [Block Diagram](docs/block-diagram.md) +- [Database Design](docs/database-design.md) - [API Test Cases](docs/api-test-cases.md) ## Contributing diff --git a/apps/api/docs/assets/OsmoX_database_schema.erd b/apps/api/docs/assets/OsmoX_database_schema.erd new file mode 100644 index 00000000..3b5b37b7 --- /dev/null +++ b/apps/api/docs/assets/OsmoX_database_schema.erd @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/api/docs/assets/OsmoX_database_schema.png b/apps/api/docs/assets/OsmoX_database_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..371b4ccf5ff379cb07845686c3338bebb3fcef92 GIT binary patch literal 11540 zcma)iWk8!-w;8Lu3ptw`q-Mwfj?rz1M;sh-&0fI|$cemn`o-_BG zJ9E!>=jKO}A9;87UVF*2p7nfF1WBU3CVmYE2ZtstC9VVq_d*u-{R#OM?7g<1?hy8Y z=p-twf((0kBO8ap!M%l(78g-*&p2B0@K(8Mdp?^@<&dTwd}nOL#$isaoqt zulbrX=*0w6FlHB=MUp78!52~gl|WbkSS4POc{bOUrE*CiXtNne>9WJ zZpr27r(_Ycu%g&MrsRyf!#y&oi!y=y`7LX!$=VC{MduWQG_Jeh#@C-|knNoHa1s`lRD@xJsM#W5}P+A<*`oWbM zLR(*&MD0SLH*N8^>ct<2GUQM9?!J%P_Jx-x0d_9h5uGQk0^3=j{n|{_sH@lxh1Kdr zY1BrIlp1GLVJ*!0>O$vO6L9xG_sqQ03N8hNtyz;Dk-L1E zt=0c^<)e($l=(ChHEC<-Wz}!tSKjdQW&Kv3!_@iJ*I=|~ZtY!uMapM8lZ>{U7rK|5 z++=|(9v;K+F?W}lRYo?7KMG<3Ms@7C4=!yMWWL4^m@Z7)D0Zh_LPX?9$v-AcBTlpjoyii`zC{U6mAbUbgvwc@P}~m?z&b!-4!o}* zhU{TQVdWNBnnw6I#`6(DB{8;|F-+Q^$iqZ}2*`&?1bKLt@44<$x8_@2yQm)2$g7~` z^g@%I1bn6->>l`J5M*_g0RpUUxDA!CO0eB;g&Pfwf6A?pd-A2i>A(_EDF(@FG6$zC zoI(B6zo#-qJfFQS%n!lADNyv=CZ%}j5S42zVs%sFi8bI$EE>8!uTb73ooyA~CSAI4 z+CJh{7b7}r6Y;h(eaH5l@A~1QTo<1(_y7=cfRl1L5DKXjYB4P@c)0L~FAuNUEbacP zd1U}3=A609w-d*-a8zo3#PxfYed%+I8sX{t0KJdE8*UgS|b8gKa-P7_eOlG^WX)kihH(<32iw{#R%CRBg)reE0$lVF>DBThq~S3T^DL&k12v;dL3_D{|ivzEZ&%8juhJUn8~gJ_(yKTwSNM37Y9; zIl0IQ+oqIU^q!#qxDgQVDN}KKUXIZxs#It?+^=QqFXdI~<8GVB?d#D;H<5YdodNK7 z&RgQlC?eH2kKV$SnDr6*?!6EO$||%lw;xUHPU#hQ`-=4Yu95QJT(5;B*iT)0UWzzG zkf@1mS3zUd^ASwE?F@1a+mx$Z10Me)QF0@b!w z(Ib70%2V3;#C$8Nt7lZFlr_IA-%6lJo)_E85bMydt)?P|prMLbOfbnKY!C{! zCYASx@o42Bpua!l^OU;Snn{>4Y~1^7m7=7tvZVNvXYRt{B?oyOX3>PA4mo-4;DVFd z))sHow0%$zre81-O-D$L_t#iD+SSXcyThUCiS-ux$sC?Oj510mX{`QHF1cF$)(XB4 z`{3!Ewo}w}x7XoXLU%ch6iseC}!NKC74EKeFP+_KuJnmAdAQ&w3)7p}B(1iaY- z+bJ=LSG&DqKafqssZ^T0%+WCtZKVTwy0{{wi4`Zu|2V(!_3-x*iXvqb9hgPdmXq zdM+<7eAyH1viaeTp4&NAFC*>_!(gGID&I1uL30$hDZ3lCLr4jF%xZh zQ~mPDn8@p#NltSrnerQ@I9=~)MT;S2Sqe4RPfbb9Z!!}J=Icgcp%j*s6F>VCeH(%R zwW29^`fVr>hBfyx1-j>Pkk0DZEix_Oa3n{_wEVFGwW(|KmWY!f1^2@z)~{*AdaSbt zCtGY@KBKLQhFwIgtcbGoQyC@OqLC=F;;VWN17s!8N)oGDmkfHN=RNzvha5ons}O7= z9GUEV#o-q!(Dwb)q^%QnU~~)fv8~mtNnIUrjoz@BZpuKUg090^`VaVJzoLxyWcF&Y z7a%qS-hGKMRZcmCSO-xLn zs)iiMOm#Z7eFz?t!f9p*N@xj*!Pgql*8_jvl|C8ZqrM9=taMS-Ml$fpOMRMrA@1uP zzC~s^ytmd`SY$?0lm;by#9`$h-g>QP=AtOpiJL=LfREkZ6F@PIF+pGMD_TNq)}feQpq{?xL9HB6VxVY^gTQI zf>=n)Lg~=_B}vNyon)0uT?b~p)^)3MjNnmQ$1ZPko=~u)V56pIu9Zr%LfnuKe7fS!7_%09{!;tOgj-f*5Zk7I#4LY9 z9REqC5uB!zf?1D^X&RmM)#FPHoIpFxQ7gOFzFN1)(<>!sQRj#$v*_8iZ2snUU$@K} zgOlm(jJn>)Mg=)Paw`v!4ezi@BgdIF&aXh>5wWUG9X)c7ZPB5vX6!D7e4*eD=VHx5 zsIExIgLT*|kYz?vd_&3}33<1U{*p!t3@lkP3Fxw|sfZ1xT*zGn^J3H<2b*cm#=bxq zhaKs(2ptG1Nl!K^d2gc@Auk-stjdhQ11CXgG|Ew-K+dJG+Kz|8I`18Uk@XuvJB-rt zHyTs(4&TRqs|?{E!GOc_15|^Izn771?41$sJ1ipdHdo$Q*>h6IR8p5Xe~NBp(f&pX z)qNI>J{u?A@&IR`r*>tO;dl=l;RvSwc@zW|Pp5vD5izg8vHF|q6~*El&(f7erjXl9 zAeO_s6Ya@u_O6ferq*==|2V!=#2-_=VbDW#UhL`G6*O~Wu>j2P==F>?ufkbCU1=U@h-0_IlqT67SDE0F(whdd>fRKA~ipPMMibS@T*KrJ4v#C zapL!225gHsli5h-u9mMjadXetkJX-U@~=Om-&?PIR$6b=Y*I8TvSH=u!1BiyPo2(n zlJL?8VW5aqwFkq>iG+bw(0YzKWgr!F#-9#BqOnD--Na z$p^E_Zz_A1aoQlv7jl1L@zo1k_qY8yuPLt>_`)|s-ekXY6oWzUkJ5j<-WmSiV0Yw0 z(-QQph83Yfn?MAwl-#e%${MGaIEw;rf9|U+3;W{nfY)o6Au489q*lzJshy*W^m_B;4teQj>YDZ@#~t4adO1lY}~sL z?OX2lF0EQywLi5gns%<`BB5>Tfm&hFC2jeWfWF@y%k!K&AqiXlsCEz8a`%+$opMM9kygKyFgSjeduV0I;0wo_vaF5xpB))w5tYHk_O|tv)o`&z(8X zOYH18+Wo+8fuR@)mocwxN>QWFmr7Z3tR)$b`2x(n zp7$JRa<(Q8qw1f&3%~5BIn;lB(KcnDz5yP_;f8<5z1Z1)vut=jfZu{(87_O7?#W@` z3XlbXK_We~v!7ONQDtyl%-A&^4@ojA6?ZwV?jO9z zy+O>n(zcn=M)0gxM$XUj0vBCg3A+w*kK@?K=}u`Y6}LYuw>%>{^A}qft!8| zh5|q>xn5UA{LSh44j$S!p)A`Q#T~nCPp^>0j+2BYx!0B1Jv>%i`oEl!`*+uDs=9?#V2Xsy$Fi+I1>Ey~74hYTT){mdW^{CUb4( zg+d|h@9&7(4yh{=nx<4v!A^uUM_(%`73Iw?(DSH$SyJU{j$D*a=QVZ8osW(I-@yAI zUE8=Xwaq9JfwPZtr%-sH7gyikTskeyLXNWbTiZ~!JvCWU=|Wg7yg6TEayhaamAS>a z49)-6SSVc^B~-}SomxB%>hiJOk=DM)ge7oy)M_``svf<)QV`PB709}wv`>LivJF83 zXas+`t6@m}(f(#4K~~$k^rcyQ@R%}*=GB>wZS#?V>5YHxV|Mj+U?gc>i)N7_rNv#v zaLcw#WvJ3P5Kor#5cR@G4((#0dLBR~HG9NWO11GrCd4w?+|DO0*XT#mj`F&>QKu)( zHEorZPbLEJe0>38g{G>k>$BJWYi~?(n$}JpqcL4z3S7_zEKvX9)sMA3lJVhiClxiz zn}(o9e>LJ&v3t3J-9|}E1UK{JGLtTNc;-By&mt5xR)4Hx$TueE%hMbVcs zzJuld3$^XF9b-cW1hTLqQIBre*M$Uj8+9P}TN$@RE$q=`YUNEj0tofWzEm|Y6dCqf zHxsXS`z*uh;9$x#ZU3d8lt4knMRN%PHr|{UZCOHU#A^BB!G(RQ}ei4H@j(N(#xXW8qkU zna%G^;e*N4WQoE@f<a!Yz%4V8!wv{C@qFgfK%2wHnX?>-Ux5Z4}8=w z@KW!OH@(8!WsN)4mhC+6vc3{u^JL*9->^YIBWQM(o0V>a-uBc5K9aF1Hy#H>b+yKJ z%MevJp^@zNlg(3MKM13~>u38><#N9(JNtg-hr1hLTAh-D^+PuH*|rgp0^ya`1KZ;Px$+2_(}+gdD5tW@T_8OaHH-HQpDoQ(mhKa zX(k`~$z0^#{@$j|V1b;SZ#I`zQ{D#3XBjQ6wC|=X=bL)t=$5bFB&|qKXJ;EO?Lpj> z*)gpsG5ejt%AQce!Ms6h-8*8<%8hdorS4U)kpZ_KqR8A#sPgF_50_D|)$~UBp-+<~ zdr_jH$3;ERRsXN198xw8ffu+WYOQ_O_`-B*RCE`4TQ{sV-UKIY-e1xxNi09ao6aX@ zeDyeC`=*blD+`z(E$f)K^?n*+T6S-W%qF^7B~Dth|8Ll{f01qG1c?S0$rqca0`7c48c^=@0}(ghrybwq{5Dt;gm;CSlGyodYbyS z=I52+cQKYItO3X@lPX0Ki!r{v^*Ihx6P9t4x6;Z5{A&-oD$yCx5VD8d94@CEuT%wJx&s z6GZ6B=JUqvRn=h*x9)e5op)GLTEX9D2=9s3Wj*jrEr9X759_9^!xH{sCn6QOS*W8D8 zz>7|z;!aPc3h}_S(DV2Npk7yX(ggN>K^vys)qGslMY!!wav3^!VZ`CFVs`|9*=)59 zNMC}|`)#KnI)OsXM<}jJ<{674>agciRPziY!#;ph8V)Li_yrfFo%uSBLW)c)oxSdR zD$q1(XUo0v=P!v4D6T97ZMIVCB*j1j@3u#XHW3}zQL_k-8pB? z_3F{GJ`RNtfAUf=Ftv0yYI84#hVycto#7i@gnya(&I~EcZbgx}Ul0&NM9W?!18;Wd zJIMv`{B7fM{w_(z#+uVC8m32EUe^VNC_i1%hu(C-nWB~q5FVYWlTD%N_+A6YIF=CueXvCB?*5`d*|T6M|^Hr@mKv~E5#I~hjPoBo6E z@4i$a6r*okn=rGe9YSvb$`ecyV=~z-0lv5MxM&$uJj`@9Y?IsqA>j7rYKOuKpWElYDz%46u`T!I;qOUkG`o+T^Hu9G@97-kt}mwo|9kA}Aw%cb)_9=@wp z`Wj*5#M(c3F83%U|EtT%?>E5?*=w0aptsY^yFSg@+lfLk^ViCKymMD~ z4mXk5ieE?9N6&UV{N`m38~tevFwd@BaDS%}ZQA+*GJ7AJ5xf>OqS(X9`?0V=cZ+za zJnfO4NZec?1sJSQ_dDm2RNirL9%ddn-e3+a5(I-h9a!dryHj~)!r+6@vwP<5bd59Z zJ@vEnK*!HVtE~thBmoebiylnc$mowRx;}zTt*<~ep!&9gLjFwiB=@@;g}0*9#SB6s zA|53DN{<;to0H85LDrgK_96#l;Hct(T%Y0Qn1F$A*~UWJU&^6uJKaIbthxH zPul3)a_q=Y=@OL_&tMn_FUSH#_f(A^X82I``6h~bIGxvj4$46!a4W-N-0_nLgT(6B zU}X87I}7*HHEZqthw&$<#zp5x^j}NEhdaYLT(e|9(Uj8)c0V~z;B)&T9Iqpz(7|qH zq@B%fQ2SMMzYd*?IZ56)17u`-a|DNIp)qb#g@j*UAo3MGd2%v*1$?^8`x}$<>7!YP z=^WxX$xQ0|JSwRE-L7iJ;u8zN&W~W4FO=vF#pW_^zsG~mS7@pT^9~Xcs3;8Vu%gy1 zb=J#3ESGzrUjkSo6Bk-pxDy76)NR+_{LO~KprOg)f-Qk9g+`VV&|T6?ws zjWSj^0vCs)YhxzO?pY1R<-{JGyNpfqwMgvjoR(h5HT;Q2nAPViIqM!}>tb7$4Nf~F z6Ryc543~E*%ueGvCy#aLmim@6@)kW#2uHn}(rUFNlhpgy$XeKR1v6Wj!3iD*f=N%_ z7nLpG7KL}TX3PbW4b^wu)I7l6#^JYaL}ElV*3b4F3~&5;Yw8@W3%>F?H$@07&m5Ty zEDhSfipKPpV|OQ}Z!@dj95-%Y@rf*#@v!ouA`%e2)W8oZl&5yJd*xN|=`QmyL z!oc8z`K@3C(@L)wfFh?4DCqkNLx3|~gc*A3kY(5%HakZ?Al!n=3Y%Ra!+VqFh%#v znmoHVeip1Cie0R{G#mCMmXzY5H523z)?4@JjPsh@_>-w1)ATR)#i*oU!?9@z9G%HD zE=74X3&E;i>^IwQ?S!vhNP5;MwoHEPlY7!QzDSUtY!c-#S~OWWq_=aSksSx-Ylh`) zStc;2f43qY+jef$+FV|xq%%|1l;kiaJ#B>OMa2>snSRjX>Li~P7UB#R`fUGM^$+n>_tX6H8YU{ZSzob`r`86Bf5uCW+xBLL<(nd?Ryu$ClTyCoEz zfUQ%*iMDpxP4$#kJ83S_oasVFk9m5@M+|iRi)wul$<}G6uoH#aQp5IP4qRfFqyM$C zeI{!@*LBGo*ChrT6)A{}AR>d#bIOB98e;9bTf&V`Lv!B33YmIbCv^~J=D!;|{tGz$ zYfAYLAbCkjiN7CGu(r!h%*_4*PT7QQJGTm1FbVw%xWq4nH3l;&d1q>j+(^(%^EI}S zB1yXS2vEN7syGw) zL1HIS=74ye;?whTwItPnpm#pmUgl{`p?#VbV zZ55kF}TJDBqt6$E^_6#luAX{n~d-EU1k6EVi z8NXJ}b=15W*OS?IzVsw{+5h@S3*T3aTLH@E$UNQ_URAxXg|kWt;NZg{N>l}vrKtYN z8m9jWE8FazN&@NFDUIn!xG3_JCX4ynQ?K|(yp1LlRp8np7NM@6_7O97Ztuok-k}{X zxkf%7VI{W0wP{aU|_T5;VB)rDZ~*8fL7qL;?JzWoa3Jnf;T8 z3LG42#~&>~@1IsWYl+44I*&jEs-hXe!57P_y5^mkn(>vmeM;KH7ce+(vrT32pWQ4BUE?rEj-{W#UTpuK(Uu9cL=9y%n&7#n#} zrjbXbD6=Ho&}Z@shIhjXl2Kj*;c%)Q##QDIo4(;-57;&#JHo;zg`GaE{uvn39p3MF zzk<%{&Q?h$R<84{ZmU-ptpJR3Y#H(*6=Fl6@|S7WMa zfBfWtNBsIzUZIm}NBA4Z_?8U|&0pVi4^7}Ft0F{SOf4&?q!J$kYx_M6>A+ECDLzM^ zspM&?kn|xLW&498yeuO%Xf-Ab0b0A&&Y-CFwCoB8`?{uI2M>k&Z_qlnEe1W}uBs~g zyl1`1y`FqUGYLA-g!R5GEd>Z{UXcF2Qx;l$7CXKj!I>L+UyVn;r7_<7Xx<3sCr?s! z3yM~=HCYps)wo-7JZw-VeQrjqlC(UC`f)uCT=alGKG;U#9TpAhUhq+nRU+Jc1$hY! zu40LFDrbcqYAJ?CW1sa}rIZ5dc%w`10yt&XVqry|T!dLj z#`x}n0FdusvcVwH=}n17^B;xFtt_)>?#DW?A$b5)0Dz^Zti1M+u|SfgCq6pDJ(>lN zEAE9BFG3M9*Y5vLj$zj=0i`4o$VGsm_Dkf^AmjIw_{!;y%%i*F&OlsUv|gf2DVw2s zl|ts@bt#npXf#_^<>wL)UhADNe#>#wG&yae1`E6p$@0NkY^DyBM5N(0We7-HVRs*f z4M{Low&%_X=Cn!?-VeG73@+8%{qR0w-~kQ zRg0nm3;2W53Xm;*A**a%Q_Sp(KK=vc=POB>5c2e(k%VXokraBX@@mS_Ic z6^BK1mvR~}yAKb2VtOZ^tdsR&#)-USH})a169GK~gy*zjnh-!E5FxAC^aWd9CxZwC z47yC&SpQba)L*GT+*uBvokv9Kzq-@p-=CU=~f4m{yyut?A+6usS^HEn2E*KoD7E3 zu04@Y+Gt)TjahUmZ}d~v_qH7O8{%axzufQR?t?=P+tMrwIq|6ESh&rCfs*nDo#*@| zcNfa#{1qPA`p*0?m&<(#dwY7@vX(2k`;AE8Sc*mAUb+@nP}0owln3Kt*$DF3p(7lx zlXV^cKZH2%UtPFP;o=KCB64HI;D1gKP!>hR9$Y}tfGH=CEf;LP(dE%7^V`G9xCPL4 z?&MiHpLOkF6C{VAAlST%<6?v6NWWw-NP03xKNN`o1{}=6#55m#q!3};WL>j)fR)zd ztI`rm+a1+^q}AgYv$x@99P;)E9Ag@@@4isC{TdjcWIcENDSo*Net768Vyh#_SZPb@ zXwMW8$^6zn`xr*^H=C}q2WJ`raF3I?)7QLy!XhQ}vS5+@(^)zKhmuCdfN17Uo{axo z#GcdcV$_>m>Y@YslqO(;$t`gD*~oMZobgZ0 z^fEOG%>bJ$)~3!#l?l!wjL2}+X`DKBocbps*kuW&Eo1R{q0aM z-mH=5HTT32J&ynd?xRjmHV&zOYNM_eA#jjCPQ~0vs$2N9(`ai~6)F!;j7^#gqdh>} zf7hV=ijntiue}PEjh`Ag9GPg}sOv1XdGMndHGFbin?P{Xq3?EO<3O$mSmKXjwcAEC z6owj~ZZd*n9^uVAPyIFiGwNG;Y%zVRnSa!&3u8YVN9jrZ{$q4WE3J`Efr$67%3?dZ zV4?8|x0+3!JHI7!Y4&+YwdvYC1+>pLCuA?`juNVa%c4Ro1 zZ&PA-7q>qJDo7CKU1s&hNyg7NUjl312bQTy!FrZ1g@2KTuQcMe0m7LB{ID4uVoB8I(Qcw<>zRF0wxqMi|1dyz@n6+CHaqIZK{jFq z7)25JVA%=zuh?9I0pox;7-*||Nb5Ap`swp;7>E)ECXFXSDp%5XhT_<5D4&m!j^OX6E){nucEOEeIt%LzM1K{M`H^{l?ZE1q*!dA%3sGN=D`xpm-xW9 zRK>T9f&G|EeOb^N1_yX8hWYFxng_$e$bDu;Nkyli7pw_u?Qp1Ap3?ooG~Y`&H-C6q1`>T&6VxouRImFtNvan(?omUK~};C|#rx zy)`z*{sf-zVAw-rfBBG~$>}Q7=H{{J%ZlVRaVnrtc;%pe&au>aeIk!Fa&w$Rm2${If&K&4L)xCbDl zn<$GPo9BP7J{RX|QHLCM;kih$e{wBM1}Xe^`fc&T)q`d6`@#QKaqyo-l^JF*NCU~P zoA?#pjIg79|Y5hv*r0 zpfRBYhE`SO{nQnT!rs!(ib{6-e(wTd@m7xqxQj<`z<3v*S6Tiw zbGlHwd=IkqOHOX=2)88bi3rAUJjvJ)cxum66^g3z;M2SC`K5Kk|1~BrNmufZ9bhtp zuD$OZ{vjK&IFlsju4!3(h-lhzu)9eQP6Kbde1fqtqT-bI7c#{ql|R*#qbm<0Z+Q?l znCU%Kck42XoCp_3S2$O8CfC_<)!P+9l3l`CXhxI}D>i+s(vD=r7O>!{-P*cg=3zME z59?`#YC}KoLAg(w(_8Mv4IO8cJdH`pgarbWm9=&@yw|K?Cic#5m^tbwk|Bh(&s6lz zUaz8?4*z)Vzt;l%t>Yc=fRO~8g4H_6esOm-=W8BSUPBwi`{IpBW*Th+BZ literal 0 HcmV?d00001 diff --git a/apps/api/docs/database-design.md b/apps/api/docs/database-design.md new file mode 100644 index 00000000..a7dbc45b --- /dev/null +++ b/apps/api/docs/database-design.md @@ -0,0 +1,45 @@ +# Database Design + +This document provides a comprehensive and structured overview of the database design for OsmoX. + +It serves as a reference guide for stakeholders, including developers, database administrators, project managers, and other parties involved in the development, maintenance, and understanding of the application's database. + +The tables discussed below are created as part of the database migration. + +## Database Schema + +The database schema consists of the following 2 tables: + +- **notify_migrations:** Contains the migration records +- **notify_notifications:** Contains details about all the notifications created + +This schema can be visualized in the following image: + +![OsmoX API Database Schema](./assets/OsmoX_database_schema.png) + +The ERD diagram file for this schema can be accessed [here](./assets/OsmoX_database_schema.erd). + +## Data Dictionary + +### notify_migrations + +| Attribute | Data Type | Not Null | Default | Description | +| --------- | ------------ | -------- | ------- | -------------------------------------------------------------- | +| id | int(11) | True | | Primary key, stores the id value for different migrations | +| timestamp | bigint(20) | True | | Stores the timestamp for when the migration record was created | +| name | varchar(255) | True | | Stores the name of the migration ran | + +### notify_notifications + +| Attribute | Data Type | Not Null | Default | Description | +| --------------- | ------------ | -------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | int(11) | True | | Primary key, stores the id value for different notifications | +| channel_type | tinyint(4) | True | | Stores the channel type used for the notification. Can be a value from [Available Channel Types](./usage-guide.md#5-available-channel-types) | +| data | text | True | | Stores JSON data about the notification such as the from/to addresses, subject and body content | +| delivery_status | tinyint(4) | True | 1 | Stores the current delivery status of the notification. Can be a value from [Delivery Status Information](./usage-guide.md#6-delivery-status-information) | +| result | text | False | NULL | Stores the JSON result after attempting to send the notification | +| created_on | timestamp | True | current_timestamp() | Stores the timestamp for the creation of the notification | +| updated_on | timestamp | True | current_timestamp() | Stores the timestamp for the last update to the notification | +| created_by | varchar(255) | True | | Stores the name of the service/app that created the notification | +| updated_by | varchar(255) | True | | Stores the name of the service/app that last updated the notification | +| status | tinyint(4) | True | 1 | Stores whether the notification must be considered as active(1) or inactive(0) |