├── .gitignore ├── Cargo.toml ├── LICENSE ├── src └── main.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rustql" 3 | version = "0.1.0" 4 | authors = ["Joshua Cooper "] 5 | edition = "2018" 6 | license = "ISC" 7 | 8 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 9 | 10 | [dependencies] 11 | warp = "0.2" 12 | tokio = { version = "0.2", features = ["macros"] } 13 | serde_json = "1.0" 14 | futures = { version = "0.3.1", features = ["compat"] } 15 | futures-macro = "=0.3.1" 16 | juniper = { git = "https://github.com/graphql-rust/juniper", branch = "async-await", features = ["async"] } 17 | tokio-postgres = { version = "0.5", features = ["with-uuid-0_8"] } 18 | uuid = { version = "0.8", features = ["v4"] } 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2020, Joshua Cooper 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any 4 | purpose with or without fee is hereby granted, provided that the above 5 | copyright notice and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 8 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 9 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 10 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 11 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 12 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 13 | PERFORMANCE OF THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use juniper::http::graphiql::graphiql_source; 2 | use juniper::http::GraphQLRequest; 3 | use juniper::RootNode; 4 | use std::convert::Infallible; 5 | use std::sync::Arc; 6 | use tokio_postgres::{Client, NoTls}; 7 | use warp::Filter; 8 | 9 | #[derive(juniper::GraphQLObject)] 10 | struct Customer { 11 | id: String, 12 | name: String, 13 | age: i32, 14 | email: String, 15 | address: String, 16 | } 17 | 18 | struct QueryRoot; 19 | struct MutationRoot; 20 | 21 | #[juniper::graphql_object(Context = Context)] 22 | impl QueryRoot { 23 | async fn customer(ctx: &Context, id: String) -> juniper::FieldResult { 24 | let uuid = uuid::Uuid::parse_str(&id)?; 25 | let row = ctx 26 | .client 27 | .query_one( 28 | "SELECT name, age, email, address FROM customers WHERE id = $1", 29 | &[&uuid], 30 | ) 31 | .await?; 32 | let customer = Customer { 33 | id, 34 | name: row.try_get(0)?, 35 | age: row.try_get(1)?, 36 | email: row.try_get(2)?, 37 | address: row.try_get(3)?, 38 | }; 39 | Ok(customer) 40 | } 41 | 42 | async fn customers(ctx: &Context) -> juniper::FieldResult> { 43 | let rows = ctx 44 | .client 45 | .query("SELECT id, name, age, email, address FROM customers", &[]) 46 | .await?; 47 | let mut customers = Vec::new(); 48 | for row in rows { 49 | let id: uuid::Uuid = row.try_get(0)?; 50 | let customer = Customer { 51 | id: id.to_string(), 52 | name: row.try_get(1)?, 53 | age: row.try_get(2)?, 54 | email: row.try_get(3)?, 55 | address: row.try_get(4)?, 56 | }; 57 | customers.push(customer); 58 | } 59 | Ok(customers) 60 | } 61 | } 62 | 63 | #[juniper::graphql_object(Context = Context)] 64 | impl MutationRoot { 65 | async fn register_customer( 66 | ctx: &Context, 67 | name: String, 68 | age: i32, 69 | email: String, 70 | address: String, 71 | ) -> juniper::FieldResult { 72 | let id = uuid::Uuid::new_v4(); 73 | let email = email.to_lowercase(); 74 | ctx.client 75 | .execute( 76 | "INSERT INTO customers (id, name, age, email, address) VALUES ($1, $2, $3, $4, $5)", 77 | &[&id, &name, &age, &email, &address], 78 | ) 79 | .await?; 80 | Ok(Customer { 81 | id: id.to_string(), 82 | name, 83 | age, 84 | email, 85 | address, 86 | }) 87 | } 88 | 89 | async fn update_customer_email( 90 | ctx: &Context, 91 | id: String, 92 | email: String, 93 | ) -> juniper::FieldResult { 94 | let uuid = uuid::Uuid::parse_str(&id)?; 95 | let email = email.to_lowercase(); 96 | let n = ctx 97 | .client 98 | .execute( 99 | "UPDATE customers SET email = $1 WHERE id = $2", 100 | &[&email, &uuid], 101 | ) 102 | .await?; 103 | if n == 0 { 104 | return Err("User does not exist".into()); 105 | } 106 | Ok(email) 107 | } 108 | 109 | async fn delete_customer(ctx: &Context, id: String) -> juniper::FieldResult { 110 | let uuid = uuid::Uuid::parse_str(&id)?; 111 | let n = ctx 112 | .client 113 | .execute("DELETE FROM customers WHERE id = $1", &[&uuid]) 114 | .await?; 115 | if n == 0 { 116 | return Err("User does not exist".into()); 117 | } 118 | Ok(true) 119 | } 120 | } 121 | 122 | type Schema = RootNode<'static, QueryRoot, MutationRoot>; 123 | 124 | struct Context { 125 | client: Client, 126 | } 127 | 128 | impl juniper::Context for Context {} 129 | 130 | async fn graphql( 131 | schema: Arc, 132 | ctx: Arc, 133 | req: GraphQLRequest, 134 | ) -> Result { 135 | let res = req.execute_async(&schema, &ctx).await; 136 | let json = serde_json::to_string(&res).expect("Invalid JSON response"); 137 | Ok(json) 138 | } 139 | 140 | #[tokio::main] 141 | async fn main() { 142 | let (client, connection) = tokio_postgres::connect("host=localhost user=postgres", NoTls) 143 | .await 144 | .unwrap(); 145 | 146 | // The connection object performs the actual communication with the database, 147 | // so spawn it off to run on its own. 148 | tokio::spawn(async move { 149 | if let Err(e) = connection.await { 150 | eprintln!("connection error: {}", e); 151 | } 152 | }); 153 | 154 | client 155 | .execute( 156 | "CREATE TABLE IF NOT EXISTS customers( 157 | id UUID PRIMARY KEY, 158 | name TEXT NOT NULL, 159 | age INT NOT NULL, 160 | email TEXT UNIQUE NOT NULL, 161 | address TEXT NOT NULL 162 | )", 163 | &[], 164 | ) 165 | .await 166 | .expect("Could not create table"); 167 | 168 | let schema = Arc::new(Schema::new(QueryRoot, MutationRoot)); 169 | // Create a warp filter for the schema 170 | let schema = warp::any().map(move || Arc::clone(&schema)); 171 | 172 | let ctx = Arc::new(Context { client }); 173 | // Create a warp filter for the context 174 | let ctx = warp::any().map(move || Arc::clone(&ctx)); 175 | 176 | let graphql_route = warp::post() 177 | .and(warp::path!("graphql")) 178 | .and(schema.clone()) 179 | .and(ctx.clone()) 180 | .and(warp::body::json()) 181 | .and_then(graphql); 182 | 183 | let graphiql_route = warp::get() 184 | .and(warp::path!("graphiql")) 185 | .map(|| warp::reply::html(graphiql_source("graphql"))); 186 | 187 | let routes = graphql_route.or(graphiql_route); 188 | 189 | warp::serve(routes).run(([127, 0, 0, 1], 8000)).await; 190 | } 191 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "async-trait" 5 | version = "0.1.30" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | checksum = "da71fef07bc806586090247e971229289f64c210a278ee5ae419314eb386b31d" 8 | dependencies = [ 9 | "proc-macro2", 10 | "quote", 11 | "syn", 12 | ] 13 | 14 | [[package]] 15 | name = "autocfg" 16 | version = "0.1.7" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" 19 | 20 | [[package]] 21 | name = "autocfg" 22 | version = "1.0.0" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" 25 | 26 | [[package]] 27 | name = "base64" 28 | version = "0.11.0" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" 31 | 32 | [[package]] 33 | name = "base64" 34 | version = "0.12.1" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "53d1ccbaf7d9ec9537465a97bf19edc1a4e158ecb49fc16178202238c569cc42" 37 | 38 | [[package]] 39 | name = "bitflags" 40 | version = "1.2.1" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 43 | 44 | [[package]] 45 | name = "block-buffer" 46 | version = "0.7.3" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" 49 | dependencies = [ 50 | "block-padding", 51 | "byte-tools", 52 | "byteorder", 53 | "generic-array", 54 | ] 55 | 56 | [[package]] 57 | name = "block-padding" 58 | version = "0.1.5" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 61 | dependencies = [ 62 | "byte-tools", 63 | ] 64 | 65 | [[package]] 66 | name = "buf_redux" 67 | version = "0.8.4" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" 70 | dependencies = [ 71 | "memchr", 72 | "safemem", 73 | ] 74 | 75 | [[package]] 76 | name = "byte-tools" 77 | version = "0.3.1" 78 | source = "registry+https://github.com/rust-lang/crates.io-index" 79 | checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" 80 | 81 | [[package]] 82 | name = "byteorder" 83 | version = "1.3.4" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" 86 | 87 | [[package]] 88 | name = "bytes" 89 | version = "0.5.4" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" 92 | 93 | [[package]] 94 | name = "cfg-if" 95 | version = "0.1.10" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 98 | 99 | [[package]] 100 | name = "chrono" 101 | version = "0.4.11" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2" 104 | dependencies = [ 105 | "num-integer", 106 | "num-traits", 107 | "time", 108 | ] 109 | 110 | [[package]] 111 | name = "cloudabi" 112 | version = "0.0.3" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 115 | dependencies = [ 116 | "bitflags", 117 | ] 118 | 119 | [[package]] 120 | name = "crypto-mac" 121 | version = "0.7.0" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" 124 | dependencies = [ 125 | "generic-array", 126 | "subtle", 127 | ] 128 | 129 | [[package]] 130 | name = "digest" 131 | version = "0.8.1" 132 | source = "registry+https://github.com/rust-lang/crates.io-index" 133 | checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" 134 | dependencies = [ 135 | "generic-array", 136 | ] 137 | 138 | [[package]] 139 | name = "dtoa" 140 | version = "0.4.5" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | checksum = "4358a9e11b9a09cf52383b451b49a169e8d797b68aa02301ff586d70d9661ea3" 143 | 144 | [[package]] 145 | name = "fake-simd" 146 | version = "0.1.2" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 149 | 150 | [[package]] 151 | name = "fallible-iterator" 152 | version = "0.2.0" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" 155 | 156 | [[package]] 157 | name = "fnv" 158 | version = "1.0.6" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 161 | 162 | [[package]] 163 | name = "fuchsia-cprng" 164 | version = "0.1.1" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 167 | 168 | [[package]] 169 | name = "fuchsia-zircon" 170 | version = "0.3.3" 171 | source = "registry+https://github.com/rust-lang/crates.io-index" 172 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 173 | dependencies = [ 174 | "bitflags", 175 | "fuchsia-zircon-sys", 176 | ] 177 | 178 | [[package]] 179 | name = "fuchsia-zircon-sys" 180 | version = "0.3.3" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 183 | 184 | [[package]] 185 | name = "futures" 186 | version = "0.1.29" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" 189 | 190 | [[package]] 191 | name = "futures" 192 | version = "0.3.1" 193 | source = "registry+https://github.com/rust-lang/crates.io-index" 194 | checksum = "b6f16056ecbb57525ff698bb955162d0cd03bee84e6241c27ff75c08d8ca5987" 195 | dependencies = [ 196 | "futures-channel", 197 | "futures-core", 198 | "futures-executor", 199 | "futures-io", 200 | "futures-sink", 201 | "futures-task", 202 | "futures-util", 203 | ] 204 | 205 | [[package]] 206 | name = "futures-channel" 207 | version = "0.3.5" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" 210 | dependencies = [ 211 | "futures-core", 212 | "futures-sink", 213 | ] 214 | 215 | [[package]] 216 | name = "futures-core" 217 | version = "0.3.5" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" 220 | 221 | [[package]] 222 | name = "futures-executor" 223 | version = "0.3.1" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "1e274736563f686a837a0568b478bdabfeaec2dca794b5649b04e2fe1627c231" 226 | dependencies = [ 227 | "futures-core", 228 | "futures-task", 229 | "futures-util", 230 | ] 231 | 232 | [[package]] 233 | name = "futures-io" 234 | version = "0.3.5" 235 | source = "registry+https://github.com/rust-lang/crates.io-index" 236 | checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" 237 | 238 | [[package]] 239 | name = "futures-macro" 240 | version = "0.3.1" 241 | source = "registry+https://github.com/rust-lang/crates.io-index" 242 | checksum = "52e7c56c15537adb4f76d0b7a76ad131cb4d2f4f32d3b0bcabcbe1c7c5e87764" 243 | dependencies = [ 244 | "proc-macro-hack", 245 | "proc-macro2", 246 | "quote", 247 | "syn", 248 | ] 249 | 250 | [[package]] 251 | name = "futures-sink" 252 | version = "0.3.5" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" 255 | 256 | [[package]] 257 | name = "futures-task" 258 | version = "0.3.5" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" 261 | dependencies = [ 262 | "once_cell", 263 | ] 264 | 265 | [[package]] 266 | name = "futures-util" 267 | version = "0.3.1" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" 270 | dependencies = [ 271 | "futures 0.1.29", 272 | "futures-channel", 273 | "futures-core", 274 | "futures-io", 275 | "futures-macro", 276 | "futures-sink", 277 | "futures-task", 278 | "memchr", 279 | "pin-utils", 280 | "proc-macro-hack", 281 | "proc-macro-nested", 282 | "slab", 283 | ] 284 | 285 | [[package]] 286 | name = "generic-array" 287 | version = "0.12.3" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" 290 | dependencies = [ 291 | "typenum", 292 | ] 293 | 294 | [[package]] 295 | name = "getrandom" 296 | version = "0.1.14" 297 | source = "registry+https://github.com/rust-lang/crates.io-index" 298 | checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" 299 | dependencies = [ 300 | "cfg-if", 301 | "libc", 302 | "wasi", 303 | ] 304 | 305 | [[package]] 306 | name = "h2" 307 | version = "0.2.5" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "79b7246d7e4b979c03fa093da39cfb3617a96bbeee6310af63991668d7e843ff" 310 | dependencies = [ 311 | "bytes", 312 | "fnv", 313 | "futures-core", 314 | "futures-sink", 315 | "futures-util", 316 | "http", 317 | "indexmap", 318 | "log 0.4.8", 319 | "slab", 320 | "tokio", 321 | "tokio-util", 322 | ] 323 | 324 | [[package]] 325 | name = "headers" 326 | version = "0.3.2" 327 | source = "registry+https://github.com/rust-lang/crates.io-index" 328 | checksum = "ed18eb2459bf1a09ad2d6b1547840c3e5e62882fa09b9a6a20b1de8e3228848f" 329 | dependencies = [ 330 | "base64 0.12.1", 331 | "bitflags", 332 | "bytes", 333 | "headers-core", 334 | "http", 335 | "mime 0.3.16", 336 | "sha-1", 337 | "time", 338 | ] 339 | 340 | [[package]] 341 | name = "headers-core" 342 | version = "0.2.0" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" 345 | dependencies = [ 346 | "http", 347 | ] 348 | 349 | [[package]] 350 | name = "hmac" 351 | version = "0.7.1" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" 354 | dependencies = [ 355 | "crypto-mac", 356 | "digest", 357 | ] 358 | 359 | [[package]] 360 | name = "http" 361 | version = "0.2.1" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | checksum = "28d569972648b2c512421b5f2a405ad6ac9666547189d0c5477a3f200f3e02f9" 364 | dependencies = [ 365 | "bytes", 366 | "fnv", 367 | "itoa", 368 | ] 369 | 370 | [[package]] 371 | name = "http-body" 372 | version = "0.3.1" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" 375 | dependencies = [ 376 | "bytes", 377 | "http", 378 | ] 379 | 380 | [[package]] 381 | name = "httparse" 382 | version = "1.3.4" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" 385 | 386 | [[package]] 387 | name = "hyper" 388 | version = "0.13.5" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "96816e1d921eca64d208a85aab4f7798455a8e34229ee5a88c935bdee1b78b14" 391 | dependencies = [ 392 | "bytes", 393 | "futures-channel", 394 | "futures-core", 395 | "futures-util", 396 | "h2", 397 | "http", 398 | "http-body", 399 | "httparse", 400 | "itoa", 401 | "log 0.4.8", 402 | "net2", 403 | "pin-project", 404 | "time", 405 | "tokio", 406 | "tower-service", 407 | "want", 408 | ] 409 | 410 | [[package]] 411 | name = "idna" 412 | version = "0.2.0" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 415 | dependencies = [ 416 | "matches", 417 | "unicode-bidi", 418 | "unicode-normalization", 419 | ] 420 | 421 | [[package]] 422 | name = "indexmap" 423 | version = "1.3.2" 424 | source = "registry+https://github.com/rust-lang/crates.io-index" 425 | checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" 426 | dependencies = [ 427 | "autocfg 1.0.0", 428 | "serde", 429 | ] 430 | 431 | [[package]] 432 | name = "input_buffer" 433 | version = "0.3.1" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | checksum = "19a8a95243d5a0398cae618ec29477c6e3cb631152be5c19481f80bc71559754" 436 | dependencies = [ 437 | "bytes", 438 | ] 439 | 440 | [[package]] 441 | name = "iovec" 442 | version = "0.1.4" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 445 | dependencies = [ 446 | "libc", 447 | ] 448 | 449 | [[package]] 450 | name = "itoa" 451 | version = "0.4.5" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" 454 | 455 | [[package]] 456 | name = "juniper" 457 | version = "0.14.2" 458 | source = "git+https://github.com/graphql-rust/juniper?branch=async-await#001cabc9e91e9a6e94aa682d0cffad91d4ed69e4" 459 | dependencies = [ 460 | "chrono", 461 | "fnv", 462 | "futures 0.3.1", 463 | "indexmap", 464 | "juniper_codegen", 465 | "serde", 466 | "serde_derive", 467 | "url", 468 | "uuid 0.7.4", 469 | ] 470 | 471 | [[package]] 472 | name = "juniper_codegen" 473 | version = "0.14.2" 474 | source = "git+https://github.com/graphql-rust/juniper?branch=async-await#001cabc9e91e9a6e94aa682d0cffad91d4ed69e4" 475 | dependencies = [ 476 | "proc-macro-error", 477 | "proc-macro2", 478 | "quote", 479 | "syn", 480 | ] 481 | 482 | [[package]] 483 | name = "kernel32-sys" 484 | version = "0.2.2" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 487 | dependencies = [ 488 | "winapi 0.2.8", 489 | "winapi-build", 490 | ] 491 | 492 | [[package]] 493 | name = "lazy_static" 494 | version = "1.4.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 497 | 498 | [[package]] 499 | name = "libc" 500 | version = "0.2.69" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005" 503 | 504 | [[package]] 505 | name = "lock_api" 506 | version = "0.3.4" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" 509 | dependencies = [ 510 | "scopeguard", 511 | ] 512 | 513 | [[package]] 514 | name = "log" 515 | version = "0.3.9" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" 518 | dependencies = [ 519 | "log 0.4.8", 520 | ] 521 | 522 | [[package]] 523 | name = "log" 524 | version = "0.4.8" 525 | source = "registry+https://github.com/rust-lang/crates.io-index" 526 | checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 527 | dependencies = [ 528 | "cfg-if", 529 | ] 530 | 531 | [[package]] 532 | name = "matches" 533 | version = "0.1.8" 534 | source = "registry+https://github.com/rust-lang/crates.io-index" 535 | checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 536 | 537 | [[package]] 538 | name = "md5" 539 | version = "0.7.0" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" 542 | 543 | [[package]] 544 | name = "memchr" 545 | version = "2.3.3" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" 548 | 549 | [[package]] 550 | name = "mime" 551 | version = "0.2.6" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" 554 | dependencies = [ 555 | "log 0.3.9", 556 | ] 557 | 558 | [[package]] 559 | name = "mime" 560 | version = "0.3.16" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 563 | 564 | [[package]] 565 | name = "mime_guess" 566 | version = "1.8.8" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | checksum = "216929a5ee4dd316b1702eedf5e74548c123d370f47841ceaac38ca154690ca3" 569 | dependencies = [ 570 | "mime 0.2.6", 571 | "phf 0.7.24", 572 | "phf_codegen", 573 | "unicase 1.4.2", 574 | ] 575 | 576 | [[package]] 577 | name = "mime_guess" 578 | version = "2.0.3" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" 581 | dependencies = [ 582 | "mime 0.3.16", 583 | "unicase 2.6.0", 584 | ] 585 | 586 | [[package]] 587 | name = "mio" 588 | version = "0.6.22" 589 | source = "registry+https://github.com/rust-lang/crates.io-index" 590 | checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" 591 | dependencies = [ 592 | "cfg-if", 593 | "fuchsia-zircon", 594 | "fuchsia-zircon-sys", 595 | "iovec", 596 | "kernel32-sys", 597 | "libc", 598 | "log 0.4.8", 599 | "miow", 600 | "net2", 601 | "slab", 602 | "winapi 0.2.8", 603 | ] 604 | 605 | [[package]] 606 | name = "mio-uds" 607 | version = "0.6.8" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" 610 | dependencies = [ 611 | "iovec", 612 | "libc", 613 | "mio", 614 | ] 615 | 616 | [[package]] 617 | name = "miow" 618 | version = "0.2.1" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 621 | dependencies = [ 622 | "kernel32-sys", 623 | "net2", 624 | "winapi 0.2.8", 625 | "ws2_32-sys", 626 | ] 627 | 628 | [[package]] 629 | name = "multipart" 630 | version = "0.16.1" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "136eed74cadb9edd2651ffba732b19a450316b680e4f48d6c79e905799e19d01" 633 | dependencies = [ 634 | "buf_redux", 635 | "httparse", 636 | "log 0.4.8", 637 | "mime 0.2.6", 638 | "mime_guess 1.8.8", 639 | "quick-error", 640 | "rand 0.6.5", 641 | "safemem", 642 | "tempfile", 643 | "twoway", 644 | ] 645 | 646 | [[package]] 647 | name = "net2" 648 | version = "0.2.34" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" 651 | dependencies = [ 652 | "cfg-if", 653 | "libc", 654 | "winapi 0.3.8", 655 | ] 656 | 657 | [[package]] 658 | name = "num-integer" 659 | version = "0.1.42" 660 | source = "registry+https://github.com/rust-lang/crates.io-index" 661 | checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" 662 | dependencies = [ 663 | "autocfg 1.0.0", 664 | "num-traits", 665 | ] 666 | 667 | [[package]] 668 | name = "num-traits" 669 | version = "0.2.11" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" 672 | dependencies = [ 673 | "autocfg 1.0.0", 674 | ] 675 | 676 | [[package]] 677 | name = "once_cell" 678 | version = "1.3.1" 679 | source = "registry+https://github.com/rust-lang/crates.io-index" 680 | checksum = "b1c601810575c99596d4afc46f78a678c80105117c379eb3650cf99b8a21ce5b" 681 | 682 | [[package]] 683 | name = "opaque-debug" 684 | version = "0.2.3" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" 687 | 688 | [[package]] 689 | name = "parking_lot" 690 | version = "0.10.2" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" 693 | dependencies = [ 694 | "lock_api", 695 | "parking_lot_core", 696 | ] 697 | 698 | [[package]] 699 | name = "parking_lot_core" 700 | version = "0.7.2" 701 | source = "registry+https://github.com/rust-lang/crates.io-index" 702 | checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" 703 | dependencies = [ 704 | "cfg-if", 705 | "cloudabi", 706 | "libc", 707 | "redox_syscall", 708 | "smallvec", 709 | "winapi 0.3.8", 710 | ] 711 | 712 | [[package]] 713 | name = "percent-encoding" 714 | version = "2.1.0" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 717 | 718 | [[package]] 719 | name = "phf" 720 | version = "0.7.24" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" 723 | dependencies = [ 724 | "phf_shared 0.7.24", 725 | ] 726 | 727 | [[package]] 728 | name = "phf" 729 | version = "0.8.0" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 732 | dependencies = [ 733 | "phf_shared 0.8.0", 734 | ] 735 | 736 | [[package]] 737 | name = "phf_codegen" 738 | version = "0.7.24" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" 741 | dependencies = [ 742 | "phf_generator", 743 | "phf_shared 0.7.24", 744 | ] 745 | 746 | [[package]] 747 | name = "phf_generator" 748 | version = "0.7.24" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" 751 | dependencies = [ 752 | "phf_shared 0.7.24", 753 | "rand 0.6.5", 754 | ] 755 | 756 | [[package]] 757 | name = "phf_shared" 758 | version = "0.7.24" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" 761 | dependencies = [ 762 | "siphasher 0.2.3", 763 | "unicase 1.4.2", 764 | ] 765 | 766 | [[package]] 767 | name = "phf_shared" 768 | version = "0.8.0" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 771 | dependencies = [ 772 | "siphasher 0.3.3", 773 | ] 774 | 775 | [[package]] 776 | name = "pin-project" 777 | version = "0.4.14" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "2bbe07cee13ca15295ce93a5b1094d63e0420603e91ffda4f86d4478988916f2" 780 | dependencies = [ 781 | "pin-project-internal", 782 | ] 783 | 784 | [[package]] 785 | name = "pin-project-internal" 786 | version = "0.4.14" 787 | source = "registry+https://github.com/rust-lang/crates.io-index" 788 | checksum = "1b789ec51a10e5a985a9863ef8791412523334d6240fab2cf40dd9fd47496dc6" 789 | dependencies = [ 790 | "proc-macro2", 791 | "quote", 792 | "syn", 793 | ] 794 | 795 | [[package]] 796 | name = "pin-project-lite" 797 | version = "0.1.5" 798 | source = "registry+https://github.com/rust-lang/crates.io-index" 799 | checksum = "f7505eeebd78492e0f6108f7171c4948dbb120ee8119d9d77d0afa5469bef67f" 800 | 801 | [[package]] 802 | name = "pin-utils" 803 | version = "0.1.0" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 806 | 807 | [[package]] 808 | name = "postgres-protocol" 809 | version = "0.5.1" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | checksum = "3f611afe4d1407ebe7f3ced1ffc66f730fac1b1c13085e230a8cdcb921e97710" 812 | dependencies = [ 813 | "base64 0.12.1", 814 | "byteorder", 815 | "bytes", 816 | "fallible-iterator", 817 | "hmac", 818 | "md5", 819 | "memchr", 820 | "rand 0.7.3", 821 | "sha2", 822 | "stringprep", 823 | ] 824 | 825 | [[package]] 826 | name = "postgres-types" 827 | version = "0.1.1" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "e634590e8812c500088d88db721195979223dabb05149f43cb50931d0ff5865d" 830 | dependencies = [ 831 | "bytes", 832 | "fallible-iterator", 833 | "postgres-protocol", 834 | "uuid 0.8.1", 835 | ] 836 | 837 | [[package]] 838 | name = "ppv-lite86" 839 | version = "0.2.6" 840 | source = "registry+https://github.com/rust-lang/crates.io-index" 841 | checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" 842 | 843 | [[package]] 844 | name = "proc-macro-error" 845 | version = "0.3.4" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | checksum = "03e202b6302b80433b759eb9314be63521361a6622f6c125fe0dc3f6196e2722" 848 | dependencies = [ 849 | "proc-macro-error-attr", 850 | "proc-macro2", 851 | "quote", 852 | "syn", 853 | ] 854 | 855 | [[package]] 856 | name = "proc-macro-error-attr" 857 | version = "0.3.4" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "d140e22ca819b3aa3719d1aafbdea40544799e3f901886a4ee72c3ff710de7c9" 860 | dependencies = [ 861 | "proc-macro2", 862 | "quote", 863 | "rustversion", 864 | "syn", 865 | ] 866 | 867 | [[package]] 868 | name = "proc-macro-hack" 869 | version = "0.5.15" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "0d659fe7c6d27f25e9d80a1a094c223f5246f6a6596453e09d7229bf42750b63" 872 | 873 | [[package]] 874 | name = "proc-macro-nested" 875 | version = "0.1.4" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "8e946095f9d3ed29ec38de908c22f95d9ac008e424c7bcae54c75a79c527c694" 878 | 879 | [[package]] 880 | name = "proc-macro2" 881 | version = "1.0.12" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "8872cf6f48eee44265156c111456a700ab3483686b3f96df4cf5481c89157319" 884 | dependencies = [ 885 | "unicode-xid", 886 | ] 887 | 888 | [[package]] 889 | name = "quick-error" 890 | version = "1.2.3" 891 | source = "registry+https://github.com/rust-lang/crates.io-index" 892 | checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" 893 | 894 | [[package]] 895 | name = "quote" 896 | version = "1.0.4" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "4c1f4b0efa5fc5e8ceb705136bfee52cfdb6a4e3509f770b478cd6ed434232a7" 899 | dependencies = [ 900 | "proc-macro2", 901 | ] 902 | 903 | [[package]] 904 | name = "rand" 905 | version = "0.6.5" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 908 | dependencies = [ 909 | "autocfg 0.1.7", 910 | "libc", 911 | "rand_chacha 0.1.1", 912 | "rand_core 0.4.2", 913 | "rand_hc 0.1.0", 914 | "rand_isaac", 915 | "rand_jitter", 916 | "rand_os", 917 | "rand_pcg", 918 | "rand_xorshift", 919 | "winapi 0.3.8", 920 | ] 921 | 922 | [[package]] 923 | name = "rand" 924 | version = "0.7.3" 925 | source = "registry+https://github.com/rust-lang/crates.io-index" 926 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 927 | dependencies = [ 928 | "getrandom", 929 | "libc", 930 | "rand_chacha 0.2.2", 931 | "rand_core 0.5.1", 932 | "rand_hc 0.2.0", 933 | ] 934 | 935 | [[package]] 936 | name = "rand_chacha" 937 | version = "0.1.1" 938 | source = "registry+https://github.com/rust-lang/crates.io-index" 939 | checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 940 | dependencies = [ 941 | "autocfg 0.1.7", 942 | "rand_core 0.3.1", 943 | ] 944 | 945 | [[package]] 946 | name = "rand_chacha" 947 | version = "0.2.2" 948 | source = "registry+https://github.com/rust-lang/crates.io-index" 949 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 950 | dependencies = [ 951 | "ppv-lite86", 952 | "rand_core 0.5.1", 953 | ] 954 | 955 | [[package]] 956 | name = "rand_core" 957 | version = "0.3.1" 958 | source = "registry+https://github.com/rust-lang/crates.io-index" 959 | checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 960 | dependencies = [ 961 | "rand_core 0.4.2", 962 | ] 963 | 964 | [[package]] 965 | name = "rand_core" 966 | version = "0.4.2" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 969 | 970 | [[package]] 971 | name = "rand_core" 972 | version = "0.5.1" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 975 | dependencies = [ 976 | "getrandom", 977 | ] 978 | 979 | [[package]] 980 | name = "rand_hc" 981 | version = "0.1.0" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 984 | dependencies = [ 985 | "rand_core 0.3.1", 986 | ] 987 | 988 | [[package]] 989 | name = "rand_hc" 990 | version = "0.2.0" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 993 | dependencies = [ 994 | "rand_core 0.5.1", 995 | ] 996 | 997 | [[package]] 998 | name = "rand_isaac" 999 | version = "0.1.1" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 1002 | dependencies = [ 1003 | "rand_core 0.3.1", 1004 | ] 1005 | 1006 | [[package]] 1007 | name = "rand_jitter" 1008 | version = "0.1.4" 1009 | source = "registry+https://github.com/rust-lang/crates.io-index" 1010 | checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 1011 | dependencies = [ 1012 | "libc", 1013 | "rand_core 0.4.2", 1014 | "winapi 0.3.8", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "rand_os" 1019 | version = "0.1.3" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 1022 | dependencies = [ 1023 | "cloudabi", 1024 | "fuchsia-cprng", 1025 | "libc", 1026 | "rand_core 0.4.2", 1027 | "rdrand", 1028 | "winapi 0.3.8", 1029 | ] 1030 | 1031 | [[package]] 1032 | name = "rand_pcg" 1033 | version = "0.1.2" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 1036 | dependencies = [ 1037 | "autocfg 0.1.7", 1038 | "rand_core 0.4.2", 1039 | ] 1040 | 1041 | [[package]] 1042 | name = "rand_xorshift" 1043 | version = "0.1.1" 1044 | source = "registry+https://github.com/rust-lang/crates.io-index" 1045 | checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 1046 | dependencies = [ 1047 | "rand_core 0.3.1", 1048 | ] 1049 | 1050 | [[package]] 1051 | name = "rdrand" 1052 | version = "0.4.0" 1053 | source = "registry+https://github.com/rust-lang/crates.io-index" 1054 | checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1055 | dependencies = [ 1056 | "rand_core 0.3.1", 1057 | ] 1058 | 1059 | [[package]] 1060 | name = "redox_syscall" 1061 | version = "0.1.56" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 1064 | 1065 | [[package]] 1066 | name = "remove_dir_all" 1067 | version = "0.5.2" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1070 | dependencies = [ 1071 | "winapi 0.3.8", 1072 | ] 1073 | 1074 | [[package]] 1075 | name = "rustql" 1076 | version = "0.1.0" 1077 | dependencies = [ 1078 | "futures 0.3.1", 1079 | "futures-macro", 1080 | "juniper", 1081 | "serde_json", 1082 | "tokio", 1083 | "tokio-postgres", 1084 | "uuid 0.8.1", 1085 | "warp", 1086 | ] 1087 | 1088 | [[package]] 1089 | name = "rustversion" 1090 | version = "1.0.2" 1091 | source = "registry+https://github.com/rust-lang/crates.io-index" 1092 | checksum = "b3bba175698996010c4f6dce5e7f173b6eb781fce25d2cfc45e27091ce0b79f6" 1093 | dependencies = [ 1094 | "proc-macro2", 1095 | "quote", 1096 | "syn", 1097 | ] 1098 | 1099 | [[package]] 1100 | name = "ryu" 1101 | version = "1.0.4" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" 1104 | 1105 | [[package]] 1106 | name = "safemem" 1107 | version = "0.3.3" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" 1110 | 1111 | [[package]] 1112 | name = "scoped-tls" 1113 | version = "1.0.0" 1114 | source = "registry+https://github.com/rust-lang/crates.io-index" 1115 | checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" 1116 | 1117 | [[package]] 1118 | name = "scopeguard" 1119 | version = "1.1.0" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1122 | 1123 | [[package]] 1124 | name = "serde" 1125 | version = "1.0.110" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | checksum = "99e7b308464d16b56eba9964e4972a3eee817760ab60d88c3f86e1fecb08204c" 1128 | 1129 | [[package]] 1130 | name = "serde_derive" 1131 | version = "1.0.110" 1132 | source = "registry+https://github.com/rust-lang/crates.io-index" 1133 | checksum = "818fbf6bfa9a42d3bfcaca148547aa00c7b915bec71d1757aa2d44ca68771984" 1134 | dependencies = [ 1135 | "proc-macro2", 1136 | "quote", 1137 | "syn", 1138 | ] 1139 | 1140 | [[package]] 1141 | name = "serde_json" 1142 | version = "1.0.53" 1143 | source = "registry+https://github.com/rust-lang/crates.io-index" 1144 | checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2" 1145 | dependencies = [ 1146 | "itoa", 1147 | "ryu", 1148 | "serde", 1149 | ] 1150 | 1151 | [[package]] 1152 | name = "serde_urlencoded" 1153 | version = "0.6.1" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" 1156 | dependencies = [ 1157 | "dtoa", 1158 | "itoa", 1159 | "serde", 1160 | "url", 1161 | ] 1162 | 1163 | [[package]] 1164 | name = "sha-1" 1165 | version = "0.8.2" 1166 | source = "registry+https://github.com/rust-lang/crates.io-index" 1167 | checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" 1168 | dependencies = [ 1169 | "block-buffer", 1170 | "digest", 1171 | "fake-simd", 1172 | "opaque-debug", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "sha2" 1177 | version = "0.8.1" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" 1180 | dependencies = [ 1181 | "block-buffer", 1182 | "digest", 1183 | "fake-simd", 1184 | "opaque-debug", 1185 | ] 1186 | 1187 | [[package]] 1188 | name = "siphasher" 1189 | version = "0.2.3" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" 1192 | 1193 | [[package]] 1194 | name = "siphasher" 1195 | version = "0.3.3" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "fa8f3741c7372e75519bd9346068370c9cdaabcc1f9599cbcf2a2719352286b7" 1198 | 1199 | [[package]] 1200 | name = "slab" 1201 | version = "0.4.2" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1204 | 1205 | [[package]] 1206 | name = "smallvec" 1207 | version = "1.4.0" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" 1210 | 1211 | [[package]] 1212 | name = "stringprep" 1213 | version = "0.1.2" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" 1216 | dependencies = [ 1217 | "unicode-bidi", 1218 | "unicode-normalization", 1219 | ] 1220 | 1221 | [[package]] 1222 | name = "subtle" 1223 | version = "1.0.0" 1224 | source = "registry+https://github.com/rust-lang/crates.io-index" 1225 | checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" 1226 | 1227 | [[package]] 1228 | name = "syn" 1229 | version = "1.0.19" 1230 | source = "registry+https://github.com/rust-lang/crates.io-index" 1231 | checksum = "e8e5aa70697bb26ee62214ae3288465ecec0000f05182f039b477001f08f5ae7" 1232 | dependencies = [ 1233 | "proc-macro2", 1234 | "quote", 1235 | "unicode-xid", 1236 | ] 1237 | 1238 | [[package]] 1239 | name = "tempfile" 1240 | version = "3.1.0" 1241 | source = "registry+https://github.com/rust-lang/crates.io-index" 1242 | checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1243 | dependencies = [ 1244 | "cfg-if", 1245 | "libc", 1246 | "rand 0.7.3", 1247 | "redox_syscall", 1248 | "remove_dir_all", 1249 | "winapi 0.3.8", 1250 | ] 1251 | 1252 | [[package]] 1253 | name = "time" 1254 | version = "0.1.43" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" 1257 | dependencies = [ 1258 | "libc", 1259 | "winapi 0.3.8", 1260 | ] 1261 | 1262 | [[package]] 1263 | name = "tokio" 1264 | version = "0.2.20" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | checksum = "05c1d570eb1a36f0345a5ce9c6c6e665b70b73d11236912c0b477616aeec47b1" 1267 | dependencies = [ 1268 | "bytes", 1269 | "fnv", 1270 | "futures-core", 1271 | "iovec", 1272 | "lazy_static", 1273 | "libc", 1274 | "memchr", 1275 | "mio", 1276 | "mio-uds", 1277 | "pin-project-lite", 1278 | "slab", 1279 | "tokio-macros", 1280 | ] 1281 | 1282 | [[package]] 1283 | name = "tokio-macros" 1284 | version = "0.2.5" 1285 | source = "registry+https://github.com/rust-lang/crates.io-index" 1286 | checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" 1287 | dependencies = [ 1288 | "proc-macro2", 1289 | "quote", 1290 | "syn", 1291 | ] 1292 | 1293 | [[package]] 1294 | name = "tokio-postgres" 1295 | version = "0.5.4" 1296 | source = "registry+https://github.com/rust-lang/crates.io-index" 1297 | checksum = "d56010a704311361b7c9e870aaa4ddffaf9f2db89cbcf3e14773ac8a14469c9c" 1298 | dependencies = [ 1299 | "async-trait", 1300 | "byteorder", 1301 | "bytes", 1302 | "fallible-iterator", 1303 | "futures 0.3.1", 1304 | "log 0.4.8", 1305 | "parking_lot", 1306 | "percent-encoding", 1307 | "phf 0.8.0", 1308 | "pin-project-lite", 1309 | "postgres-protocol", 1310 | "postgres-types", 1311 | "tokio", 1312 | "tokio-util", 1313 | ] 1314 | 1315 | [[package]] 1316 | name = "tokio-tungstenite" 1317 | version = "0.10.1" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | checksum = "b8b8fe88007ebc363512449868d7da4389c9400072a3f666f212c7280082882a" 1320 | dependencies = [ 1321 | "futures 0.3.1", 1322 | "log 0.4.8", 1323 | "pin-project", 1324 | "tokio", 1325 | "tungstenite", 1326 | ] 1327 | 1328 | [[package]] 1329 | name = "tokio-util" 1330 | version = "0.3.1" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" 1333 | dependencies = [ 1334 | "bytes", 1335 | "futures-core", 1336 | "futures-sink", 1337 | "log 0.4.8", 1338 | "pin-project-lite", 1339 | "tokio", 1340 | ] 1341 | 1342 | [[package]] 1343 | name = "tower-service" 1344 | version = "0.3.0" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" 1347 | 1348 | [[package]] 1349 | name = "try-lock" 1350 | version = "0.2.2" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1353 | 1354 | [[package]] 1355 | name = "tungstenite" 1356 | version = "0.10.1" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "cfea31758bf674f990918962e8e5f07071a3161bd7c4138ed23e416e1ac4264e" 1359 | dependencies = [ 1360 | "base64 0.11.0", 1361 | "byteorder", 1362 | "bytes", 1363 | "http", 1364 | "httparse", 1365 | "input_buffer", 1366 | "log 0.4.8", 1367 | "rand 0.7.3", 1368 | "sha-1", 1369 | "url", 1370 | "utf-8", 1371 | ] 1372 | 1373 | [[package]] 1374 | name = "twoway" 1375 | version = "0.1.8" 1376 | source = "registry+https://github.com/rust-lang/crates.io-index" 1377 | checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" 1378 | dependencies = [ 1379 | "memchr", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "typenum" 1384 | version = "1.12.0" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" 1387 | 1388 | [[package]] 1389 | name = "unicase" 1390 | version = "1.4.2" 1391 | source = "registry+https://github.com/rust-lang/crates.io-index" 1392 | checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 1393 | dependencies = [ 1394 | "version_check 0.1.5", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "unicase" 1399 | version = "2.6.0" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" 1402 | dependencies = [ 1403 | "version_check 0.9.1", 1404 | ] 1405 | 1406 | [[package]] 1407 | name = "unicode-bidi" 1408 | version = "0.3.4" 1409 | source = "registry+https://github.com/rust-lang/crates.io-index" 1410 | checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1411 | dependencies = [ 1412 | "matches", 1413 | ] 1414 | 1415 | [[package]] 1416 | name = "unicode-normalization" 1417 | version = "0.1.12" 1418 | source = "registry+https://github.com/rust-lang/crates.io-index" 1419 | checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" 1420 | dependencies = [ 1421 | "smallvec", 1422 | ] 1423 | 1424 | [[package]] 1425 | name = "unicode-xid" 1426 | version = "0.2.0" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" 1429 | 1430 | [[package]] 1431 | name = "url" 1432 | version = "2.1.1" 1433 | source = "registry+https://github.com/rust-lang/crates.io-index" 1434 | checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" 1435 | dependencies = [ 1436 | "idna", 1437 | "matches", 1438 | "percent-encoding", 1439 | ] 1440 | 1441 | [[package]] 1442 | name = "urlencoding" 1443 | version = "1.0.0" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | checksum = "3df3561629a8bb4c57e5a2e4c43348d9e29c7c29d9b1c4c1f47166deca8f37ed" 1446 | 1447 | [[package]] 1448 | name = "utf-8" 1449 | version = "0.7.5" 1450 | source = "registry+https://github.com/rust-lang/crates.io-index" 1451 | checksum = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" 1452 | 1453 | [[package]] 1454 | name = "uuid" 1455 | version = "0.7.4" 1456 | source = "registry+https://github.com/rust-lang/crates.io-index" 1457 | checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 1458 | 1459 | [[package]] 1460 | name = "uuid" 1461 | version = "0.8.1" 1462 | source = "registry+https://github.com/rust-lang/crates.io-index" 1463 | checksum = "9fde2f6a4bea1d6e007c4ad38c6839fa71cbb63b6dbf5b595aa38dc9b1093c11" 1464 | dependencies = [ 1465 | "rand 0.7.3", 1466 | ] 1467 | 1468 | [[package]] 1469 | name = "version_check" 1470 | version = "0.1.5" 1471 | source = "registry+https://github.com/rust-lang/crates.io-index" 1472 | checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1473 | 1474 | [[package]] 1475 | name = "version_check" 1476 | version = "0.9.1" 1477 | source = "registry+https://github.com/rust-lang/crates.io-index" 1478 | checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" 1479 | 1480 | [[package]] 1481 | name = "want" 1482 | version = "0.3.0" 1483 | source = "registry+https://github.com/rust-lang/crates.io-index" 1484 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 1485 | dependencies = [ 1486 | "log 0.4.8", 1487 | "try-lock", 1488 | ] 1489 | 1490 | [[package]] 1491 | name = "warp" 1492 | version = "0.2.2" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "54cd1e2b3eb3539284d88b76a9afcf5e20f2ef2fab74db5b21a1c30d7d945e82" 1495 | dependencies = [ 1496 | "bytes", 1497 | "futures 0.3.1", 1498 | "headers", 1499 | "http", 1500 | "hyper", 1501 | "log 0.4.8", 1502 | "mime 0.3.16", 1503 | "mime_guess 2.0.3", 1504 | "multipart", 1505 | "pin-project", 1506 | "scoped-tls", 1507 | "serde", 1508 | "serde_json", 1509 | "serde_urlencoded", 1510 | "tokio", 1511 | "tokio-tungstenite", 1512 | "tower-service", 1513 | "urlencoding", 1514 | ] 1515 | 1516 | [[package]] 1517 | name = "wasi" 1518 | version = "0.9.0+wasi-snapshot-preview1" 1519 | source = "registry+https://github.com/rust-lang/crates.io-index" 1520 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 1521 | 1522 | [[package]] 1523 | name = "winapi" 1524 | version = "0.2.8" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1527 | 1528 | [[package]] 1529 | name = "winapi" 1530 | version = "0.3.8" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" 1533 | dependencies = [ 1534 | "winapi-i686-pc-windows-gnu", 1535 | "winapi-x86_64-pc-windows-gnu", 1536 | ] 1537 | 1538 | [[package]] 1539 | name = "winapi-build" 1540 | version = "0.1.1" 1541 | source = "registry+https://github.com/rust-lang/crates.io-index" 1542 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1543 | 1544 | [[package]] 1545 | name = "winapi-i686-pc-windows-gnu" 1546 | version = "0.4.0" 1547 | source = "registry+https://github.com/rust-lang/crates.io-index" 1548 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1549 | 1550 | [[package]] 1551 | name = "winapi-x86_64-pc-windows-gnu" 1552 | version = "0.4.0" 1553 | source = "registry+https://github.com/rust-lang/crates.io-index" 1554 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1555 | 1556 | [[package]] 1557 | name = "ws2_32-sys" 1558 | version = "0.2.1" 1559 | source = "registry+https://github.com/rust-lang/crates.io-index" 1560 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1561 | dependencies = [ 1562 | "winapi 0.2.8", 1563 | "winapi-build", 1564 | ] 1565 | --------------------------------------------------------------------------------