From 1c7b7b6d190370cfc8e5d1f4258e4edf73dc46cf Mon Sep 17 00:00:00 2001 From: htylight Date: Thu, 3 Aug 2023 15:52:25 +0800 Subject: [PATCH] implement deleting friend --- Pipfile | 1 + Pipfile.lock | 458 ++++++++++++++++++--------------------- src/crud/contact_crud.py | 37 +++- src/main.py | 12 +- src/routers/contact.py | 30 ++- src/routers/message.py | 10 + src/utils/web_socket.py | 13 ++ 7 files changed, 300 insertions(+), 261 deletions(-) create mode 100644 src/routers/message.py create mode 100644 src/utils/web_socket.py diff --git a/Pipfile b/Pipfile index 793bc28..7671fd6 100755 --- a/Pipfile +++ b/Pipfile @@ -14,6 +14,7 @@ passlib = {version = "*", extras = ["bcrypt"]} python-multipart = "*" anyio = "*" python-jose = {extras = ["cryptography"], version = "*"} +websockets = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 784adbf..a23aea3 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "53ff9caaa7f0e9d91970299cf27c88b4f6d53d8758c289e8cc851e585931bc48" + "sha256": "a3ab3ced33ab07bb3bb2263ef4e28c4ad317599d097ee1b429802cb3f234d84f" }, "pipfile-spec": 6, "requires": { @@ -114,11 +114,11 @@ }, "certifi": { "hashes": [ - "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", - "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" + "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", + "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9" ], "markers": "python_version >= '3.6'", - "version": "==2023.5.7" + "version": "==2023.7.22" }, "cffi": { "hashes": [ @@ -191,11 +191,11 @@ }, "click": { "hashes": [ - "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3", - "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37" + "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd", + "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5" ], "markers": "python_version >= '3.7'", - "version": "==8.1.4" + "version": "==8.1.6" }, "cryptography": { "hashes": [ @@ -227,13 +227,11 @@ }, "dnspython": { "hashes": [ - "sha256:224e32b03eb46be70e12ef6d64e0be123a64e621ab4c0822ff6d450d52a540b9", - "sha256:36565511acce19ee18048b9ea0d25b76d2a2a56e8b5dfaf2ec52deb616f307b4", - "sha256:4f5226f7378abd4e01181df1e5daa536af9dfdca72cc41f117847e5583d2fed6", - "sha256:89141536394f909066cabd112e3e1a37e4e654db00a25308b0f130bc3152eb46" + "sha256:5b7488477388b8c0b70a8ce93b227c5603bc7b77f1565afe8e729c36c51447d7", + "sha256:c33971c79af5be968bb897e95c2448e11a645ee84d93b265ce0b7aabe5dfdca8" ], - "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==2.3.0" + "markers": "python_version >= '3.8' and python_version < '4.0'", + "version": "==2.4.1" }, "ecdsa": { "hashes": [ @@ -259,17 +257,11 @@ "all" ], "hashes": [ - "sha256:271662daf986da8fa98dc2b7c7f61c4abdfdccfb4786d79ed8b2878f172c6d5f", - "sha256:2e699a1c924ecbda8b4e942ddd04899038d9bfb39077a1ef7a3164879609dc11", - "sha256:3e45c7209410503e4f372e38d9f47ec01cc1e23bbd4a796f6dfe23023584f622", - "sha256:5046988387cfe6e1401db3cf749c2000d8eb33eb1e5846fa68c369ad5d8528ec", - "sha256:67882763f965ed0cb3b2d9de4c90a9f15a2d972682c5cc386969237f8961d238", - "sha256:9b382e75d936ad0cd03adf586f61cc37e4c3e834f04901dedf49af44052b52df", - "sha256:acb5f941ea8215663283c10018323ba7ea737c571b67fc7e88e9469c7eb1d12e", - "sha256:c6e2a839f2f8db31adee343cddadad2c5af6be1511a83ecfca894c10c2fe175e" + "sha256:522700d7a469e4a973d92321ab93312448fbe20fca9c8da97effc7e7bc56df23", + "sha256:ec6dd52bfc4eff3063cfcd0713b43c87640fefb2687bbbe3d8a08d94049cdf32" ], "index": "pypi", - "version": "==0.100.0" + "version": "==0.100.1" }, "greenlet": { "hashes": [ @@ -659,118 +651,118 @@ }, "pydantic": { "hashes": [ - "sha256:b802f5245b8576315fe619e5989fd083448fa1258638ef9dac301ca60878396d", - "sha256:f5581e0c79b2ec2fa25a9d30d766629811cdda022107fa73d022ab5578873ae3" + "sha256:22d63db5ce4831afd16e7c58b3192d3faf8f79154980d9397d9867254310ba4b", + "sha256:43bdbf359d6304c57afda15c2b95797295b702948082d4c23851ce752f21da70" ], "markers": "python_version >= '3.7'", - "version": "==2.0.2" + "version": "==2.1.1" }, "pydantic-core": { "hashes": [ - "sha256:017700236ea2e7afbef5d3803559c80bd8720306778ebd49268de7ce9972e83e", - "sha256:047e782b9918f35ef534ced36f1fd2064f5581229b7a15e4d3177387a6b53134", - "sha256:0681472245ef182554208a25d16884c84f1c5a69f14e6169b88932e5da739a1c", - "sha256:06ae67547251135a1b3f8dd465797b13146295a3866bc12ddd73f7512787bb7c", - "sha256:080a7af828388284a68ad7d3d3eac3bcfff6a580292849aff087e7d556ec42d4", - "sha256:0855cf8b760fb40f97f0226cb527c8a94a2ab9d8179628beae20d6939aaeacb0", - "sha256:087ddbb754575618a8832ee4ab52fe7eb332f502e2a56088b53dbeb5c4efdf9f", - "sha256:0b5d37aedea5963f2097bddbcdb255483191646a52d40d8bb66d61c190fcac91", - "sha256:0be2e2812a43205728a06c9d0fd090432cd76a9bb5bff2bfcfdf8b0e27d51851", - "sha256:0e5761ce986ec709897b1b965fad9743f301500434bea3cbab2b6e662571580f", - "sha256:15eb4cb543ed36f6a4f16e3bee7aa7ed1c3757be95a3f3bbb2b82b9887131e0f", - "sha256:1635a37137fafbc6ee0a8c879857e05b30b1aabaa927e653872b71f1501b1502", - "sha256:1a5c4475510d1a9cc1458a26cfc21442223e52ce9adb640775c38739315d03c7", - "sha256:1c917f7a41d9d09b8b024a5d65cf37e5588ccdb6e610d2df565fb7186b1f3b1c", - "sha256:2278ca0b0dfbcfb1e12fa58570916dc260dc72bee5e6e342debf5329d8204688", - "sha256:24c3c9180a2d19d640bacc2d00f497a9a1f2abadb2a9ee201b56bb03bc5343bd", - "sha256:2575664f0a559a7b951a518f6f34c23cab7190f34f8220b8c8218c4f403147ee", - "sha256:2ca2d2d5ab65fb40dd05259965006edcc62a9d9b30102737c0a6f45bcbd254e8", - "sha256:2ee3ae58f271851362f6c9b33e4c9f9e866557ec7d8c03dc091e9b5aa5566cec", - "sha256:3747a4178139ebf3f19541285b2eb7c886890ca4eb7eec851578c02a13cc1385", - "sha256:4663293a36a851a860b1299c50837914269fca127434911297dd39fea9667a01", - "sha256:46cd323371aa7e4053010ccdb94063a4273aa9e5dbe97f8a1147faa769de8d8d", - "sha256:4938b32c09dbcecbeb652327cb4a449b1ef1a1bf6c8fc2c8241aa6b8f6d63b54", - "sha256:4ac140d54da366672f6b91f9a1e8e2d4e7e72720143353501ae886d3fca03272", - "sha256:4aff436c23c68449601b3fba7075b4f37ef8fbb893c8c1ed3ef898f090332b1e", - "sha256:4e67f9b9dfda2e42b39459cbf99d319ccb90da151e35cead3521975b2afbf673", - "sha256:5056afea59651c4e47ec6dadbb77ccae4742c059a3d12bc1c0e393d189d2970d", - "sha256:51968887d6bd1eaa7fc7759701ea8ccb470c04654beaa8ede6835b0533f206a9", - "sha256:5948af62f323252d56acaec8ebfca5f15933f6b72f8dbe3bf21ee97b2d10e3f0", - "sha256:5a014ee88980013d192a718cbb88e8cea20acd3afad69bc6d15672d05a49cdb6", - "sha256:60b7239206a2f61ad89c7518adfacb3ccd6662eaa07c5e437317aea2615a1f18", - "sha256:682ff9228c838018c47dfa89b3d84cca45f88cacde28807ab8296ec221862af4", - "sha256:68a2a767953c707d9575dcf14d8edee7930527ee0141a8bb612c22d1f1059f9a", - "sha256:6bf00f56a4468f5b03dadb672a5f1d24aea303d4ccffe8a0f548c9e36017edd3", - "sha256:6e3bcb4a9bc209a61ea2aceb7433ce2ece32c7e670b0c06848bf870c9b3e7d87", - "sha256:7345b1741bf66a9d8ed0ec291c3eabd534444e139e1ea6db5742ac9fd3be2530", - "sha256:74a33aa69d476773230396396afb8e11908f8dafdcfd422e746770599a3f889d", - "sha256:7648e48ba263ca0a8a2dc55a60a219c9133fb101ba52c89a14a29fb3d4322ca3", - "sha256:7684b5fb906b37e940c5df3f57118f32e033af5e4770e5ae2ae56fbd2fe1a30a", - "sha256:76c9c55462740d728b344e3a087775846516c3fee31ec56e2075faa7cfcafcbf", - "sha256:7c7ad8958aadfbcd664078002246796ecd5566b64b22f6af4fd1bbcec6bf8f60", - "sha256:7ff6bfe63f447a509ed4d368a7f4ba6a7abc03bc4744fc3fb30f2ffab73f3821", - "sha256:804cf8f6a859620f8eb754c02f7770f61c3e9c519f8338c331d555b3d6976e3c", - "sha256:8125152b03dd91deca5afe5b933a1994b39405adf6be2fe8dce3632319283f85", - "sha256:817681d111cb65f07d46496eafec815f48e1aff37713b73135a0a9eb4d3610ab", - "sha256:818f5cb1b209ab1295087c45717178f4bbbd2bd7eda421f7a119e7b9b736a3cb", - "sha256:82e09f27edab289187dd924d4d93f2a35f21aa969699b2504aa643da7fbfeff9", - "sha256:840238c845b0f80777151fef0003088ab91c6f7b3467edaff4932b425c4e3c3f", - "sha256:87cff210af3258ca0c829e3ebc849d7981bfde23a99d6cb7a3c17a163b3dbad2", - "sha256:8884a1dbfc5cb8c54b48446ca916d4577c1f4d901126091e4ab25d00194e065f", - "sha256:88a56f0f6d020b4d17641f4b4d1f9540a536d4146768d059c430e97bdb485fc1", - "sha256:8b9a5fc4058d64c9c826684dcdb43891c1b474a4a88dcf8dfc3e1fb5889496f8", - "sha256:8c0213891898fa5b404cf3edf4797e3ac7819a0708ea5473fc6432a2aa27c189", - "sha256:8e6ce261ccb9a986953c4dce070327e4954f9dd4cd214746dfc70efbc713b6a1", - "sha256:8eb4e2b71562375609c66a79f89acd4fe95c5cba23473d04952c8b14b6f908f5", - "sha256:90b06bb47e60173d24c7cb79670aa8dd6081797290353b9d3c66d3a23e88eb34", - "sha256:94d368af9e6563de6e7170a74710a2cbace7a1e9c8e507d9e3ac34c7065d7ae3", - "sha256:9a5fba9168fc27805553760fa8198db46eef83bf52b4e87ebbe1333b823d0e70", - "sha256:9b9f8bf1d7008a58fbb6eb334dc6e2f2905400cced8dadb46c4ca28f005a8562", - "sha256:a4ae46769d9a7138d58cd190441cac14ce954010a0081f28462ed916c8e55a4f", - "sha256:a772c652603855d7180015849d483a1f539351a263bb9b81bfe85193a33ce124", - "sha256:a8b9c2cc4c5f8169b943d24be4bd1548fe81c016d704126e3a3124a2fc164885", - "sha256:aa39499625239da4ec960cf4fc66b023929b24cc77fb8520289cfdb3c1986428", - "sha256:aa54902fa51f7d921ba80923cf1c7ff3dce796a7903300bd8824deb90e357744", - "sha256:ac462a28218ea7d592c7ad51b517558f4ac6565a4e53db7a4811eeaf9c9660b0", - "sha256:af832edd384755826e494ffdcf1fdda86e4babc42a0b18d342943fb18181040e", - "sha256:b1fad38db1744d27061df516e59c5025b09b0a50a337c04e6eebdbddc18951bc", - "sha256:b4038869ba1d8fa33863b4b1286ab07e6075a641ae269b865f94d7e10b3e800e", - "sha256:b4673d1f29487608d613ebcc5caa99ba15eb58450a7449fb6d800f29d90bebc1", - "sha256:b4815720c266e832b20e27a7a5f3772bb09fdedb31a9a34bab7b49d98967ef5a", - "sha256:b59a64c367f350873c40a126ffe9184d903d2126c701380b4b55753484df5948", - "sha256:b74906e01c7fc938ac889588ef438de812989817095c3c4904721f647d64a4d1", - "sha256:b815a769b019dd96be6571096f246b74f63330547e9b30244c51b4a2eb0277fc", - "sha256:bad7029fb2251c1ac7d3acdd607e540d40d137a7d43a5e5acdcfdbd38db3fc0a", - "sha256:bb471ea8650796060afc99909d9b75da583d317e52f660faf64c45f70b3bf1e2", - "sha256:bd95d223de5162811a7b36c73d48eac4fee03b075132f3a1b73c132ce157a60c", - "sha256:be3419204952bbe9b72b90008977379c52f99ae1c6e640488de4be783c345d71", - "sha256:c0f481aaf0119f77b200e5a5e2799b3e14c015a317eaa948f42263908735cc9f", - "sha256:c2d00a96fdf26295c6f25eaf9e4a233f353146a73713cd97a5f5dc6090c3aef2", - "sha256:c720e55cef609d50418bdfdfb5c44a76efc020ae7455505788d0113c54c7df55", - "sha256:cb854ec52e6e2e05b83d647695f4d913452fdd45a3dfa8233d7dab5967b3908f", - "sha256:cbba32fb14e199d0493c6b9c44870dab0a9c37af9f0f729068459d1849279ffd", - "sha256:cd62f73830d4715bc643ae39de0bd4fb9c81d6d743530074da91e77a2cccfe67", - "sha256:cf92dccca8f66e987f6c4378700447f82b79e86407912ab1ee06b16b82f05120", - "sha256:d281a10837d98db997c0247f45d138522c91ce30cf3ae7a6afdb5e709707d360", - "sha256:d2c790f0d928b672484eac4f5696dd0b78f3d6d148a641ea196eb49c0875e30a", - "sha256:d35d634d9d1ed280c87bc2a7a6217b8787eedc86f368fc2fa1c0c8c78f7d3c93", - "sha256:db4564aea8b3cb6cf1e5f3fd80f1ced73a255d492396d1bd8abd688795b34d63", - "sha256:dc737506b4a0ba2922a2626fc6d620ce50a46aebd0fe2fbcad1b93bbdd8c7e78", - "sha256:e17056390068afd4583d88dcf4d4495764e4e2c7d756464468e0d21abcb8931e", - "sha256:e68a404fad8493989d6f07b7b9e066f1d2524d7cb64db2d4e9a84c920032c67f", - "sha256:e7fd334b40c5e13a97becfcaba314de0dcc6f7fe21ec8f992139bcc64700e9dc", - "sha256:eb4301f009a44bb5db5edfe4e51a8175a4112b566baec07f4af8b1f8cb4649a2", - "sha256:ebf583f4d9b52abd15cc59e5f6eeca7e3e9741c6ea62d8711c00ac3acb067875", - "sha256:ef71e73a81a4cd7e87c93e8ff0170140fd93ba33b0f61e83da3f55f6e0a84fb4", - "sha256:f0eb54b11cd4fe0c6404611eef77086ade03eb1457e92910bbb4f3479efa3f79", - "sha256:f2de65752fff248319bcd3b29da24e205fa505607539fcd4acc4037355175b63", - "sha256:f5de2d4167fd4bc5ad205fb7297e25867b8e335ca08d64ed7a561d2955a2c32d", - "sha256:f7bcdf70c8b6e70be11c78d3c00b80a24cccfb408128f23e91ec3019bed1ecc1", - "sha256:fa38a76e832743866aed6b715869757074b06357d1a260163ec26d84974245fe", - "sha256:fc909f62325a631e1401dd07dfc386986dbcac15f98c9ff2145d930678a9d25a" + "sha256:01947ad728f426fa07fcb26457ebf90ce29320259938414bc0edd1476e75addb", + "sha256:0455876d575a35defc4da7e0a199596d6c773e20d3d42fa1fc29f6aa640369ed", + "sha256:047580388644c473b934d27849f8ed8dbe45df0adb72104e78b543e13bf69762", + "sha256:04922fea7b13cd480586fa106345fe06e43220b8327358873c22d8dfa7a711c7", + "sha256:08f89697625e453421401c7f661b9d1eb4c9e4c0a12fd256eeb55b06994ac6af", + "sha256:0a507d7fa44688bbac76af6521e488b3da93de155b9cba6f2c9b7833ce243d59", + "sha256:0d726108c1c0380b88b6dd4db559f0280e0ceda9e077f46ff90bc85cd4d03e77", + "sha256:12ef6838245569fd60a179fade81ca4b90ae2fa0ef355d616f519f7bb27582db", + "sha256:153a61ac4030fa019b70b31fb7986461119230d3ba0ab661c757cfea652f4332", + "sha256:16468bd074fa4567592d3255bf25528ed41e6b616d69bf07096bdb5b66f947d1", + "sha256:17156abac20a9feed10feec867fddd91a80819a485b0107fe61f09f2117fe5f3", + "sha256:1927f0e15d190f11f0b8344373731e28fd774c6d676d8a6cfadc95c77214a48b", + "sha256:1e8a7c62d15a5c4b307271e4252d76ebb981d6251c6ecea4daf203ef0179ea4f", + "sha256:2ad538b7e07343001934417cdc8584623b4d8823c5b8b258e75ec8d327cec969", + "sha256:2ca4687dd996bde7f3c420def450797feeb20dcee2b9687023e3323c73fc14a2", + "sha256:2edef05b63d82568b877002dc4cb5cc18f8929b59077120192df1e03e0c633f8", + "sha256:2f9ea0355f90db2a76af530245fa42f04d98f752a1236ed7c6809ec484560d5b", + "sha256:30527d173e826f2f7651f91c821e337073df1555e3b5a0b7b1e2c39e26e50678", + "sha256:32a1e0352558cd7ccc014ffe818c7d87b15ec6145875e2cc5fa4bb7351a1033d", + "sha256:3534118289e33130ed3f1cc487002e8d09b9f359be48b02e9cd3de58ce58fba9", + "sha256:36ba9e728588588f0196deaf6751b9222492331b5552f865a8ff120869d372e0", + "sha256:382f0baa044d674ad59455a5eff83d7965572b745cc72df35c52c2ce8c731d37", + "sha256:394f12a2671ff8c4dfa2e85be6c08be0651ad85bc1e6aa9c77c21671baaf28cd", + "sha256:3ba2c9c94a9176f6321a879c8b864d7c5b12d34f549a4c216c72ce213d7d953c", + "sha256:3ded19dcaefe2f6706d81e0db787b59095f4ad0fbadce1edffdf092294c8a23f", + "sha256:3fcf529382b282a30b466bd7af05be28e22aa620e016135ac414f14e1ee6b9e1", + "sha256:43a405ce520b45941df9ff55d0cd09762017756a7b413bbad3a6e8178e64a2c2", + "sha256:453862ab268f6326b01f067ed89cb3a527d34dc46f6f4eeec46a15bbc706d0da", + "sha256:4665f7ed345012a8d2eddf4203ef145f5f56a291d010382d235b94e91813f88a", + "sha256:478f5f6d7e32bd4a04d102160efb2d389432ecf095fe87c555c0a6fc4adfc1a4", + "sha256:49db206eb8fdc4b4f30e6e3e410584146d813c151928f94ec0db06c4f2595538", + "sha256:4b262bbc13022f2097c48a21adcc360a81d83dc1d854c11b94953cd46d7d3c07", + "sha256:4cbe929efa77a806e8f1a97793f2dc3ea3475ae21a9ed0f37c21320fe93f6f50", + "sha256:4e562cc63b04636cde361fd47569162f1daa94c759220ff202a8129902229114", + "sha256:546064c55264156b973b5e65e5fafbe5e62390902ce3cf6b4005765505e8ff56", + "sha256:54df7df399b777c1fd144f541c95d351b3aa110535a6810a6a569905d106b6f3", + "sha256:56a85fa0dab1567bd0cac10f0c3837b03e8a0d939e6a8061a3a420acd97e9421", + "sha256:57a53a75010c635b3ad6499e7721eaa3b450e03f6862afe2dbef9c8f66e46ec8", + "sha256:584a7a818c84767af16ce8bda5d4f7fedb37d3d231fc89928a192f567e4ef685", + "sha256:5fd905a69ac74eaba5041e21a1e8b1a479dab2b41c93bdcc4c1cede3c12a8d86", + "sha256:61d4e713f467abcdd59b47665d488bb898ad3dd47ce7446522a50e0cbd8e8279", + "sha256:6213b471b68146af97b8551294e59e7392c2117e28ffad9c557c65087f4baee3", + "sha256:63797499a219d8e81eb4e0c42222d0a4c8ec896f5c76751d4258af95de41fdf1", + "sha256:64e8012ad60a5f0da09ed48725e6e923d1be25f2f091a640af6079f874663813", + "sha256:664402ef0c238a7f8a46efb101789d5f2275600fb18114446efec83cfadb5b66", + "sha256:68199ada7c310ddb8c76efbb606a0de656b40899388a7498954f423e03fc38be", + "sha256:69159afc2f2dc43285725f16143bc5df3c853bc1cb7df6021fce7ef1c69e8171", + "sha256:6f855bcc96ed3dd56da7373cfcc9dcbabbc2073cac7f65c185772d08884790ce", + "sha256:6feb4b64d11d5420e517910d60a907d08d846cacaf4e029668725cd21d16743c", + "sha256:72f1216ca8cef7b8adacd4c4c6b89c3b0c4f97503197f5284c80f36d6e4edd30", + "sha256:77dadc764cf7c5405e04866181c5bd94a447372a9763e473abb63d1dfe9b7387", + "sha256:782fced7d61469fd1231b184a80e4f2fa7ad54cd7173834651a453f96f29d673", + "sha256:79262be5a292d1df060f29b9a7cdd66934801f987a817632d7552534a172709a", + "sha256:7aa82d483d5fb867d4fb10a138ffd57b0f1644e99f2f4f336e48790ada9ada5e", + "sha256:853f103e2b9a58832fdd08a587a51de8b552ae90e1a5d167f316b7eabf8d7dde", + "sha256:867d3eea954bea807cabba83cfc939c889a18576d66d197c60025b15269d7cc0", + "sha256:878a5017d93e776c379af4e7b20f173c82594d94fa073059bcc546789ad50bf8", + "sha256:884235507549a6b2d3c4113fb1877ae263109e787d9e0eb25c35982ab28d0399", + "sha256:8c938c96294d983dcf419b54dba2d21056959c22911d41788efbf949a29ae30d", + "sha256:8efc1be43b036c2b6bcfb1451df24ee0ddcf69c31351003daf2699ed93f5687b", + "sha256:8fba0aff4c407d0274e43697e785bcac155ad962be57518d1c711f45e72da70f", + "sha256:90f3785146f701e053bb6b9e8f53acce2c919aca91df88bd4975be0cb926eb41", + "sha256:9137289de8fe845c246a8c3482dd0cb40338846ba683756d8f489a4bd8fddcae", + "sha256:9206c14a67c38de7b916e486ae280017cf394fa4b1aa95cfe88621a4e1d79725", + "sha256:94d2b36a74623caab262bf95f0e365c2c058396082bd9d6a9e825657d0c1e7fa", + "sha256:97c6349c81cee2e69ef59eba6e6c08c5936e6b01c2d50b9e4ac152217845ae09", + "sha256:a027f41c5008571314861744d83aff75a34cf3a07022e0be32b214a5bc93f7f1", + "sha256:a08fd490ba36d1fbb2cd5dcdcfb9f3892deb93bd53456724389135712b5fc735", + "sha256:a297c0d6c61963c5c3726840677b798ca5b7dfc71bc9c02b9a4af11d23236008", + "sha256:a4ea23b07f29487a7bef2a869f68c7ee0e05424d81375ce3d3de829314c6b5ec", + "sha256:a8b7acd04896e8f161e1500dc5f218017db05c1d322f054e89cbd089ce5d0071", + "sha256:ac2b680de398f293b68183317432b3d67ab3faeba216aec18de0c395cb5e3060", + "sha256:af24ad4fbaa5e4a2000beae0c3b7fd1c78d7819ab90f9370a1cfd8998e3f8a3c", + "sha256:af788b64e13d52fc3600a68b16d31fa8d8573e3ff2fc9a38f8a60b8d94d1f012", + "sha256:b013c7861a7c7bfcec48fd709513fea6f9f31727e7a0a93ca0dd12e056740717", + "sha256:b2799c2eaf182769889761d4fb4d78b82bc47dae833799fedbf69fc7de306faa", + "sha256:b27f3e67f6e031f6620655741b7d0d6bebea8b25d415924b3e8bfef2dd7bd841", + "sha256:b7206e41e04b443016e930e01685bab7a308113c0b251b3f906942c8d4b48fcb", + "sha256:b85778308bf945e9b33ac604e6793df9b07933108d20bdf53811bc7c2798a4af", + "sha256:bd7d1dde70ff3e09e4bc7a1cbb91a7a538add291bfd5b3e70ef1e7b45192440f", + "sha256:be86c2eb12fb0f846262ace9d8f032dc6978b8cb26a058920ecb723dbcb87d05", + "sha256:bf10963d8aed8bbe0165b41797c9463d4c5c8788ae6a77c68427569be6bead41", + "sha256:c1375025f0bfc9155286ebae8eecc65e33e494c90025cda69e247c3ccd2bab00", + "sha256:c5d8e764b5646623e57575f624f8ebb8f7a9f7fd1fae682ef87869ca5fec8dcf", + "sha256:cba5ad5eef02c86a1f3da00544cbc59a510d596b27566479a7cd4d91c6187a11", + "sha256:cc086ddb6dc654a15deeed1d1f2bcb1cb924ebd70df9dca738af19f64229b06c", + "sha256:d0c2b713464a8e263a243ae7980d81ce2de5ac59a9f798a282e44350b42dc516", + "sha256:d93aedbc4614cc21b9ab0d0c4ccd7143354c1f7cffbbe96ae5216ad21d1b21b5", + "sha256:d9610b47b5fe4aacbbba6a9cb5f12cbe864eec99dbfed5710bd32ef5dd8a5d5b", + "sha256:da055a1b0bfa8041bb2ff586b2cb0353ed03944a3472186a02cc44a557a0e661", + "sha256:dd2429f7635ad4857b5881503f9c310be7761dc681c467a9d27787b674d1250a", + "sha256:de39eb3bab93a99ddda1ac1b9aa331b944d8bcc4aa9141148f7fd8ee0299dafc", + "sha256:e40b1e97edd3dc127aa53d8a5e539a3d0c227d71574d3f9ac1af02d58218a122", + "sha256:e412607ca89a0ced10758dfb8f9adcc365ce4c1c377e637c01989a75e9a9ec8a", + "sha256:e953353180bec330c3b830891d260b6f8e576e2d18db3c78d314e56bb2276066", + "sha256:ec3473c9789cc00c7260d840c3db2c16dbfc816ca70ec87a00cddfa3e1a1cdd5", + "sha256:efff8b6761a1f6e45cebd1b7a6406eb2723d2d5710ff0d1b624fe11313693989", + "sha256:f773b39780323a0499b53ebd91a28ad11cde6705605d98d999dfa08624caf064", + "sha256:fa8e48001b39d54d97d7b380a0669fa99fc0feeb972e35a2d677ba59164a9a22", + "sha256:ff246c0111076c8022f9ba325c294f2cb5983403506989253e04dbae565e019b", + "sha256:ffe18407a4d000c568182ce5388bbbedeb099896904e43fc14eee76cfae6dec5" ], "markers": "python_version >= '3.7'", - "version": "==2.1.2" + "version": "==2.4.0" }, "pydantic-extra-types": { "hashes": [ @@ -781,10 +773,10 @@ }, "pydantic-settings": { "hashes": [ - "sha256:579bbcbec3501e62bab73867b097ae10218201950e897463c98a182ffe7ed104", - "sha256:f440ec7cfb6dc63f03226c47b0e7803750d1b66a49ed944ac23eb4f0c84f8722" + "sha256:342337fff50b23585e807a86dec85037900972364435c55c2fc00d16ff080539", + "sha256:6183a2abeab465d5a3ab69758e9a22d38b0cc2ba193f0b85f6971a252ea630f6" ], - "version": "==2.0.1" + "version": "==2.0.2" }, "python-dotenv": { "hashes": [ @@ -815,81 +807,48 @@ }, "pyyaml": { "hashes": [ - "sha256:0044ec607d28033fc79d9900748eafdd62e9a79d3882858e8c0c001f30e9c79a", - "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", - "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", - "sha256:0495b956bd45025c5d13ae8af0ea238923e88f2d98efd7484ec99dac46291d22", - "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", - "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", - "sha256:09317957e01b6b4da6f9ea96f9e661225662212acee57fcb201775a82196523e", - "sha256:0b2167570ea8e96a2710efaae860d71cc3f80e35fe07a915093c596170f024bf", - "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", - "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", - "sha256:1114a62d443cb157ac36beb79fc323d830f4a0586ffd1da8319d72fbf4514d6c", - "sha256:11dae7bfe84016061d528c355bbe0faa0775f077f21831b1fbaa7997b266ca99", - "sha256:171533a79a71520ccdf08136012ea0c8fe7f152cda69168dc38ea34da67c9f80", - "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", - "sha256:1fffde5b126e4433829530b621a209c07a4c2a808b03e5b808419745b3509c79", - "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", - "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", - "sha256:267bf63c911ab6302341e37329f049ddfcab4aea26c8895da1e6a5bcdf1bcc37", - "sha256:26fdf07f0d7442fe4cc637aadeb08e9e6dc853f9a4d99a3d813bd23dc6e1cc52", - "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", - "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", - "sha256:2ea9326fba939d5e87a1890c27a7aaf5a75e49cfe2c1696bc4fbb25305ca2767", - "sha256:33d6ec1e993c063d4fb4009f439a3d81773ca81cc4109f701eb7a4782d171495", - "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", - "sha256:40f637ea3333c0969c3f4127393a5f908f40f7e85605f9e6f568cff2c66849ef", - "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", - "sha256:437e3796f5dd7f2ad8f70084f7fe82472b11483aa1c53c073ab430974bdf1b6d", - "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", - "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", - "sha256:4983bee1be18c3faed20c8eead1c543c1356a2b468984c1385b523e23d3ab0ed", - "sha256:499b0b45b68671df4b47b185a5a664d6e3871c93956c6f70bf04de5344c6ef02", - "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", - "sha256:56e213cbb463f43f354a9d0a455b68128599df9a8aed0f7ac8e7b7fbbc219bee", - "sha256:639787884913ee65a617fd826abb6d8b0c4896d533d0caae05b031d7b4089faf", - "sha256:68877239810a357a100157233314784ab332ee33bc978de030d0135553db69e2", - "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", - "sha256:69b8e0559a01ef14b5d76882c2b49f643ab6d5b953ec5e5590411d2bdb707f4a", - "sha256:77627ca1909b1c9efdd42d7c7f680b22e620ffda5f64b01ba282bd5a59a5d108", - "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", - "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", - "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", - "sha256:839f695fedfb65dbca690ce57907e076d355ee7c34b857c13926e251d1381ce7", - "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", - "sha256:9175c938a11a371421e2221faf1ae9d32e86462953917854d70afd2048bb7495", - "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", - "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", - "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", - "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", - "sha256:a978f8308deff49581479be11e7455af9b3d368dd3c3cb5c22b32c691b12b172", - "sha256:acd3d75d7ce71850f9d3972f68baca1133a8cd27e6153d64d00be8504a491c8c", - "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", - "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", - "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", - "sha256:b811ca77229f55eab2d9b3c6abc6d44c9be3f04461f04ab87f523d778c55c782", - "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", - "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", - "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", - "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", - "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", - "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", - "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", - "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", - "sha256:da51ac8b4d42f9197cad065d6c3e2815eb768eac1d7fc0f9c343db280b1b9edc", - "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", - "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", - "sha256:dfeba8c78b9db00667b94cddb1db6559e068cb7f469e681a4e9aa74dc3e86b24", - "sha256:e35aff01f870f898f4e4b5360a3f18c98f9c47edab1c2d6bdfa5c876bf74ab73", - "sha256:e47100ec1e464ff8a43e4c96758fd9cd66d202986d93de0f2962c1a7cb851391", - "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", - "sha256:e628d48defb4a7eacb2087d42f9a7576324279c9b769625941ba39d78c441e29", - "sha256:ebf35bb455f33c1ff3a61031a68f930bd69e88ee3a0882d3d5e677b823785d1e", - "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5", - "sha256:fb03b63e01fd848abb4219b2c2103a1962358c8f4db5150f7a5c1136d3e24d2e" + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], - "version": "==6.0" + "version": "==6.0.1" }, "redis": { "extras": [ @@ -931,50 +890,50 @@ "asyncio" ], "hashes": [ - "sha256:00aa050faf24ce5f2af643e2b86822fa1d7149649995f11bc1e769bbfbf9010b", - "sha256:09397a18733fa2a4c7680b746094f980060666ee549deafdb5e102a99ce4619b", - "sha256:0f7fdcce52cd882b559a57b484efc92e108efeeee89fab6b623aba1ac68aad2e", - "sha256:10514adc41fc8f5922728fbac13d401a1aefcf037f009e64ca3b92464e33bf0e", - "sha256:10e001a84f820fea2640e4500e12322b03afc31d8f4f6b813b44813b2a7c7e0d", - "sha256:194f2d5a7cb3739875c4d25b3fe288ab0b3dc33f7c857ba2845830c8c51170a0", - "sha256:1aac42a21a7fa6c9665392c840b295962992ddf40aecf0a88073bc5c76728117", - "sha256:1fb792051db66e09c200e7bc3bda3b1eb18a5b8eb153d2cedb2b14b56a68b8cb", - "sha256:2756485f49e7df5c2208bdc64263d19d23eba70666f14ad12d6d8278a2fff65f", - "sha256:2b791577c546b6bbd7b43953565fcb0a2fec63643ad605353dd48afbc3c48317", - "sha256:420bc6d06d4ae7fb6921524334689eebcbea7bf2005efef070a8562cc9527a37", - "sha256:45b07470571bda5ee7f5ec471271bbde97267cc8403fce05e280c36ea73f4754", - "sha256:4ebc542d2289c0b016d6945fd07a7e2e23f4abc41e731ac8ad18a9e0c2fd0ec2", - "sha256:556dc18e39b6edb76239acfd1c010e37395a54c7fde8c57481c15819a3ffb13e", - "sha256:589aba9a35869695b319ed76c6f673d896cd01a7ff78054be1596df7ad9b096f", - "sha256:5c95e3e7cc6285bf7ff263eabb0d3bfe3def9a1ff98124083d45e5ece72f4579", - "sha256:5dd574a37be388512c72fe0d7318cb8e31743a9b2699847a025e0c08c5bf579d", - "sha256:67fbb40db3985c0cfb942fe8853ad94a5e9702d2987dec03abadc2f3b6a24afb", - "sha256:6852cd34d96835e4c9091c1e6087325efb5b607b75fd9f7075616197d1c4688a", - "sha256:69ae0e9509c43474e33152abe1385b8954922544616426bf793481e1a37e094f", - "sha256:6c5bae4c288bda92a7550fe8de9e068c0a7cd56b1c5d888aae5b40f0e13b40bd", - "sha256:774bd401e7993452ba0596e741c0c4d6d22f882dd2a798993859181dbffadc62", - "sha256:79228a7b90d95957354f37b9d46f2cc8926262ae17b0d3ed8f36c892f2a37e06", - "sha256:7b8cba5a25e95041e3413d91f9e50616bcfaec95afa038ce7dc02efefe576745", - "sha256:7db97eabd440327c35b751d5ebf78a107f505586485159bcc87660da8bb1fdca", - "sha256:7ddd6d35c598af872f9a0a5bce7f7c4a1841684a72dab3302e3df7f17d1b5249", - "sha256:82edf3a6090554a83942cec79151d6b5eb96e63d143e80e4cf6671e5d772f6be", - "sha256:8b7b3ebfa9416c8eafaffa65216e229480c495e305a06ba176dcac32710744e6", - "sha256:8da677135eff43502b7afab5a1e641edfb2dc734ba7fc146e9b1b86817a728e2", - "sha256:908c850b98cac1e203ababd4ba76868d19ae0d7172cdc75d3f1b7829b16837d2", - "sha256:9da4ee8f711e077633730955c8f3cd2485c9abf5ea0f80aac23221a3224b9a8c", - "sha256:a6f1d8256d06f58e6ece150fbe05c63c7f9510df99ee8ac37423f5476a2cebb4", - "sha256:afb322ca05e2603deedbcd2e9910f11a3fd2f42bdeafe63018e5641945c7491c", - "sha256:b52c6741073de5a744d27329f9803938dcad5c9fee7e61690c705f72973f4175", - "sha256:ba633b51835036ff0f402c21f3ff567c565a22ff0a5732b060a68f4660e2a38f", - "sha256:bfa1a0f83bdf8061db8d17c2029454722043f1e4dd1b3d3d3120d1b54e75825a", - "sha256:bffd6cd47c2e68970039c0d3e355c9ed761d3ca727b204e63cd294cad0e3df90", - "sha256:d7a2c1e711ce59ac9d0bba780318bcd102d2958bb423209f24c6354d8c4da930", - "sha256:da46beef0ce882546d92b7b2e8deb9e04dbb8fec72945a8eb28b347ca46bc15a", - "sha256:ebdd2418ab4e2e26d572d9a1c03877f8514a9b7436729525aa571862507b3fea", - "sha256:fc44e50f9d5e96af1a561faa36863f9191f27364a4df3eb70bca66e9370480b6" + "sha256:024d2f67fb3ec697555e48caeb7147cfe2c08065a4f1a52d93c3d44fc8e6ad1c", + "sha256:0bf0fd65b50a330261ec7fe3d091dfc1c577483c96a9fa1e4323e932961aa1b5", + "sha256:16a310f5bc75a5b2ce7cb656d0e76eb13440b8354f927ff15cbaddd2523ee2d1", + "sha256:1d90ccc15ba1baa345796a8fb1965223ca7ded2d235ccbef80a47b85cea2d71a", + "sha256:22bafb1da60c24514c141a7ff852b52f9f573fb933b1e6b5263f0daa28ce6db9", + "sha256:2c69ce70047b801d2aba3e5ff3cba32014558966109fecab0c39d16c18510f15", + "sha256:2e7b69d9ced4b53310a87117824b23c509c6fc1f692aa7272d47561347e133b6", + "sha256:314145c1389b021a9ad5aa3a18bac6f5d939f9087d7fc5443be28cba19d2c972", + "sha256:3afa8a21a9046917b3a12ffe016ba7ebe7a55a6fc0c7d950beb303c735c3c3ad", + "sha256:430614f18443b58ceb9dedec323ecddc0abb2b34e79d03503b5a7579cd73a531", + "sha256:43699eb3f80920cc39a380c159ae21c8a8924fe071bccb68fc509e099420b148", + "sha256:539010665c90e60c4a1650afe4ab49ca100c74e6aef882466f1de6471d414be7", + "sha256:57d100a421d9ab4874f51285c059003292433c648df6abe6c9c904e5bd5b0828", + "sha256:5831138f0cc06b43edf5f99541c64adf0ab0d41f9a4471fd63b54ae18399e4de", + "sha256:584f66e5e1979a7a00f4935015840be627e31ca29ad13f49a6e51e97a3fb8cae", + "sha256:5d6afc41ca0ecf373366fd8e10aee2797128d3ae45eb8467b19da4899bcd1ee0", + "sha256:61ada5831db36d897e28eb95f0f81814525e0d7927fb51145526c4e63174920b", + "sha256:6b54d1ad7a162857bb7c8ef689049c7cd9eae2f38864fc096d62ae10bc100c7d", + "sha256:7351c05db355da112e056a7b731253cbeffab9dfdb3be1e895368513c7d70106", + "sha256:77a14fa20264af73ddcdb1e2b9c5a829b8cc6b8304d0f093271980e36c200a3f", + "sha256:851a37898a8a39783aab603c7348eb5b20d83c76a14766a43f56e6ad422d1ec8", + "sha256:89bc2b374ebee1a02fd2eae6fd0570b5ad897ee514e0f84c5c137c942772aa0c", + "sha256:8e712cfd2e07b801bc6b60fdf64853bc2bd0af33ca8fa46166a23fe11ce0dbb0", + "sha256:8f9eb4575bfa5afc4b066528302bf12083da3175f71b64a43a7c0badda2be365", + "sha256:8fc05b59142445a4efb9c1fd75c334b431d35c304b0e33f4fa0ff1ea4890f92e", + "sha256:96f0463573469579d32ad0c91929548d78314ef95c210a8115346271beeeaaa2", + "sha256:9deaae357edc2091a9ed5d25e9ee8bba98bcfae454b3911adeaf159c2e9ca9e3", + "sha256:a752b7a9aceb0ba173955d4f780c64ee15a1a991f1c52d307d6215c6c73b3a4c", + "sha256:ae7473a67cd82a41decfea58c0eac581209a0aa30f8bc9190926fbf628bb17f7", + "sha256:b15afbf5aa76f2241184c1d3b61af1a72ba31ce4161013d7cb5c4c2fca04fd6e", + "sha256:c896d4e6ab2eba2afa1d56be3d0b936c56d4666e789bfc59d6ae76e9fcf46145", + "sha256:cb4e688f6784427e5f9479d1a13617f573de8f7d4aa713ba82813bcd16e259d1", + "sha256:cda283700c984e699e8ef0fcc5c61f00c9d14b6f65a4f2767c97242513fcdd84", + "sha256:cf7b5e3856cbf1876da4e9d9715546fa26b6e0ba1a682d5ed2fc3ca4c7c3ec5b", + "sha256:d6894708eeb81f6d8193e996257223b6bb4041cb05a17cd5cf373ed836ef87a2", + "sha256:d8f2afd1aafded7362b397581772c670f20ea84d0a780b93a1a1529da7c3d369", + "sha256:dd4d410a76c3762511ae075d50f379ae09551d92525aa5bb307f8343bf7c2c12", + "sha256:eb60699de43ba1a1f77363f563bb2c652f7748127ba3a774f7cf2c7804aa0d3d", + "sha256:f469f15068cd8351826df4080ffe4cc6377c5bf7d29b5a07b0e717dddb4c7ea2", + "sha256:f82c310ddf97b04e1392c33cf9a70909e0ae10a7e2ddc1d64495e3abdc5d19fb", + "sha256:fa51ce4aea583b0c6b426f4b0563d3535c1c75986c4373a0987d84d22376585b" ], "index": "pypi", - "version": "==2.0.18" + "version": "==2.0.19" }, "starlette": { "hashes": [ @@ -1071,10 +1030,10 @@ "standard" ], "hashes": [ - "sha256:79277ae03db57ce7d9aa0567830bbb51d7a612f54d6e1e3e92da3ef24c2c8ed8", - "sha256:e9434d3bbf05f310e762147f769c9f21235ee118ba2d2bf1155a7196448bd996" + "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53", + "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a" ], - "version": "==0.22.0" + "version": "==0.23.2" }, "uvloop": { "hashes": [ @@ -1211,6 +1170,7 @@ "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0", "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564" ], + "index": "pypi", "version": "==11.0.3" } }, diff --git a/src/crud/contact_crud.py b/src/crud/contact_crud.py index 3e781ca..6762087 100644 --- a/src/crud/contact_crud.py +++ b/src/crud/contact_crud.py @@ -12,6 +12,7 @@ async def insert_contact_friend( relation: int, applicant: str, recipient: str, + group_chat_id: str | None, applicant_setting: dict, recipient_setting: dict, ): @@ -72,7 +73,7 @@ async def update_friend_setting( friend_id: str, remark: str | None, group: str | None, -): +) -> Contact: session = async_session() res = await session.scalars(select(Contact).where(Contact.user_id == user_id)) contact: Contact = res.one() @@ -85,27 +86,55 @@ async def update_friend_setting( await session.commit() await session.close() + return contact + async def update_groups( user_id: str, groups: list[str], group_name_change_pair: list[list[str]], + deleted_origin_groups: list[str], default_group: str, -): +) -> Contact: session = async_session() res = await session.scalars(select(Contact).where(Contact.user_id == user_id)) contact = res.one() contact.friend_groups = groups contact.default_group = default_group - for pair in group_name_change_pair: - if pair[1] == "": + for pair, deleted_group in zip(group_name_change_pair, deleted_origin_groups): + if pair[1] == "" and deleted_group == "": continue for friend_id, friend_setting in contact.friends.items(): if pair[0] == friend_setting["friendGroup"]: contact.friends[friend_id]["friendGroup"] = pair[1] + if friend_setting["friendGroup"] == deleted_group: + contact.friends[friend_id]["friendGroup"] = default_group flag_modified(contact, "friends") session.add(contact) await session.commit() await session.close() + + return contact + + +async def delete_friend(user_id: str, friend_id: str) -> Contact: + session = async_session() + res1 = await session.scalars(select(Contact).where(Contact.user_id == user_id)) + res2 = await session.scalars(select(Contact).where(Contact.user_id == friend_id)) + + my_contact = res1.one() + friend_contact = res2.one() + + del my_contact.friends[friend_id] + del friend_contact.friends[user_id] + + flag_modified(my_contact, "friends") + flag_modified(friend_contact, "friends") + + session.add_all([my_contact, friend_contact]) + await session.commit() + await session.close() + + return my_contact diff --git a/src/main.py b/src/main.py index 61e481f..432a322 100755 --- a/src/main.py +++ b/src/main.py @@ -1,8 +1,9 @@ -from fastapi import FastAPI, Depends +from fastapi import FastAPI, Depends, WebSocket from fastapi.staticfiles import StaticFiles from .dependencies import verify_token from .utils.email_code import smtp +from .utils.web_socket import manager from .routers.signin import router as signin_router from .routers.signup import router as signup_router from .routers.user_profile import router as user_profile_router @@ -10,6 +11,7 @@ from .routers.user_account import router as user_account_router from .routers.search import router as search_router from .routers.apply import router as apply_router from .routers.contact import router as contact_router +from .routers.message import router as message_router app = FastAPI() @@ -20,6 +22,9 @@ app.include_router(user_account_router, dependencies=[Depends(verify_token)]) app.include_router(search_router, dependencies=[Depends(verify_token)]) app.include_router(apply_router, dependencies=[Depends(verify_token)]) app.include_router(contact_router, dependencies=[Depends(verify_token)]) +app.include_router( + message_router, +) app.mount("/static", StaticFiles(directory="static"), name="static") @@ -32,3 +37,8 @@ def close_smtp(): @app.get("/") async def main(): return {"code": 10000, "msg": "hello world"} + + +@app.websocket("/ws/connect") +async def connect_websocket(websocket: WebSocket, id: str): + await manager.connect(id, websocket) diff --git a/src/routers/contact.py b/src/routers/contact.py index 718ffde..c0e4dfa 100755 --- a/src/routers/contact.py +++ b/src/routers/contact.py @@ -27,9 +27,15 @@ class ManageGroups(BaseModel): user_id: str groups: list[str] group_name_change_pair: list[list[str]] + deleted_origin_groups: list[str] default_group: str +class MyselfFriendId(BaseModel): + user_id: str + friend_id: str + + @router.get("", response_model=ContactResponse) async def get_contact(id: str): contact = await contact_crud.select_contact_all(id) @@ -54,13 +60,23 @@ async def get_contact_account_profiles(contact_ids: ContactIds): } -@router.post("/change/friend_setting", response_model=BaseResponseModel) -async def change_friend_remark(friend_remark: ChangeFriendSetting): - await contact_crud.update_friend_setting(**friend_remark.model_dump()) - return {"code": 10700, "msg": "change Friend Remark Successfully"} +@router.post("/change/friend_setting", response_model=ContactResponse) +async def change_friend_setting(friend_remark: ChangeFriendSetting): + res = await contact_crud.update_friend_setting(**friend_remark.model_dump()) + return { + "code": 10700, + "msg": "change Friend Setting Successfully", + "data": res.to_dict(), + } -@router.post("/manage_groups", response_model=BaseResponseModel) +@router.post("/manage_groups", response_model=ContactResponse) async def manage_groups(group_info: ManageGroups): - await contact_crud.update_groups(**group_info.model_dump()) - return {"code": 10700, "msg": "Manage Groups Successfully"} + res = await contact_crud.update_groups(**group_info.model_dump()) + return {"code": 10700, "msg": "Manage Groups Successfully", "data": res.to_dict()} + + +@router.post("/delete/friend", response_model=ContactResponse) +async def delete_friend(myself_friend_id: MyselfFriendId): + res = await contact_crud.delete_friend(**myself_friend_id.model_dump()) + return {"code": 10700, "msg": "Delete Friend Successfully", "data": res.to_dict()} diff --git a/src/routers/message.py b/src/routers/message.py new file mode 100644 index 0000000..3207ef5 --- /dev/null +++ b/src/routers/message.py @@ -0,0 +1,10 @@ +from fastapi import APIRouter, WebSocket + +from ..utils.web_socket import WebSocketManager + +router = APIRouter(prefix="/message", tags=["message"]) + + +@router.websocket("/friend") +async def send_message_to_friend(websocket: WebSocket): + pass diff --git a/src/utils/web_socket.py b/src/utils/web_socket.py new file mode 100644 index 0000000..f802ee4 --- /dev/null +++ b/src/utils/web_socket.py @@ -0,0 +1,13 @@ +from fastapi import WebSocket + + +class WebSocketManager: + def __init__(self): + self.active_socket: dict[str, WebSocket] = {} + + async def connect(self, id: str, websocket: WebSocket): + await websocket.accept() + self.active_socket[id] = websocket + + +manager = WebSocketManager()