Added tables to database.
This commit is contained in:
parent
be961b2b99
commit
595cd99b0b
57
src/lib.rs
57
src/lib.rs
@ -1,6 +1,23 @@
|
|||||||
use async_graphql::{EmptyMutation, EmptySubscription, Object, Schema};
|
use async_graphql::{EmptySubscription, Object, Result, Schema};
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
|
struct Table {
|
||||||
|
name: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Table {
|
||||||
|
async fn new(name: String) -> Self {
|
||||||
|
Self { name: name }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Object]
|
||||||
|
impl Table {
|
||||||
|
async fn name(&self) -> String {
|
||||||
|
self.name.to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct Query;
|
struct Query;
|
||||||
|
|
||||||
#[Object]
|
#[Object]
|
||||||
@ -8,17 +25,30 @@ impl Query {
|
|||||||
async fn pointless(&self) -> String {
|
async fn pointless(&self) -> String {
|
||||||
"this is pointless.".to_string()
|
"this is pointless.".to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//async fn create_table(&self, name: String) -> Result<Option<Table>> {
|
||||||
|
// Ok(Some(Table::new(name).await))
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Mutation;
|
||||||
|
|
||||||
|
#[Object]
|
||||||
|
impl Mutation {
|
||||||
|
async fn create_table(&self, name: String) -> Result<Option<Table>> {
|
||||||
|
Ok(Some(Table::new(name).await))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct Database {
|
pub struct Database {
|
||||||
schema: Schema<Query, EmptyMutation, EmptySubscription>,
|
schema: Schema<Query, Mutation, EmptySubscription>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Database {
|
impl Database {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
schema: Schema::new(Query, EmptyMutation, EmptySubscription),
|
schema: Schema::new(Query, Mutation, EmptySubscription),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,3 +75,24 @@ mod queries {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod mutations {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[async_std::test]
|
||||||
|
async fn add_table() {
|
||||||
|
let db = Database::new();
|
||||||
|
let output = db
|
||||||
|
.execute(r#"mutation {createTable(name: "william"){name}}"#)
|
||||||
|
.await;
|
||||||
|
let expected = r#"{"data":{"createTable":{"name":"william"}}}"#;
|
||||||
|
println!("{}", &db.schema.sdl());
|
||||||
|
assert!(
|
||||||
|
output == expected,
|
||||||
|
"Got '{}' instead of '{}'.",
|
||||||
|
output,
|
||||||
|
expected
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user