impl postgres pool conn
This commit is contained in:
		
							parent
							
								
									0163525773
								
							
						
					
					
						commit
						64d91f4cbf
					
				
							
								
								
									
										8
									
								
								.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.env
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | POSTGRES_HOSTNAME=postgresql | ||||||
|  | POSTGRES_PORT=5432 | ||||||
|  | POSTGRES_DB=dispatcher | ||||||
|  | POSTGRES_USER=rust | ||||||
|  | POSTGRES_PASSWORD=rust | ||||||
|  | 
 | ||||||
|  | MIGRATIONS_DIR=./migrations | ||||||
|  | DATABASE_URL=postgres://rust:rust@localhost:5433/dispatcher | ||||||
							
								
								
									
										930
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										930
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -2,15 +2,945 @@ | |||||||
| # It is not intended for manual editing. | # It is not intended for manual editing. | ||||||
| version = 3 | version = 3 | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "async-trait" | ||||||
|  | version = "0.1.68" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn 2.0.15", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "autocfg" | ||||||
|  | version = "1.1.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "base64" | ||||||
|  | version = "0.21.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "bitflags" | ||||||
|  | version = "1.3.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "block-buffer" | ||||||
|  | version = "0.10.4" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" | ||||||
|  | dependencies = [ | ||||||
|  |  "generic-array", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "byteorder" | ||||||
|  | version = "1.4.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "bytes" | ||||||
|  | version = "1.4.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "cfg-if" | ||||||
|  | version = "1.0.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "cpufeatures" | ||||||
|  | version = "0.2.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" | ||||||
|  | dependencies = [ | ||||||
|  |  "libc", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "crypto-common" | ||||||
|  | version = "0.1.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" | ||||||
|  | dependencies = [ | ||||||
|  |  "generic-array", | ||||||
|  |  "typenum", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "diesel" | ||||||
|  | version = "2.0.3" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "4391a22b19c916e50bec4d6140f29bdda3e3bb187223fe6e3ea0b6e4d1021c04" | ||||||
|  | dependencies = [ | ||||||
|  |  "bitflags", | ||||||
|  |  "byteorder", | ||||||
|  |  "diesel_derives", | ||||||
|  |  "itoa", | ||||||
|  |  "pq-sys", | ||||||
|  |  "r2d2", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "diesel_derives" | ||||||
|  | version = "2.0.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "0ad74fdcf086be3d4fdd142f67937678fe60ed431c3b2f08599e7687269410c4" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro-error", | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn 1.0.109", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "digest" | ||||||
|  | version = "0.10.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" | ||||||
|  | dependencies = [ | ||||||
|  |  "block-buffer", | ||||||
|  |  "crypto-common", | ||||||
|  |  "subtle", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "dispatcher" | name = "dispatcher" | ||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  |  "diesel", | ||||||
|  "lazy_static", |  "lazy_static", | ||||||
|  |  "postgres", | ||||||
|  |  "r2d2", | ||||||
|  |  "serde", | ||||||
|  |  "serde_json", | ||||||
|  |  "thiserror", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "fallible-iterator" | ||||||
|  | version = "0.2.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "futures-channel" | ||||||
|  | version = "0.3.28" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" | ||||||
|  | dependencies = [ | ||||||
|  |  "futures-core", | ||||||
|  |  "futures-sink", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "futures-core" | ||||||
|  | version = "0.3.28" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "futures-macro" | ||||||
|  | version = "0.3.28" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn 2.0.15", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "futures-sink" | ||||||
|  | version = "0.3.28" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "futures-task" | ||||||
|  | version = "0.3.28" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "futures-util" | ||||||
|  | version = "0.3.28" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" | ||||||
|  | dependencies = [ | ||||||
|  |  "futures-core", | ||||||
|  |  "futures-macro", | ||||||
|  |  "futures-sink", | ||||||
|  |  "futures-task", | ||||||
|  |  "pin-project-lite", | ||||||
|  |  "pin-utils", | ||||||
|  |  "slab", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "generic-array" | ||||||
|  | version = "0.14.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" | ||||||
|  | dependencies = [ | ||||||
|  |  "typenum", | ||||||
|  |  "version_check", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "getrandom" | ||||||
|  | version = "0.2.9" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" | ||||||
|  | dependencies = [ | ||||||
|  |  "cfg-if", | ||||||
|  |  "libc", | ||||||
|  |  "wasi", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "hmac" | ||||||
|  | version = "0.12.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" | ||||||
|  | dependencies = [ | ||||||
|  |  "digest", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "itoa" | ||||||
|  | version = "1.0.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "lazy_static" | name = "lazy_static" | ||||||
| version = "1.4.0" | version = "1.4.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "libc" | ||||||
|  | version = "0.2.141" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "lock_api" | ||||||
|  | version = "0.4.9" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" | ||||||
|  | dependencies = [ | ||||||
|  |  "autocfg", | ||||||
|  |  "scopeguard", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "log" | ||||||
|  | version = "0.4.17" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" | ||||||
|  | dependencies = [ | ||||||
|  |  "cfg-if", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "md-5" | ||||||
|  | version = "0.10.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" | ||||||
|  | dependencies = [ | ||||||
|  |  "digest", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "memchr" | ||||||
|  | version = "2.5.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "mio" | ||||||
|  | version = "0.8.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" | ||||||
|  | dependencies = [ | ||||||
|  |  "libc", | ||||||
|  |  "log", | ||||||
|  |  "wasi", | ||||||
|  |  "windows-sys 0.45.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "once_cell" | ||||||
|  | version = "1.17.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "parking_lot" | ||||||
|  | version = "0.12.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" | ||||||
|  | dependencies = [ | ||||||
|  |  "lock_api", | ||||||
|  |  "parking_lot_core", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "parking_lot_core" | ||||||
|  | version = "0.9.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" | ||||||
|  | dependencies = [ | ||||||
|  |  "cfg-if", | ||||||
|  |  "libc", | ||||||
|  |  "redox_syscall", | ||||||
|  |  "smallvec", | ||||||
|  |  "windows-sys 0.45.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "percent-encoding" | ||||||
|  | version = "2.2.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "phf" | ||||||
|  | version = "0.11.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" | ||||||
|  | dependencies = [ | ||||||
|  |  "phf_shared", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "phf_shared" | ||||||
|  | version = "0.11.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" | ||||||
|  | dependencies = [ | ||||||
|  |  "siphasher", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "pin-project-lite" | ||||||
|  | version = "0.2.9" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "pin-utils" | ||||||
|  | version = "0.1.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "postgres" | ||||||
|  | version = "0.19.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "0bed5017bc2ff49649c0075d0d7a9d676933c1292480c1d137776fb205b5cd18" | ||||||
|  | dependencies = [ | ||||||
|  |  "bytes", | ||||||
|  |  "fallible-iterator", | ||||||
|  |  "futures-util", | ||||||
|  |  "log", | ||||||
|  |  "tokio", | ||||||
|  |  "tokio-postgres", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "postgres-protocol" | ||||||
|  | version = "0.6.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "78b7fa9f396f51dffd61546fd8573ee20592287996568e6175ceb0f8699ad75d" | ||||||
|  | dependencies = [ | ||||||
|  |  "base64", | ||||||
|  |  "byteorder", | ||||||
|  |  "bytes", | ||||||
|  |  "fallible-iterator", | ||||||
|  |  "hmac", | ||||||
|  |  "md-5", | ||||||
|  |  "memchr", | ||||||
|  |  "rand", | ||||||
|  |  "sha2", | ||||||
|  |  "stringprep", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "postgres-types" | ||||||
|  | version = "0.2.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f028f05971fe20f512bcc679e2c10227e57809a3af86a7606304435bc8896cd6" | ||||||
|  | dependencies = [ | ||||||
|  |  "bytes", | ||||||
|  |  "fallible-iterator", | ||||||
|  |  "postgres-protocol", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "ppv-lite86" | ||||||
|  | version = "0.2.17" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "pq-sys" | ||||||
|  | version = "0.4.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "3b845d6d8ec554f972a2c5298aad68953fd64e7441e846075450b44656a016d1" | ||||||
|  | dependencies = [ | ||||||
|  |  "vcpkg", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "proc-macro-error" | ||||||
|  | version = "1.0.4" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro-error-attr", | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn 1.0.109", | ||||||
|  |  "version_check", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "proc-macro-error-attr" | ||||||
|  | version = "1.0.4" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "version_check", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "proc-macro2" | ||||||
|  | version = "1.0.56" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" | ||||||
|  | dependencies = [ | ||||||
|  |  "unicode-ident", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "quote" | ||||||
|  | version = "1.0.26" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "r2d2" | ||||||
|  | version = "0.8.10" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" | ||||||
|  | dependencies = [ | ||||||
|  |  "log", | ||||||
|  |  "parking_lot", | ||||||
|  |  "scheduled-thread-pool", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "rand" | ||||||
|  | version = "0.8.5" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" | ||||||
|  | dependencies = [ | ||||||
|  |  "libc", | ||||||
|  |  "rand_chacha", | ||||||
|  |  "rand_core", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "rand_chacha" | ||||||
|  | version = "0.3.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" | ||||||
|  | dependencies = [ | ||||||
|  |  "ppv-lite86", | ||||||
|  |  "rand_core", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "rand_core" | ||||||
|  | version = "0.6.4" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" | ||||||
|  | dependencies = [ | ||||||
|  |  "getrandom", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "redox_syscall" | ||||||
|  | version = "0.2.16" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" | ||||||
|  | dependencies = [ | ||||||
|  |  "bitflags", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "ryu" | ||||||
|  | version = "1.0.13" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "scheduled-thread-pool" | ||||||
|  | version = "0.2.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" | ||||||
|  | dependencies = [ | ||||||
|  |  "parking_lot", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "scopeguard" | ||||||
|  | version = "1.1.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "serde" | ||||||
|  | version = "1.0.160" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" | ||||||
|  | dependencies = [ | ||||||
|  |  "serde_derive", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "serde_derive" | ||||||
|  | version = "1.0.160" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn 2.0.15", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "serde_json" | ||||||
|  | version = "1.0.96" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" | ||||||
|  | dependencies = [ | ||||||
|  |  "itoa", | ||||||
|  |  "ryu", | ||||||
|  |  "serde", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "sha2" | ||||||
|  | version = "0.10.6" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" | ||||||
|  | dependencies = [ | ||||||
|  |  "cfg-if", | ||||||
|  |  "cpufeatures", | ||||||
|  |  "digest", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "siphasher" | ||||||
|  | version = "0.3.10" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "slab" | ||||||
|  | version = "0.4.8" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" | ||||||
|  | dependencies = [ | ||||||
|  |  "autocfg", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "smallvec" | ||||||
|  | version = "1.10.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "socket2" | ||||||
|  | version = "0.4.9" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" | ||||||
|  | dependencies = [ | ||||||
|  |  "libc", | ||||||
|  |  "winapi", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "socket2" | ||||||
|  | version = "0.5.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6d283f86695ae989d1e18440a943880967156325ba025f05049946bff47bcc2b" | ||||||
|  | dependencies = [ | ||||||
|  |  "libc", | ||||||
|  |  "windows-sys 0.48.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "stringprep" | ||||||
|  | version = "0.1.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" | ||||||
|  | dependencies = [ | ||||||
|  |  "unicode-bidi", | ||||||
|  |  "unicode-normalization", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "subtle" | ||||||
|  | version = "2.4.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "syn" | ||||||
|  | version = "1.0.109" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "unicode-ident", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "syn" | ||||||
|  | version = "2.0.15" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "unicode-ident", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "thiserror" | ||||||
|  | version = "1.0.40" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" | ||||||
|  | dependencies = [ | ||||||
|  |  "thiserror-impl", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "thiserror-impl" | ||||||
|  | version = "1.0.40" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" | ||||||
|  | dependencies = [ | ||||||
|  |  "proc-macro2", | ||||||
|  |  "quote", | ||||||
|  |  "syn 2.0.15", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tinyvec" | ||||||
|  | version = "1.6.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" | ||||||
|  | dependencies = [ | ||||||
|  |  "tinyvec_macros", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tinyvec_macros" | ||||||
|  | version = "0.1.1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tokio" | ||||||
|  | version = "1.27.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" | ||||||
|  | dependencies = [ | ||||||
|  |  "autocfg", | ||||||
|  |  "bytes", | ||||||
|  |  "libc", | ||||||
|  |  "mio", | ||||||
|  |  "pin-project-lite", | ||||||
|  |  "socket2 0.4.9", | ||||||
|  |  "windows-sys 0.45.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tokio-postgres" | ||||||
|  | version = "0.7.8" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "6e89f6234aa8fd43779746012fcf53603cdb91fdd8399aa0de868c2d56b6dde1" | ||||||
|  | dependencies = [ | ||||||
|  |  "async-trait", | ||||||
|  |  "byteorder", | ||||||
|  |  "bytes", | ||||||
|  |  "fallible-iterator", | ||||||
|  |  "futures-channel", | ||||||
|  |  "futures-util", | ||||||
|  |  "log", | ||||||
|  |  "parking_lot", | ||||||
|  |  "percent-encoding", | ||||||
|  |  "phf", | ||||||
|  |  "pin-project-lite", | ||||||
|  |  "postgres-protocol", | ||||||
|  |  "postgres-types", | ||||||
|  |  "socket2 0.5.2", | ||||||
|  |  "tokio", | ||||||
|  |  "tokio-util", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tokio-util" | ||||||
|  | version = "0.7.7" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" | ||||||
|  | dependencies = [ | ||||||
|  |  "bytes", | ||||||
|  |  "futures-core", | ||||||
|  |  "futures-sink", | ||||||
|  |  "pin-project-lite", | ||||||
|  |  "tokio", | ||||||
|  |  "tracing", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tracing" | ||||||
|  | version = "0.1.37" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" | ||||||
|  | dependencies = [ | ||||||
|  |  "cfg-if", | ||||||
|  |  "pin-project-lite", | ||||||
|  |  "tracing-core", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "tracing-core" | ||||||
|  | version = "0.1.30" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" | ||||||
|  | dependencies = [ | ||||||
|  |  "once_cell", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "typenum" | ||||||
|  | version = "1.16.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-bidi" | ||||||
|  | version = "0.3.13" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-ident" | ||||||
|  | version = "1.0.8" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "unicode-normalization" | ||||||
|  | version = "0.1.22" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" | ||||||
|  | dependencies = [ | ||||||
|  |  "tinyvec", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "vcpkg" | ||||||
|  | version = "0.2.15" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "version_check" | ||||||
|  | version = "0.9.4" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "wasi" | ||||||
|  | version = "0.11.0+wasi-snapshot-preview1" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "winapi" | ||||||
|  | version = "0.3.9" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" | ||||||
|  | dependencies = [ | ||||||
|  |  "winapi-i686-pc-windows-gnu", | ||||||
|  |  "winapi-x86_64-pc-windows-gnu", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "winapi-i686-pc-windows-gnu" | ||||||
|  | version = "0.4.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "winapi-x86_64-pc-windows-gnu" | ||||||
|  | version = "0.4.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows-sys" | ||||||
|  | version = "0.45.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" | ||||||
|  | dependencies = [ | ||||||
|  |  "windows-targets 0.42.2", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows-sys" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" | ||||||
|  | dependencies = [ | ||||||
|  |  "windows-targets 0.48.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows-targets" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" | ||||||
|  | dependencies = [ | ||||||
|  |  "windows_aarch64_gnullvm 0.42.2", | ||||||
|  |  "windows_aarch64_msvc 0.42.2", | ||||||
|  |  "windows_i686_gnu 0.42.2", | ||||||
|  |  "windows_i686_msvc 0.42.2", | ||||||
|  |  "windows_x86_64_gnu 0.42.2", | ||||||
|  |  "windows_x86_64_gnullvm 0.42.2", | ||||||
|  |  "windows_x86_64_msvc 0.42.2", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows-targets" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" | ||||||
|  | dependencies = [ | ||||||
|  |  "windows_aarch64_gnullvm 0.48.0", | ||||||
|  |  "windows_aarch64_msvc 0.48.0", | ||||||
|  |  "windows_i686_gnu 0.48.0", | ||||||
|  |  "windows_i686_msvc 0.48.0", | ||||||
|  |  "windows_x86_64_gnu 0.48.0", | ||||||
|  |  "windows_x86_64_gnullvm 0.48.0", | ||||||
|  |  "windows_x86_64_msvc 0.48.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_aarch64_gnullvm" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_aarch64_gnullvm" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_aarch64_msvc" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_aarch64_msvc" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_i686_gnu" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_i686_gnu" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_i686_msvc" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_i686_msvc" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_x86_64_gnu" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_x86_64_gnu" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_x86_64_gnullvm" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_x86_64_gnullvm" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_x86_64_msvc" | ||||||
|  | version = "0.42.2" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "windows_x86_64_msvc" | ||||||
|  | version = "0.48.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" | ||||||
|  | |||||||
| @ -7,3 +7,9 @@ edition = "2021" | |||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
| lazy_static = "1.4.0" | lazy_static = "1.4.0" | ||||||
|  | postgres = "0.19.5" | ||||||
|  | r2d2 = "0.8.10" | ||||||
|  | diesel = { version = "2.0.0", features = ["postgres", "r2d2"] } | ||||||
|  | serde = { version = "1.0", features = ["derive"] } | ||||||
|  | serde_json = "1.0" | ||||||
|  | thiserror = "1.0" | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							| @ -9,3 +9,9 @@ build: format | |||||||
| 
 | 
 | ||||||
| test: | test: | ||||||
| 	cargo test -r -- --nocapture | 	cargo test -r -- --nocapture | ||||||
|  | 
 | ||||||
|  | db-start: | ||||||
|  | 	docker compose up postgresql -d | ||||||
|  | 
 | ||||||
|  | db-stop: | ||||||
|  | 	docker compose down | ||||||
							
								
								
									
										8
									
								
								diesel.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								diesel.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | # For documentation on how to configure this file, | ||||||
|  | # see https://diesel.rs/guides/configuring-diesel-cli | ||||||
|  | 
 | ||||||
|  | [print_schema] | ||||||
|  | file = "src/database/schema.rs" | ||||||
|  | 
 | ||||||
|  | [migrations_directory] | ||||||
|  | dir = "migrations" | ||||||
							
								
								
									
										21
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | version: "3.7" | ||||||
|  | 
 | ||||||
|  | services: | ||||||
|  | 
 | ||||||
|  |   postgresql: | ||||||
|  |     image: postgres:13.2 | ||||||
|  |     restart: unless-stopped | ||||||
|  |     env_file: .env | ||||||
|  |     ports: | ||||||
|  |       - 5433:5432 | ||||||
|  |     volumes: | ||||||
|  |       - postgresql_data:/var/lib/postgresql/data/ | ||||||
|  |     networks: | ||||||
|  |       - dispatcher_network | ||||||
|  | 
 | ||||||
|  | networks: | ||||||
|  |   dispatcher_network: | ||||||
|  |     name: dispatcher_network | ||||||
|  | 
 | ||||||
|  | volumes: | ||||||
|  |   postgresql_data: | ||||||
							
								
								
									
										27
									
								
								src/database/client.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/database/client.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | |||||||
|  | use r2d2; | ||||||
|  | 
 | ||||||
|  | use diesel::pg::PgConnection; | ||||||
|  | use diesel::r2d2::ConnectionManager; | ||||||
|  | use lazy_static::lazy_static; | ||||||
|  | 
 | ||||||
|  | type Pool = r2d2::Pool<ConnectionManager<PgConnection>>; | ||||||
|  | pub type DbConnection = r2d2::PooledConnection<ConnectionManager<PgConnection>>; | ||||||
|  | 
 | ||||||
|  | lazy_static! { | ||||||
|  |     static ref POOL: Pool = { | ||||||
|  |         let database_url = "postgres://rust:rust@localhost:5433/dispatcher"; | ||||||
|  |         let manager = ConnectionManager::<PgConnection>::new(database_url); | ||||||
|  |         Pool::new(manager).expect("failed to create db pool") | ||||||
|  |     }; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | pub fn init_database_pool() { | ||||||
|  |     lazy_static::initialize(&POOL); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | pub fn get_connection() -> Result<DbConnection, String> { | ||||||
|  |     match POOL.get() { | ||||||
|  |         Ok(conn) => Ok(conn), | ||||||
|  |         Err(e) => Err(format!("unable to get pool connection: {}", e)), | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								src/database/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/database/mod.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | mod client; | ||||||
|  | 
 | ||||||
|  | pub use client::{get_connection, init_database_pool}; | ||||||
							
								
								
									
										3
									
								
								src/error/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/error/mod.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | mod storer; | ||||||
|  | 
 | ||||||
|  | pub use storer::StorerError; | ||||||
							
								
								
									
										13
									
								
								src/error/storer.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/error/storer.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | |||||||
|  | use thiserror::Error; | ||||||
|  | 
 | ||||||
|  | #[derive(Error, Debug)] | ||||||
|  | pub enum StorerError { | ||||||
|  |     #[error("unable to insert `{0}`")] | ||||||
|  |     InsertError(String), | ||||||
|  |     #[error("unable to save `{0}`")] | ||||||
|  |     SaveError(String), | ||||||
|  |     #[error("unable to delete `{0}`")] | ||||||
|  |     DeleteError(String), | ||||||
|  |     #[error("unknown saver error")] | ||||||
|  |     Unknown, | ||||||
|  | } | ||||||
| @ -1,4 +1,7 @@ | |||||||
|  | mod database; | ||||||
|  | mod error; | ||||||
| mod message; | mod message; | ||||||
|  | mod model; | ||||||
| mod queue; | mod queue; | ||||||
| mod worker; | mod worker; | ||||||
| 
 | 
 | ||||||
| @ -6,6 +9,7 @@ use std::sync::mpsc::{channel, Sender}; | |||||||
| use std::thread; | use std::thread; | ||||||
| use std::time; | use std::time; | ||||||
| 
 | 
 | ||||||
|  | use database::{get_connection, init_database_pool}; | ||||||
| use message::Message; | use message::Message; | ||||||
| use queue::QueueController; | use queue::QueueController; | ||||||
| 
 | 
 | ||||||
| @ -41,6 +45,8 @@ impl<T: std::fmt::Debug + std::marker::Send + 'static> Dispatch<T> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|  |     init_database_pool(); | ||||||
|  | 
 | ||||||
|     let dispatch: Dispatch<Message> = Dispatch::new(); |     let dispatch: Dispatch<Message> = Dispatch::new(); | ||||||
| 
 | 
 | ||||||
|     let wait = time::Duration::from_secs(2); |     let wait = time::Duration::from_secs(2); | ||||||
|  | |||||||
							
								
								
									
										79
									
								
								src/model/job.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								src/model/job.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,79 @@ | |||||||
|  | use crate::database::get_connection; | ||||||
|  | use std::time::Duration; | ||||||
|  | use std::{thread, time}; | ||||||
|  | 
 | ||||||
|  | use super::{Runner, RunnerStatus, Storer}; | ||||||
|  | use crate::error::StorerError; | ||||||
|  | 
 | ||||||
|  | #[derive(Debug)] | ||||||
|  | pub enum JobAction { | ||||||
|  |     MegaportDeploy, | ||||||
|  |     MegaportUndeploy, | ||||||
|  |     MegaportCheckDeploy, | ||||||
|  |     MegaportCheckUndeploy, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #[derive(Debug)] | ||||||
|  | pub struct Job { | ||||||
|  |     id: i32, | ||||||
|  |     action: JobAction, | ||||||
|  |     status: RunnerStatus, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl Job { | ||||||
|  |     pub fn new(id: i32, action: JobAction) -> Self { | ||||||
|  |         Self { | ||||||
|  |             id: id, | ||||||
|  |             action: action, | ||||||
|  |             status: RunnerStatus::Pending, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     pub fn set_status(&mut self, status: RunnerStatus) { | ||||||
|  |         self.status = status; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl Runner for Job { | ||||||
|  |     fn run(&mut self) { | ||||||
|  |         self.set_status(RunnerStatus::Running); | ||||||
|  | 
 | ||||||
|  |         match self.action { | ||||||
|  |             JobAction::MegaportDeploy => { | ||||||
|  |                 println!("[job({:?})] deploying megaport...", self); | ||||||
|  |             } | ||||||
|  |             JobAction::MegaportUndeploy => { | ||||||
|  |                 println!("[job({:?})] undeploying megaport...", self); | ||||||
|  |             } | ||||||
|  |             JobAction::MegaportCheckDeploy => { | ||||||
|  |                 println!("[job({:?})] ckecking megaport deployment...", self); | ||||||
|  |             } | ||||||
|  |             JobAction::MegaportCheckUndeploy => { | ||||||
|  |                 println!("[job({:?})] ckecking megaport undeployment...", self); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         let wait = time::Duration::from_millis(1); | ||||||
|  |         thread::sleep(wait); | ||||||
|  | 
 | ||||||
|  |         self.set_status(RunnerStatus::Success); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn set_status(&mut self, status: RunnerStatus) { | ||||||
|  |         self.status = status; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl Storer for Job { | ||||||
|  |     fn insert(&self) -> Result<(), StorerError> { | ||||||
|  |         Ok(()) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn save(&self) -> Result<(), StorerError> { | ||||||
|  |         Ok(()) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fn delete(&self) -> Result<(), StorerError> { | ||||||
|  |         Ok(()) | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										5
									
								
								src/model/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/model/mod.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | mod job; | ||||||
|  | mod traits; | ||||||
|  | 
 | ||||||
|  | pub use job::{Job, JobAction}; | ||||||
|  | pub use traits::{Runner, RunnerStatus, Storer}; | ||||||
							
								
								
									
										20
									
								
								src/model/traits.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/model/traits.rs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | use crate::error::StorerError; | ||||||
|  | 
 | ||||||
|  | #[derive(Debug)] | ||||||
|  | pub enum RunnerStatus { | ||||||
|  |     Pending, | ||||||
|  |     Running, | ||||||
|  |     Failed, | ||||||
|  |     Success, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | pub trait Runner { | ||||||
|  |     fn run(&mut self); | ||||||
|  |     fn set_status(&mut self, status: RunnerStatus); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | pub trait Storer { | ||||||
|  |     fn insert(&self) -> Result<(), StorerError>; | ||||||
|  |     fn save(&self) -> Result<(), StorerError>; | ||||||
|  |     fn delete(&self) -> Result<(), StorerError>; | ||||||
|  | } | ||||||
| @ -1,84 +1,34 @@ | |||||||
| use std::collections::VecDeque; | use std::collections::VecDeque; | ||||||
| use std::sync::{Arc, Mutex, Condvar}; | use std::sync::{Arc, Condvar, Mutex}; | ||||||
| use std::thread; | use std::thread; | ||||||
| use std::time; | use std::time; | ||||||
| use std::time::Duration; | use std::time::Duration; | ||||||
| 
 | 
 | ||||||
| use crate::message::Message; | use crate::message::Message; | ||||||
|  | use crate::model::*; | ||||||
| use crate::queue::QueueStatus; | use crate::queue::QueueStatus; | ||||||
| 
 | 
 | ||||||
| struct Queue { | struct Queue<T: Runner> { | ||||||
|     status: Mutex<QueueStatus>, |     content: Mutex<VecDeque<T>>, | ||||||
|     content: Mutex<VecDeque<Job>>, |  | ||||||
|     not_empty: Condvar, |     not_empty: Condvar, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl Queue { | impl<T: Runner> Queue<T> { | ||||||
|     fn new() -> Self { |     fn new() -> Self { | ||||||
|         Self { |         Self { | ||||||
|             status: Mutex::new(QueueStatus::Pending), |  | ||||||
|             content: Mutex::new(VecDeque::new()), |             content: Mutex::new(VecDeque::new()), | ||||||
|             not_empty: Condvar::new(), |             not_empty: Condvar::new(), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn set_status(&mut self, status: QueueStatus) { |     pub fn add_runner(&self, runner: T) { | ||||||
|         let mut s = self.status.lock().unwrap(); |  | ||||||
|         *s = status; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     pub fn add_job(&self, job: Job) { |  | ||||||
|         let mut c = self.content.lock().unwrap(); |         let mut c = self.content.lock().unwrap(); | ||||||
|         c.push_back(job); |         c.push_back(runner); | ||||||
| 
 | 
 | ||||||
|         self.not_empty.notify_one(); |         self.not_empty.notify_one(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Copy, Clone)] |  | ||||||
| pub enum JobAction { |  | ||||||
|     MegaportDeploy, |  | ||||||
|     MegaportUndeploy, |  | ||||||
|     MegaportCheckDeploy, |  | ||||||
|     MegaportCheckUndeploy |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| pub struct Job { |  | ||||||
|     id: u32, |  | ||||||
|     action: JobAction, |  | ||||||
|     data: String, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl Job { |  | ||||||
|     fn new(id: u32, action: JobAction, data: &str) -> Self { |  | ||||||
|         Self { |  | ||||||
|             id: id, |  | ||||||
|             action: action, |  | ||||||
|             data: data.to_string() |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     fn run(&self) { |  | ||||||
|         let id = self.id.clone(); |  | ||||||
|         match self.action { |  | ||||||
|             JobAction::MegaportDeploy => { |  | ||||||
|                 println!("[job({})] deploying megaport...", id); |  | ||||||
|             }, |  | ||||||
|             JobAction::MegaportUndeploy => { |  | ||||||
|                 println!("[job({})] undeploying megaport...", id); |  | ||||||
|             }, |  | ||||||
|             JobAction::MegaportCheckDeploy => { |  | ||||||
|                 println!("[job({})] ckecking megaport deployment...", id); |  | ||||||
|             } |  | ||||||
|             JobAction::MegaportCheckUndeploy => { |  | ||||||
|                 println!("[job({})] ckecking megaport undeployment...", id); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         let wait = time::Duration::from_millis(1); |  | ||||||
|         thread::sleep(wait); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #[derive(Copy, Clone, PartialEq)] | #[derive(Copy, Clone, PartialEq)] | ||||||
| pub enum WorkerStatus { | pub enum WorkerStatus { | ||||||
|     Pending, |     Pending, | ||||||
| @ -113,10 +63,17 @@ pub struct Manager { | |||||||
| 
 | 
 | ||||||
| impl Manager { | impl Manager { | ||||||
|     fn new(name: &str) -> Self { |     fn new(name: &str) -> Self { | ||||||
|         Self { name: name.to_string(), workers: vec![] } |         Self { | ||||||
|  |             name: name.to_string(), | ||||||
|  |             workers: vec![], | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn launch_workers(&mut self, nb_workers: u32, shared_queue: Arc<Queue>) { |     fn launch_workers<T: Runner + std::marker::Send + 'static>( | ||||||
|  |         &mut self, | ||||||
|  |         nb_workers: u32, | ||||||
|  |         shared_queue: Arc<Queue<T>>, | ||||||
|  |     ) { | ||||||
|         for i in 0..nb_workers { |         for i in 0..nb_workers { | ||||||
|             let shared_worker = Arc::new(Mutex::new(Worker::new())); |             let shared_worker = Arc::new(Mutex::new(Worker::new())); | ||||||
| 
 | 
 | ||||||
| @ -126,31 +83,29 @@ impl Manager { | |||||||
|             let queue = shared_queue.clone(); |             let queue = shared_queue.clone(); | ||||||
|             let name = self.name.clone(); |             let name = self.name.clone(); | ||||||
| 
 | 
 | ||||||
|             thread::spawn(move || { |             thread::spawn(move || loop { | ||||||
|                 loop { |                 let mut guard = queue.content.lock().unwrap(); | ||||||
|                     let mut c = queue.content.lock().unwrap(); |  | ||||||
| 
 | 
 | ||||||
|                     let job = loop { |                 let mut runner = loop { | ||||||
|                         if let Some(job) = c.pop_front() { |                     if let Some(r) = guard.pop_front() { | ||||||
|                             break job; |                         break r; | ||||||
|                     } else { |                     } else { | ||||||
|                             c = queue.not_empty.wait(c).unwrap(); |                         guard = queue.not_empty.wait(guard).unwrap(); | ||||||
|                     } |                     } | ||||||
|                 }; |                 }; | ||||||
| 
 | 
 | ||||||
|                     drop(c); |                 drop(guard); | ||||||
| 
 | 
 | ||||||
|                 let mut guard = worker.lock().unwrap(); |                 let mut guard = worker.lock().unwrap(); | ||||||
|                 guard.set_status(WorkerStatus::Running); |                 guard.set_status(WorkerStatus::Running); | ||||||
|                 drop(guard); |                 drop(guard); | ||||||
| 
 | 
 | ||||||
|                 println!("[worker({} - {})] launching job...", name, i); |                 println!("[worker({} - {})] launching job...", name, i); | ||||||
|                     job.run(); |                 runner.run(); | ||||||
| 
 | 
 | ||||||
|                 let mut guard = worker.lock().unwrap(); |                 let mut guard = worker.lock().unwrap(); | ||||||
|                 guard.set_status(WorkerStatus::Pending); |                 guard.set_status(WorkerStatus::Pending); | ||||||
|                 drop(guard); |                 drop(guard); | ||||||
|                 } |  | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @ -158,7 +113,7 @@ impl Manager { | |||||||
|     fn healthcheck(&self, target: WorkerStatus) -> bool { |     fn healthcheck(&self, target: WorkerStatus) -> bool { | ||||||
|         for w in &self.workers { |         for w in &self.workers { | ||||||
|             if w.lock().unwrap().get_status() != target { |             if w.lock().unwrap().get_status() != target { | ||||||
|                 return false |                 return false; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         true |         true | ||||||
| @ -171,8 +126,8 @@ fn test_manager() { | |||||||
|     use std::time::Duration; |     use std::time::Duration; | ||||||
| 
 | 
 | ||||||
|     let mut m = Manager::new("deploy"); |     let mut m = Manager::new("deploy"); | ||||||
|     let queue_deploy = Arc::new(Queue::new()); |     let queue_deploy = Arc::new(Queue::<Job>::new()); | ||||||
|     let queue_check = Arc::new(Queue::new()); |     let queue_check = Arc::new(Queue::<Job>::new()); | ||||||
| 
 | 
 | ||||||
|     m.launch_workers(5, queue_deploy.clone()); |     m.launch_workers(5, queue_deploy.clone()); | ||||||
| 
 | 
 | ||||||
| @ -180,9 +135,9 @@ fn test_manager() { | |||||||
|     assert!(!m.healthcheck(WorkerStatus::Failed)); |     assert!(!m.healthcheck(WorkerStatus::Failed)); | ||||||
| 
 | 
 | ||||||
|     for i in 0..500 { |     for i in 0..500 { | ||||||
|         let j = Job::new(i, JobAction::MegaportDeploy, ""); |         let j = Job::new(i, JobAction::MegaportDeploy); | ||||||
| 
 | 
 | ||||||
|         queue_deploy.add_job(j); |         queue_deploy.add_runner(j); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     let wait = time::Duration::from_millis(200); |     let wait = time::Duration::from_millis(200); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 rmanach
						rmanach