From 75fd0bd668cd1a7dce49fe92cc69004c32b769b7 Mon Sep 17 00:00:00 2001 From: Eggbertx Date: Mon, 12 Feb 2024 13:38:17 -0800 Subject: [PATCH] Add fingerprinting attributes, update ERD --- sql/Database ERD.drawio | 1286 ++++++++++++++++++++++++++++++++++++++- sql/initdb_master.sql | 94 ++- sql/initdb_mysql.sql | 94 ++- sql/initdb_postgres.sql | 94 ++- sql/initdb_sqlite3.sql | 94 ++- 5 files changed, 1537 insertions(+), 125 deletions(-) diff --git a/sql/Database ERD.drawio b/sql/Database ERD.drawio index aa8337b0..dc454356 100644 --- a/sql/Database ERD.drawio +++ b/sql/Database ERD.drawio @@ -1 +1,1285 @@ -7Z3bkts2EoafZqqyF+PiWdKlM/bYW8nGTuzdJFcqioQk2hSpkJRnJk+/4AE6oamhhgAJxO2kbJEiJQhofAQaP7pv7LvN47vM367/k4YkvrGM8PHGfnNj0T8Ti/5Tnnmqz5gzqzmzyqKwOXc48Sn6mzQnjebsLgpJfnJhkaZxEW1PTwZpkpCgODnnZ1n6cHrZMo1Pv3Xrrwh34lPgx/zZ36OwWNdnp65xOP+eRKs1+2bTaN7Z+Ozi5kS+9sP04eiU/fbGvsvStKhfbR7vSFzWHquX+r77lnf3BctIUnS54WMYPGxf//Lfnz469258+7vx9umX2+ZTvvnxrvnBeeEvl02JiydWDflDtIn9hB79uEyT4lPzjkGPg3UUhz/7T+muLAa9PfjKjn5cp1n0N73ej+lbJj1B386KppUt7+SKT+WdzWdmJKfXfGS/zTw79R//8eTCn/28YKVJ49jf5tGiKl9548bPVlHyY1oU6aa5yI+jVUJfB/SzSMZ+U10q06HHfN2yiiJZQR6PTjV1/Y6kG1JkT/SS5l2vafbG8KfN4cPBiEx2yfrIgCyz6R9+Y7ir/Scf2pa+aJr3iqa2uKaml3PtvPa35Uv604vIj3+jXcpPVuW7Pxbptqm+mCxZdWdNycvXC1bF5lEV19f+WNZbRHvV6+b0JgrD6lOXURzfpXFKW+FNklYGlm/9IEpWP9ffYjuHU78131aeSulHLuOqQ63ph5GkLE1a+IW/2JvmNo2SoqpH90f6P63uO+OVe+PSX3pHj83DMf2/vDwr7tIkLzI/qtqdULt6IKVt/Rhm6fYztSTCfu1xN3DPTMgCTehiB3zerhpDor2mkyHZhiQ7sjk7+vhTbztaHHdPwCa6mtOp7Qgzneeso/yZjeG/0A6sFjvYP9masp08PE7s48gg7CHtweHsYZeTLPE3hJ79YZdEf+3Iv+SAxnjeMqoP05wyA1DF7UgVRh/hVuRyVjQ2U2rL0RYoTosJCAOKNFPwOFPY+nn+kGbhPFiT4Gu+2yBO1MbJ1BoZJxPEiViceC0moD5O2ITqyBZWcbrw43nmJ1+RJGqTxDSmI6PE5Cc8yJJeLNn3SA1hws92fFqr4TxNkCSKk8R2xiYJTnJEk0TfWY7JT3NiWjXzOF1FyBLVWeJ1dedLMx+c4YhmicZTnClnDFE+94Mi+kYQJYqjZDq269WcIUoEo2TaYgXqo8TiJzg5yfOI1hVvFCgK6NrZYVGAbXUcRuznLuLbm5+ToCxgfFmA1TaxUVcXYPETGhQGCBAGuC2WoL4ywG5Rl81lEQZHpcJwMrogwOaXbe5Hx4nm41K7bcCiwbiU93eQx21Eh3qIEsVRMroYwOLdIwiSfoOSSYsRaAAS3tsR0rpEiihOkfGFAMxMESPCMDJrsQL1MWLPuLYn4YqwqT+ttnW6ShM/fns4S+t7l4QkbGr7cM3PaWUbZU1+IUXx1FSlvytSempdbJinjDxGxR/N7eXrP8vXr9zm6M3j0VtvnthBQn/vH8cHR3eVh4fbqqMnwBpvLHs5DUgQlLZVZOlXcvTOYuo6rgG2etOYebrLAnKpNtnWLoaWVoupryur+iI0MhL71erHcTGEG8GMd5YuUj8L57iJ6pI5dPeXvnQX1VRWt5/x7tK6xUd0aXR3mnqGwoOI/k7TmX5O0xnsNL27/8m8xp6OK9CUNNbQ35U6E+pKZR6yYeyEd3/IdaUKXaxB7rzQuyrPnniXSMOdq+Y0yJ1O9iHUWzIod0yDfw6pPs8xr5vnvHzWwtpVs1mLafB9fMA2NV/Spv3mrsQMXTKB5q4zb2L7Xj8rcDtagWOqZQZMpaSRGVzZtYNd9q0qq9mrhR27YwubhiO6iatbX2eZ/3R0QfMAO3zyx/LEYdrsTU+nzaYzOzaXZ6+/dWdn5lWX4GBs+5/SwxHPBLf4aAEqh3m7n7c521UKK5ZjaNesCntGLburIQgfZMCsMCdnGsazoWddzuamM1sSQQ0GY42eWv3MK/TJdAmalxdMyWLZz7ysETnzsmfbmUv41nTdyw+38xvO46SdXT8z+13feAPkPjsdYB9qklArD8iGNPWHaw8itdrOtAHPs1ptT9Zk3HJQrK2i/+/QG/VZeLAclGtLkTQ4+uq1LWfoVQbUR4lDyuiKbfqI5MwHJdu9eaKx1NLhtZb5bvGljNOMOFEcJ+OrtlmMbdRbioOJvoJLy+V3k21Inpfx2xEmisNkfPG25VpIE9E7UzXeTubyDrQiojwp/M0WeaI8T0aP5Wa5GMxNOE/0jeZmuaMuS/3jVj0dPaVVlsd7VaPtfOEDEf2+rwUZzkqM6g/MuVbDefHqjcdWrZ97YDi2NER4vHcVV28UWL3Z91mNVm88WL+Nqzc9hyCedG+rRJsAvK24ejPKjOZ6pIy/ejPh3a24etObJ1o4XFfT/22Cd6/NSbBLH42Hh4fp2w9AasjDTlfjh2RHR4W06JjZS3m0DLmSA1oS73lFsHQHy8XOqTRWWqKoAEETfFrmcL5Ms/k2zYsaMTdlEWyzrF2kjT606bzU41jSLIx3zSJweo5kDt1WGnJEGAQISx44Qbp9qlFDfwuKUdSHitvRfSdtDIOrPYJHMFqs9Xy+d+9XZJN93iy9mfvr+0+OOQUmRlE+L9YZ8UPY0480UYwmkwGdLaAJ8TMipElXmlzsk0rTpCU4Le+2xeQ92rDEYsE0xnPczlAnK9ptO9XCbdvixwfGJyhpUx8k1ugS2QkOS4THSdd4YDLhE19Heb4j4dxHl4n6PHFHl8hOeMcb8qQnT+wWO9CBJ7z+zd9uiR8jT3TgSdfY2xINCPO4COeJxruLJ7zjpEkJhUDRACi2MbrkbYqeE+FA0ddzYjNX3pE5bEm28ROSIE/U5wnLGDligih+xow86Sk7sVrsQH2eWNO2/LdJWuDSjvpAcUf3yE75JxICpefSjsYe2Sn/fMEQKLrQZDq6P3aK/ljhNNHYHzvlNY2Bn8xrnywCRXWgOOboDlmWZhGBIg4o0sPHShQi6Zcran+gYAwUtndUsxgotjFqAhCN00td2uk3Qnap5tazdAeOdRpZZWI7r9zTD6l/E5cC5NpMD45z9k3e5UQP59ebzY+TmonB4ZcQqm3SmIGhzeK7x/BxOmR/ngJPOI9J6YSzzeE9ehjCZ/wQPvtO2CuCD2RK0qK1sM2OGMBH6PjZke7dk2cRvHMvp+WN0gQD+Aw9Hb8eKFD8Hggo0mZfQEYo3PTelyZaePfe34UPf97+7T16qfHhw91ba7uMgE2quyyiJ37YJdFfOwykoTxQoKg9soACWhAuPb6cJhe7pNIwaUkVzTt6wyhDnOiDEzAsz6ADFNPk9f9IlF7jk0O/1I8pQC7LxP+28KsQYFE57UGmqM4UKAvDsJMeXIAUPeXRd/0RyF5ZREWM2ijlOeJ1dOzLMx3cWSaaI/puLIOzViJKtEDJdGw/LGatFI4SfbeUATkrQ5IHWbTFCY4GNLHMAZ2wsAGhF1YwTTROWukC2z/8xzltQjIvNTzIE9V5Yo/thAXSniJP+vFEizViuOi8C7bkSR3KGBAwIk3Uook3tvvVRferaJro6351efdrSJb+Li7mtTkgTxTnyWxsN6yLbljRPNHXDevybtg4Db6SEEGiOEhsc2wnrIdOWNEg0dcJ6/FO2IDOcAoMZKwFTNhOmfFggj5YwTDx9PXBerwP1qdt9rRJd/k88Tc4zVEeKN7YTlgPnbCigaKvE9bjnbDLNAvIfI8VJIrqRJmN7Yj10BErmij6OmI9IM/CrkjLMIFzf1lGa0CgqA2UfYyV8YCCnljRQNHXE+vxntgknUcbCpQciaIHUZyxXbITdMmKJoq+LlkgR2WpPGmCGc9jkqxouRAqikOFJYwcDyromhUMFY0TVgL5KjdRglDRDCqzsd2zmLZSOFT0dc9OePesH9PqnZPNgqBIVnmcuNbYvtkJ+mZF40Rf3yyQAzcjYZTRMs+LtJHeI1RUh4o7tn8WU+EKh4q+/lkgEW5G/tpRqlR7AxEnquNkMrZzFhPhCseJvs5ZIG0lScrSzgNapXG6QqAoDhSPZU0dDyjomBUMFI3zVtoGT5RfUnpcZUqh/1anjFWcLoDEc/TXljV4lOqHyz1y3tT7PAZVbpOLjVYpY5rWYK1chmapr+fb5uokJvt0SCyLjQPMHUyoOaQlGmDapu8mQZPUPF0OWzLRLE+XA4gGo+18UaaA3IURsDPm+0pgxNmKUf2Bnz0CQHFrnuWv8iYAKaAEj7ZEVPD+qsZGRsxJ0j3vkWcoPBIUkPfo+qyhUOIj0KbkmRTvuiozH91dl63kuAZNSSPGf0A6JLGqQxbvYyBD4d1aRbShVeNvtnLYIzTnGrKnS46kYdkDiBCvy7qG2OlmG0K9X8NiB9AmUuQslxpkYVMaOYMgBgr/O2hOdAeQJGIetr48EatKhHgiwiA+37v3K7LJPm+W3sz99f0nx5ze8qLEKG/W+ct5FCJFdaSYUBBgWUwBTQj1iC/nycU+qTRNWhJVABmo87kfVP5CZInqLIECAA87PsGVOeGjE7FLcwPzhB+fkMdtlJU7O5UPjoVAMaEYwAMDBYcnwoGixQDFzOgP/M2531rz26fg9ZvcDv4E8k772y3xY6SJDjSBIgDLogloPjg4eTlLLvZHpUnSQkF+69WWZBs/KX8xskRxllhQEOCBRya480r4yETo1quBecJrWeqFnSQt0HeiPlCgQMADAwV3XQkHinSBikRz4AUqTbAJpInyNIGiAA9LkxkvRkGa9KSJdN2JRHMA0hSUWuzKfYJAUR4oUBDggYGC3hPhqac19p/MbK71/2HbfPhW7Lxphwmjn9+0w65UZNvOPqDNSS/34gp/0Tf6clW+/G9eJsoyinKb3VdCtmVRSsuL8iJtShukWXkJu3mRsXvZGVq+o08EviRdlv1gTQFCcvZl9fMqf8V/7FvaiZ72N+yvT+hf//5I/6rUUHf8fcW6vDiNy8KGFAdlDZVf54dh9RvXJCPA17X9irMuMej2wlaDvWabEAs+wpz2hgF47aHdvuxpJCFDDv+g+Yeh5mxHITFDl0xugF1iM29i+15XOK2m/9sE716bk2CXPhoPDw/Ttx9u7a5sckzRaKpufZ1l/tPRBY1ZHz75Y3niYIG3ZqOAuG+5wGp5uzFp52zj25WXm6fX0xf1D4DvvjVeGe7s8MdxHfvk425np9VTN1fzKWcdZV/FnfrOu0nx8dZ4GzmOa3303rj/s//9+XbynfUcUXtxwZ7jzLo+1aV0nOuNzTz/zBZr69wlWR857SKOe7lHXdGhXmD3cAtY/PJeRsrhPBBUEXcey9x57J02/60FhDfb28jxgMKcypq87KdFxzrXkDcM5Xb9KR17pv+uv0Ov7bPjGDQmaTu6LItf+Ltu1x/u8rvcR6WFpJFnEza/lEenpbRFwvniaX7Y8Gf8kOwo0+nv+Jcc+ojzwSqNnkFQA2wwBlEjzedGp3+cWeHuv76c2fdV/UJfWRbPmW2aFxpsJkacsK0y4+HEQpxIGLZojBP2bSfxmJAkqpPENHi1ydAjE15egCDpOS5pC8yqA0gszhwyWjup8gEJECamzStNhoYJv2sUYdITJlaLHegAE8BZm8+DmNBfjfMc9YHidfT3S7Qg3kWLQOkJFOneWRHmAK6Ju3zjD7Aofv1CNVtGZ6+7LKPzzQcsboO1wva/jLS43XMJ2jRnz8g6+qg6uC9zu62ri1JxuPppLc2bXjIOt/wP6h37xeqXWzqLf6CyOBMW80zHNINrMKSYmgesTbZFR93A+rD16pde4UoWvLxJWVqk4yaFH3aGEg8x61xsaze7ttqeYtwNpme3P8dEPX6Arc2NlgpzOTiXDPblIinH6jhp2sd8Ew8afm2xbnVMzjCsVOpyn1RSKQUXmV9uxNQM/efnlzuv0iHSwaIDG5cxMYPG3Okqm5JnUPzaJKZlEI+cmdD1ymGRw2961F2uqTSGhsAOkKtB2qoDbFT8DhRUV/VljNNiBkptmIeLbnHmoM8q5ndPEyhNw8A4QVGEaJhYLVagPkzA2JPXR2k4irAQdg7LcByHgb5alB+0SUOS1amNv5dICedrgq4D6KaMQec5HlepuDJw5g95frGH9VlFlntmo+7g/6et+bHxo2ZrfjMoMugLcf+wLt9vprfVcRk736hd+50fAh+SeB9shz7qb05j55RfWH14VIbfqSPsNMX4fkLp2O7JA+LWgXRwsyEfEKbBu1ZZ5a9NVvGv6yU92nbL9GJjHW5hJ7cnn1FFUcqqUExl1eeVsZHqxCGqU2UhKTWR7Pi6+rbajKjFGJ/XlV2RhF1Q21Rp5bX1VaZNHv2gODE14/c1SWA7TZruUQ/yyk+s+kEd+6ksfmnAd81FQbrddyC/qui6ALT7k29+tUJ7EkFq7e8jVi1IfX9UdYhyHMzeqT+iWUGty1EW+WKdb6/oHqcAbYb07VO9m9ov3Bx9rp4Ut1bZWx7WtDY+0fPlVz1k/rZ1QH/82BHQhW739+w7EdtochyNCupEpohwVHD8JO1GWf0eyKFPpkvwgewFU7JYdn0gg89Z2+j6RDYZT0fWbHhnS/WTZ4SH59ffWpclHjOz3/XNEEeqIATQU0fbMt/ofD8vPPdMoCLkSvadmY1pMn/PsxFgDVleB4cfPmgRNUdp72X/JVlbhBQENCVpI1EHl2SH8HDuO6x+S7JsOwKXTgXXYcdcObmeNYD8Q1rgctiS+IUTXIftCxaNl054c2jGruoHzfnuYQLEzBkWJkA6WoRJT5jokY8W5iBvDk1C2sodhzhRGydQ4JyBBye8SAxp0m9ooq9EzOFVHfWcJyP5llYYwZmPBLpAqxvyiANE1wGJ40gzMoyFIZo4QkNhQMSRZwy8sCDK57RaI9Skqj96YVl4xhu98Dv6kCX9WCJ93540Y/D4oezpoiBuFndAQ+i9NGizfvgcCPZKCfGhSXgSNBNhXCGUuEIISnw6osYTkWtj2GXDKb8AjTvIJT2J9j1av7VDj59H4w5yZeQK13On6xKiPIPqm+IHkdPJMqRPpOVZCD+RRrnC+JPq61kDbBsfdk7tYVIO8WDRd1Y94Ye8uMKoD06gfePD8mSCmTlEz4ykqyrlGYPVMkw5rDAiUNQGij22ZGGCgShEA8VqsQINgMILoHABURuWeB3FCPLMB+VPolmihfwJ3uFp8E+WnBY4opXFWwWuGl65auicb0TdhwN4dtlQxF7qliYHnh86LBgqndbpKh/9M11RycXBljLzD5PrvPTfvVf+mT4qLdWTRJvglwITf6P8NFdpvAyCkyG3DbaUGYWywkmiRdK4lrLzK3z+YpGRb1ET9xCJojZRhtw72FJmlMsKJ4rQlb1hiWLyS3vbNI+QJjrQZNCtgy32gyt7onFiCl3aGxgnQBKLumIRJqrDpOuuQInWg5544TCR7jcRYQ5gjEuLf7TscpKVrpNyRw9vGeiNv9Ibz4U2NZng/lkGMEmR+Fa3uFZHZ/ygzvjLnVFJXzxcZH4lD13xVz1SLndQpT3xcNH50eki9bNQN4G80qwZgi1DOubhImNeNfFg0Xeo6vJD1cPOG2SJ0iwZ0iUPGw8/4kWW9GSJ22YG6rPE4tUCNUuStEDNgOo0GdQlD5cZJQOiByZaKAbgokOxtfIdCee+8vv2kCVDeuThMqNYQDRLtNAKwDmneKkA88cjSlRHCZD3b1iU2PwUGVHSCyX7/qghSoBFnnyekRX9HYgSxVEyZHQS2Hpw869olEhf05FmDLy3hLYeQZGAPJHArdt1LCFNJACkfpTkaEeNQHeKtLlJ1JUI8N4RVAj0f5q0BRFXXyDAuztQHzD+GPVqrowuDwB2VeCSXk+qCA0FPOgQFchQgOoAPUgyvjgASSKcJI6+KAG2W6E4QBeYjK8NYBNy9JyJYonZ5k/RgCVAEmLUBmiCktGlAcBOT0RJP5QITUE8LEp4hyzzwiNJFCfJ6MoAk/fCIkn6kUS6B1aeMfC+ElQGaEKS0YUBFu8sQZL0I4m+rhKbH6CWYxJUBUhSBVhdZQF7TohvciD7qyQXO+oCukPEbtvYqa4wwOZlRagMEKAza0sPoL40wOanuKgNGH+Uej1bRhcH2Px8F5f0+oJF3xmvw4MF1QGasGR0eYCDLBHOEkdflthtSiOUB2hAk/H1AQ460EQPTPR1oDm81gj1AdqwZHSBgGMhSwQPTPTVGjm81ihYk+BrvtsgSlRHyegKAQe1RqJRoq/WyHW4tifhirB1Clpt63SVJn789nCW1vcuCUnY1Pbhmp/TyjbKmvxCiuKpqUp/V6T01LrYsJU98hgVfxy9/rP8qFduc/SGLdhVB0/sIKG/94/jg6O7ysPDbdURu4+2efqVMHu8seyZN7F978xO6Xlihi6ZgK3eNGae7rKAXKjNZnhaMLLctASSZ8+esqovQiMjsV9E38hJMSAjqG59nWX+09EFTT84fPLH8sTRsqN3uurYrPjft1zusAnNyy43m/IfzLUu78F49z+8hz27uthzu12+1NLF2zMLIjuWQfM25XmvvKM/kzMLO1uvqsvdfMbB9Dr3E2bojWOQs/R/UL/xdOk3wp4Di6nruEC/WU4DEgS9+g0LmPpsv7GUeA6c22eTcbzVQMewz4ku9tluZ4K4LsA+mVN+JPvkLOosj7k3fTV1J6ZjNX+fDX77Uh0241uzGTsoZfb8EsQvKT2uxBL03+qUsYrThR9zHYTORYpTe+a0bK2imEord3FKVfaWvJkrsTlYmeewvr7VNruL4szJeQMBM2cTmiwJUK3A+Z+ASGvbNK+NDCWQvVp7Zp+2tmtzjb1v2OPGdhxpCdR0FUB6hsI+tqsEkM/0wj4KSNCY5GWt7y2BPK48U5IbTitJ5DN9Vogrjs2KhgmXxD/ri3VG/FAD7ZLSyBkEMYAQEkSMxChJGNxEuGd/3yel4URe/lcPikgwpw0yL8esSBTViQLIIaURpcWCcKVQ9PjEE7pUKAsoMclfx7/dzbLtu+lfb7N3P7130ltAwLRFiqhOEUgGKQ0joN3wPhOESFeIXOyISiMEtl9AEhvQKU5BwnkKbCRGmCgGE0AHOfCYBNDRIk76jUn2nVJHoPBDVB3iJCFKIB3k0Cjh/fuIkp4oEZp1emCU8C76Iou2QRoiTtTHCRAuaWicYKpY4TgRmit2WJxMgbQ6+TxLYzLPaev4xS5DrijPlX3WpfG4MsWIjqK5MhW6KX1grvDLxGTjR7z8C1miGkvsAV2xcKFnuCVdOEs0XiKeAQkwdosvtMxIE+Vp4o3ui53h0o5omsw0XtyZ8YKTDclzf4XzHPVpMhvdHTtDtYlwmmihNmkpO++db2gyz/wHJIrqRLHN0T2yM96jj0TpSRTp+nqJ5sB7ZLd+nj+kWYg4UR4nLALWiDhBR6xwnOjriLUMfroTkpgUWoT0Q6DY3tjeWMvAGY9goBw6pdJAgfcaAduN83mDFOSJ8jyZDeiPhQ0Ipzuit//pO9uxAP3JwqdlDud7p6xGiVaQL441tofWQiWK8PGKxkoUy+AHLGVOwO8+Gg4XAcyo/sD2zRvK9YGS9hi4EDvHAEhhs+ivEmyDH4toETtH6fjU/WPnHPpsr9g5oDHJip1jGfxIBtMHipgrC1VXy8of2FJ2fihSRrXQIFSO0oQZhChQqByIKBJHLryGFkPl9MbJtMUQlIqCD5edhZE8T2+dZiEd4tGJ8i6J/tqRqoi0hLQ6atgoP2/WhTYP66ggn2g5yzMPmb+VSiAotA44pplKMzjcxi6aP/s+LG84I88cLM4c6NSWzjz9eF6CSIc97bqgRh5WTMhFN+zIxuQXpZErPbnS5qrVYVzDD3QRJ9rgxBl9omTx42LESU+caJHDtMUc+FErJh7UBieTjrMeifbDD3MRJ/1w0rpcpANO+MFq5XWp0oogT1TnyQwQUA7MExRQCueJFrlMLfL3/Ou3x/jz+vWvX353v66MN7NbMN55TmswJpn6CkoEyr47DwEU0IIQJy/HycUuqTRMfvFnv0Uz992Ht2Y0eefcv/vv59dAtPO6JEgR1SniDuiEBU0HJzkvp8jFvqgfRfghSfO1iBHVMTIZ0PkK2g4ORgRjRN/BCC+0Lta7zSLxo3iOwxIteGIbA3pfQSPC3WGCeSJ0c9igPOEF1Qee4ABFE6BYA7pfQSvC3WCCgSJ0L5gsoMAbZfmmJ+GKsB0rtNbW6SpN/Pjt4Syt7l0SkrCp7MM1P6eVaZQV+YUUxVNTk2XC+ZuTdPbkMSr+aG4vX/9Zvn7lNkdvHo/eevPEDhL6e/9gH1AeHN1VHh5uq47Yfe2buvjGbRotT3dZQC7U2qTpQQUjSBseWNKjsk4vsiEjsV9E38hJOcS3tjNKaw/XcscNArecJ7pBmls/lsi52W/tm7FevFcYWqcfUdtYc9ehWV9nmf90dFlDsqu/577l+um03/VNYMKDEdYFPpjkvgpfbqUTaNZU5tP+7jeottp99z2nE+O0QV1+drPP8HT6BBKw5fRil8Qdp2PtOL3cC/tsOAVNScTmQrjIuN9URjCViRbbTS8O1I5jqaR+FuJ2U4kTZUE4AXabtjyZZBkPbjYVzxIt9pqCRWd7D4/MIU6DryhQUp4kwK7RYUkyxc1dgjmy74wacoRfH85p03yNkCTKk8Q0eN/9wCjB3MeiUSI09fGwKOGnN34SrFNUTWuAEpsXTQ+MEn5+gyjphxJ9ZzdAgsngKYjLxkGUqI4Sho3RUALko0SU9ItgLT0ojrznCr+gE9OqmS92my2yRHWWTMd2uwLxz5El/YYl0hdwRBjD+7vw4c/bv71HLzU+fLh7a22XESB41Ce1xnfPkn0EpiFYApoPKh1fjpKL/VE/kvCTXX2SfiFJ7AH9rqD5AIFmESW9UKJFOC3YFoA95mkW0hYsSIYiRa75rxYpHqIjsRw6ZlcPh4hQr3CjW1yjo0xxUJni5b6opEwRLjKvBkCZYv/nifxwr/IsgpcEHGSKGiV7U5o1Q7BlSM0iXGReHoCaxb5g0UIgABedd8XTUeRyifpn9VkypGoRLjLvfEWW9GWJvq54k3em1ixJ0gKjvqpOk0GVi3CZUW4kGiZayI3AogP5CaI836E3XguWDCldhM0H9UaCWbLvkBqyhPfM5sTPAgyupjxIhhQuwraDO7NEg0S6G1aeMfBu2CifZ2RFfweiRHGUDKlbhK0Hd2aJRom+jleLd5YEa9rUZF6kyBLFWTK+btFCX4lolmjsK/G4th8wRiN7fVWMxv1Bt0h/x9Z4Y9nEDF0yuQEiAM68ie17YKsDsRsvruaNELuxufUsxJ7DTJPRxzmTGdQlfXmoQKahauLZcKH+2Pca8NusmKxYL7vcbCpGVORAuKdMvrOespwGJAignrKYuo5r9OspXseeYknpKNeGwjwzOLeJzNxqoHLt8/O9e78im+zzZunN3F/ff3LM6S1vnr2NL/TzdXV/HVw1pKWuHrzptnrs0jP3UVnIN51tASw5YArgdaPFu71U6qNR1OcqkOjCT8p6yMg3UpmUscsr4a6xzOgIiY4I6EUFHdSUv5hFHqUlMBa70oCStKh+Qb5Nk7C5Kq0uJXw2XTrYKE5b7LSrNoOvC+OxvdC2VbL3sI4K8omOw8rvfMj8LUe11obvrsm1ziLBTiFJrgWMi2ZG/9ZN4i+P0w+zcPfHrf/Xb0H81++7f0OK3M9rQk+E5UjTz0n9+/IoTar2CtKsbMiynco23mVVbRxfky5vLC8u22uR0Ver8lVx/pFxLdC27pdptilXq0rL2NIWKkeSG2oT1afeb+PdKko62EP3dq4E2xfH0CUf8mZwLKbZTeOs3em4yHrlck2/b2bRgkm46bmWZw0037fm+XQJVfjXNr3puKdNb09MoOnBqTFTLwlver7TH/U6GY4VVOOD5nSxXyopxgdLjFr8nt6Wi51UaSk+WHJ+Caj1gYJeWzFeWzEkGVJ6D5YYl38EQ0TF1R96mKV0/nfkFqDzrfV/0pCUV/wf \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sql/initdb_master.sql b/sql/initdb_master.sql index ec7d9c7f..4cd33d34 100644 --- a/sql/initdb_master.sql +++ b/sql/initdb_master.sql @@ -3,7 +3,7 @@ -- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces -- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions -- Foreign and unique constraints must be named so they can be dropped. --- MYSQL requires constraint names to be unique globally, hence the long constraint names. +-- MySQL requires constraint names to be unique globally, hence the long constraint names. -- Database version: 1 CREATE TABLE DBPREFIXdatabase_version( @@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards( redirect_to_thread BOOL NOT NULL, require_file BOOL NOT NULL, enable_catalog BOOL NOT NULL, - CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), + CONSTRAINT boards_section_id_fk + FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), CONSTRAINT boards_dir_unique UNIQUE(dir), CONSTRAINT boards_uri_unique UNIQUE(uri) ); @@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads( last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, is_deleted BOOL NOT NULL DEFAULT FALSE, - CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE + CONSTRAINT threads_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE ); CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted); @@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts( banned_message TEXT, flag VARCHAR(45) NOT NULL DEFAULT '', country VARCHAR(80) NOT NULL DEFAULT '', - CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE + CONSTRAINT posts_thread_id_fk + FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE ); CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post); @@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles( thumbnail_height INT NOT NULL, width INT NOT NULL, height INT NOT NULL, - CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, + CONSTRAINT files_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order) ); @@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions( staff_id {fk to serial} NOT NULL, expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, data VARCHAR(45) NOT NULL, - CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE + CONSTRAINT sessions_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXboard_staff( board_id {fk to serial} NOT NULL, staff_id {fk to serial} NOT NULL, - CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, - CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) + CONSTRAINT board_staff_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT board_staff_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, + CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) ); CREATE TABLE DBPREFIXannouncements( @@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban( staff_note VARCHAR(255) NOT NULL, message TEXT NOT NULL, can_appeal BOOL NOT NULL, - CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL + CONSTRAINT ip_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_banned_for_post_id_fk + FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) + ON DELETE SET NULL ); CREATE TABLE DBPREFIXip_ban_audit( @@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit( message TEXT NOT NULL, can_appeal BOOL NOT NULL, PRIMARY KEY(ip_ban_id, timestamp), - CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT ip_ban_audit_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXip_ban_appeals( @@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals( appeal_text TEXT NOT NULL, staff_response TEXT, is_denied BOOL NOT NULL, - CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXip_ban_appeals_audit( @@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit( staff_response TEXT, is_denied BOOL NOT NULL, PRIMARY KEY(appeal_id, timestamp), - CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_audit_appeal_id_fk + FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) + ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports( - id {serial pk}, + id {serial pk}, handled_by_staff_id {fk to serial}, post_id {fk to serial} NOT NULL, ip {inet} NOT NULL, reason TEXT NOT NULL, is_cleared BOOL NOT NULL, - CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE + CONSTRAINT reports_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports_audit( @@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit( timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, handled_by_staff_id {fk to serial}, is_cleared BOOL NOT NULL, - CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE + CONSTRAINT reports_audit_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_audit_report_id_fk + FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXfilename_ban( @@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, filename VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT filename_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT filename_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXusername_ban( @@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, username VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT username_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT username_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXfile_ban( @@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban( staff_note VARCHAR(255) NOT NULL, issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, checksum TEXT NOT NULL, - CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + fingerprinter VARCHAR(64), + ban_ip BOOL NOT NULL, + ban_ip_message TEXT, + CONSTRAINT file_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT file_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXwordfilters( @@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters( search VARCHAR(75) NOT NULL, is_regex BOOL NOT NULL, change_to VARCHAR(75) NOT NULL, - CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT wordfilters_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), CONSTRAINT wordfilters_search_check CHECK (search <> '') ); INSERT INTO DBPREFIXdatabase_version(component, version) -VALUES('gochan', 3); \ No newline at end of file + VALUES('gochan', 3); diff --git a/sql/initdb_mysql.sql b/sql/initdb_mysql.sql index 1cf455fb..cf3a3c3e 100644 --- a/sql/initdb_mysql.sql +++ b/sql/initdb_mysql.sql @@ -3,7 +3,7 @@ -- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces -- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions -- Foreign and unique constraints must be named so they can be dropped. --- MYSQL requires constraint names to be unique globally, hence the long constraint names. +-- MySQL requires constraint names to be unique globally, hence the long constraint names. -- Database version: 1 CREATE TABLE DBPREFIXdatabase_version( @@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards( redirect_to_thread BOOL NOT NULL, require_file BOOL NOT NULL, enable_catalog BOOL NOT NULL, - CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), + CONSTRAINT boards_section_id_fk + FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), CONSTRAINT boards_dir_unique UNIQUE(dir), CONSTRAINT boards_uri_unique UNIQUE(uri) ); @@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads( last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, is_deleted BOOL NOT NULL DEFAULT FALSE, - CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE + CONSTRAINT threads_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE ); CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted); @@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts( banned_message TEXT, flag VARCHAR(45) NOT NULL DEFAULT '', country VARCHAR(80) NOT NULL DEFAULT '', - CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE + CONSTRAINT posts_thread_id_fk + FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE ); CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post); @@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles( thumbnail_height INT NOT NULL, width INT NOT NULL, height INT NOT NULL, - CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, + CONSTRAINT files_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order) ); @@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions( staff_id BIGINT NOT NULL, expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, data VARCHAR(45) NOT NULL, - CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE + CONSTRAINT sessions_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXboard_staff( board_id BIGINT NOT NULL, staff_id BIGINT NOT NULL, - CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, - CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) + CONSTRAINT board_staff_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT board_staff_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, + CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) ); CREATE TABLE DBPREFIXannouncements( @@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban( staff_note VARCHAR(255) NOT NULL, message TEXT NOT NULL, can_appeal BOOL NOT NULL, - CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL + CONSTRAINT ip_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_banned_for_post_id_fk + FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) + ON DELETE SET NULL ); CREATE TABLE DBPREFIXip_ban_audit( @@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit( message TEXT NOT NULL, can_appeal BOOL NOT NULL, PRIMARY KEY(ip_ban_id, timestamp), - CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT ip_ban_audit_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXip_ban_appeals( @@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals( appeal_text TEXT NOT NULL, staff_response TEXT, is_denied BOOL NOT NULL, - CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXip_ban_appeals_audit( @@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit( staff_response TEXT, is_denied BOOL NOT NULL, PRIMARY KEY(appeal_id, timestamp), - CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_audit_appeal_id_fk + FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) + ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports( - id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY, + id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY, handled_by_staff_id BIGINT, post_id BIGINT NOT NULL, ip VARBINARY(16) NOT NULL, reason TEXT NOT NULL, is_cleared BOOL NOT NULL, - CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE + CONSTRAINT reports_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports_audit( @@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit( timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, handled_by_staff_id BIGINT, is_cleared BOOL NOT NULL, - CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE + CONSTRAINT reports_audit_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_audit_report_id_fk + FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXfilename_ban( @@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, filename VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT filename_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT filename_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXusername_ban( @@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, username VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT username_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT username_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXfile_ban( @@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban( staff_note VARCHAR(255) NOT NULL, issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, checksum TEXT NOT NULL, - CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + fingerprinter VARCHAR(64), + ban_ip BOOL NOT NULL, + ban_ip_message TEXT, + CONSTRAINT file_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT file_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXwordfilters( @@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters( search VARCHAR(75) NOT NULL, is_regex BOOL NOT NULL, change_to VARCHAR(75) NOT NULL, - CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT wordfilters_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), CONSTRAINT wordfilters_search_check CHECK (search <> '') ); INSERT INTO DBPREFIXdatabase_version(component, version) -VALUES('gochan', 3); + VALUES('gochan', 3); diff --git a/sql/initdb_postgres.sql b/sql/initdb_postgres.sql index a0e96f07..79df51b4 100644 --- a/sql/initdb_postgres.sql +++ b/sql/initdb_postgres.sql @@ -3,7 +3,7 @@ -- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces -- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions -- Foreign and unique constraints must be named so they can be dropped. --- MYSQL requires constraint names to be unique globally, hence the long constraint names. +-- MySQL requires constraint names to be unique globally, hence the long constraint names. -- Database version: 1 CREATE TABLE DBPREFIXdatabase_version( @@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards( redirect_to_thread BOOL NOT NULL, require_file BOOL NOT NULL, enable_catalog BOOL NOT NULL, - CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), + CONSTRAINT boards_section_id_fk + FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), CONSTRAINT boards_dir_unique UNIQUE(dir), CONSTRAINT boards_uri_unique UNIQUE(uri) ); @@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads( last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, is_deleted BOOL NOT NULL DEFAULT FALSE, - CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE + CONSTRAINT threads_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE ); CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted); @@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts( banned_message TEXT, flag VARCHAR(45) NOT NULL DEFAULT '', country VARCHAR(80) NOT NULL DEFAULT '', - CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE + CONSTRAINT posts_thread_id_fk + FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE ); CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post); @@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles( thumbnail_height INT NOT NULL, width INT NOT NULL, height INT NOT NULL, - CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, + CONSTRAINT files_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order) ); @@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions( staff_id BIGINT NOT NULL, expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, data VARCHAR(45) NOT NULL, - CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE + CONSTRAINT sessions_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXboard_staff( board_id BIGINT NOT NULL, staff_id BIGINT NOT NULL, - CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, - CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) + CONSTRAINT board_staff_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT board_staff_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, + CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) ); CREATE TABLE DBPREFIXannouncements( @@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban( staff_note VARCHAR(255) NOT NULL, message TEXT NOT NULL, can_appeal BOOL NOT NULL, - CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL + CONSTRAINT ip_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_banned_for_post_id_fk + FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) + ON DELETE SET NULL ); CREATE TABLE DBPREFIXip_ban_audit( @@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit( message TEXT NOT NULL, can_appeal BOOL NOT NULL, PRIMARY KEY(ip_ban_id, timestamp), - CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT ip_ban_audit_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXip_ban_appeals( @@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals( appeal_text TEXT NOT NULL, staff_response TEXT, is_denied BOOL NOT NULL, - CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXip_ban_appeals_audit( @@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit( staff_response TEXT, is_denied BOOL NOT NULL, PRIMARY KEY(appeal_id, timestamp), - CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_audit_appeal_id_fk + FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) + ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports( - id BIGSERIAL PRIMARY KEY, + id BIGSERIAL PRIMARY KEY, handled_by_staff_id BIGINT, post_id BIGINT NOT NULL, ip INET NOT NULL, reason TEXT NOT NULL, is_cleared BOOL NOT NULL, - CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE + CONSTRAINT reports_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports_audit( @@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit( timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, handled_by_staff_id BIGINT, is_cleared BOOL NOT NULL, - CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE + CONSTRAINT reports_audit_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_audit_report_id_fk + FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXfilename_ban( @@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, filename VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT filename_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT filename_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXusername_ban( @@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, username VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT username_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT username_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXfile_ban( @@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban( staff_note VARCHAR(255) NOT NULL, issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, checksum TEXT NOT NULL, - CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + fingerprinter VARCHAR(64), + ban_ip BOOL NOT NULL, + ban_ip_message TEXT, + CONSTRAINT file_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT file_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXwordfilters( @@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters( search VARCHAR(75) NOT NULL, is_regex BOOL NOT NULL, change_to VARCHAR(75) NOT NULL, - CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT wordfilters_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), CONSTRAINT wordfilters_search_check CHECK (search <> '') ); INSERT INTO DBPREFIXdatabase_version(component, version) -VALUES('gochan', 3); + VALUES('gochan', 3); diff --git a/sql/initdb_sqlite3.sql b/sql/initdb_sqlite3.sql index d5107b52..fb3858c7 100644 --- a/sql/initdb_sqlite3.sql +++ b/sql/initdb_sqlite3.sql @@ -3,7 +3,7 @@ -- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces -- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions -- Foreign and unique constraints must be named so they can be dropped. --- MYSQL requires constraint names to be unique globally, hence the long constraint names. +-- MySQL requires constraint names to be unique globally, hence the long constraint names. -- Database version: 1 CREATE TABLE DBPREFIXdatabase_version( @@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards( redirect_to_thread BOOL NOT NULL, require_file BOOL NOT NULL, enable_catalog BOOL NOT NULL, - CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), + CONSTRAINT boards_section_id_fk + FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id), CONSTRAINT boards_dir_unique UNIQUE(dir), CONSTRAINT boards_uri_unique UNIQUE(uri) ); @@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads( last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, is_deleted BOOL NOT NULL DEFAULT FALSE, - CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE + CONSTRAINT threads_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE ); CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted); @@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts( banned_message TEXT, flag VARCHAR(45) NOT NULL DEFAULT '', country VARCHAR(80) NOT NULL DEFAULT '', - CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE + CONSTRAINT posts_thread_id_fk + FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE ); CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post); @@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles( thumbnail_height INT NOT NULL, width INT NOT NULL, height INT NOT NULL, - CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, + CONSTRAINT files_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE, CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order) ); @@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions( staff_id BIGINT NOT NULL, expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, data VARCHAR(45) NOT NULL, - CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE + CONSTRAINT sessions_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXboard_staff( board_id BIGINT NOT NULL, staff_id BIGINT NOT NULL, - CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, - CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) + CONSTRAINT board_staff_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT board_staff_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE, + CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id) ); CREATE TABLE DBPREFIXannouncements( @@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban( staff_note VARCHAR(255) NOT NULL, message TEXT NOT NULL, can_appeal BOOL NOT NULL, - CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL + CONSTRAINT ip_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_banned_for_post_id_fk + FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) + ON DELETE SET NULL ); CREATE TABLE DBPREFIXip_ban_audit( @@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit( message TEXT NOT NULL, can_appeal BOOL NOT NULL, PRIMARY KEY(ip_ban_id, timestamp), - CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, - CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT ip_ban_audit_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE, + CONSTRAINT ip_ban_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXip_ban_appeals( @@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals( appeal_text TEXT NOT NULL, staff_response TEXT, is_denied BOOL NOT NULL, - CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_ip_ban_id_fk + FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXip_ban_appeals_audit( @@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit( staff_response TEXT, is_denied BOOL NOT NULL, PRIMARY KEY(appeal_id, timestamp), - CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE + CONSTRAINT ip_ban_appeals_audit_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT ip_ban_appeals_audit_appeal_id_fk + FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) + ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports( - id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, handled_by_staff_id BIGINT, post_id BIGINT NOT NULL, ip VARCHAR(45) NOT NULL, reason TEXT NOT NULL, is_cleared BOOL NOT NULL, - CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE + CONSTRAINT reports_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_post_id_fk + FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXreports_audit( @@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit( timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, handled_by_staff_id BIGINT, is_cleared BOOL NOT NULL, - CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), - CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE + CONSTRAINT reports_audit_handled_by_staff_id_fk + FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT reports_audit_report_id_fk + FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE ); CREATE TABLE DBPREFIXfilename_ban( @@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, filename VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT filename_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT filename_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXusername_ban( @@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban( issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, username VARCHAR(255) NOT NULL, is_regex BOOL NOT NULL, - CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + CONSTRAINT username_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT username_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXfile_ban( @@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban( staff_note VARCHAR(255) NOT NULL, issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, checksum TEXT NOT NULL, - CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, - CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) + fingerprinter VARCHAR(64), + ban_ip BOOL NOT NULL, + ban_ip_message TEXT, + CONSTRAINT file_ban_board_id_fk + FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE, + CONSTRAINT file_ban_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ); CREATE TABLE DBPREFIXwordfilters( @@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters( search VARCHAR(75) NOT NULL, is_regex BOOL NOT NULL, change_to VARCHAR(75) NOT NULL, - CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), + CONSTRAINT wordfilters_staff_id_fk + FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id), CONSTRAINT wordfilters_search_check CHECK (search <> '') ); INSERT INTO DBPREFIXdatabase_version(component, version) -VALUES('gochan', 3); + VALUES('gochan', 3);