Integrate codespell for Book (#1121)

- add `codespell` CI job
- add `book.codespell` Makefile command
- fix Book typos found by codespell

Co-authored-by: Kai Ren <tyranron@gmail.com>
This commit is contained in:
Kian-Meng Ang 2023-10-27 23:51:41 +08:00 committed by GitHub
parent d11e351a49
commit 0fc95ddbff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 35 additions and 10 deletions

2
.codespellrc Normal file
View file

@ -0,0 +1,2 @@
[codespell]
ignore-words-list = crate

View file

@ -24,6 +24,7 @@ jobs:
if: ${{ github.event_name == 'pull_request' }}
needs:
- bench
- codespell
- clippy
- feature
- msrv
@ -54,6 +55,15 @@ jobs:
- run: make cargo.lint
codespell:
name: codespell (Book)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: codespell-project/actions-codespell@v2
with:
path: book/
rustfmt:
runs-on: ubuntu-latest
steps:
@ -342,6 +352,7 @@ jobs:
needs:
- bench
- clippy
- codespell
- feature
- msrv
- package
@ -391,7 +402,7 @@ jobs:
name: deploy (Book)
if: ${{ github.ref == 'refs/heads/master'
|| startsWith(github.ref, 'refs/tags/juniper@') }}
needs: ["test", "test-book"]
needs: ["codespell", "test", "test-book"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

View file

@ -18,6 +18,9 @@ eq = $(if $(or $(1),$(2)),$(and $(findstring $(1),$(2)),\
book: book.build
codespell: book.codespell
fmt: cargo.fmt
@ -137,6 +140,15 @@ book.build:
mdbook build book/ $(if $(call eq,$(out),),,-d $(out))
# Spellcheck Book.
#
# Usage:
# make book.codespell [fix=(no|yes)]
book.codespell:
codespell book/ $(if $(call eq,$(fix),yes),--write-changes,)
# Serve Book on some port.
#
# Usage:
@ -180,8 +192,8 @@ graphql-playground:
# .PHONY section #
##################
.PHONY: book fmt lint release test \
book.build book.serve \
.PHONY: book codespell fmt lint release test \
book.build book.codespell book.serve \
cargo.fmt cargo.lint cargo.release cargo.test \
graphiql graphql-playground \
test.book test.cargo

View file

@ -1,7 +1,7 @@
# Avoiding the N+1 Problem With Dataloaders
A common issue with graphql servers is how the resolvers query their datasource.
This issue results in a large number of unneccessary database queries or http requests.
This issue results in a large number of unnecessary database queries or http requests.
Say you were wanting to list a bunch of cults people were in
```graphql

View file

@ -1,6 +1,6 @@
# Multiple operations per request
The GraphQL standard generally assumes there will be one server request for each client operation you want to perform (such as a query or mutation). This is conceptually simple but has the potential to be inefficent.
The GraphQL standard generally assumes there will be one server request for each client operation you want to perform (such as a query or mutation). This is conceptually simple but has the potential to be inefficient.
Some client libraries such as [apollo-link-batch-http](https://www.apollographql.com/docs/link/links/batch-http.html) have added the ability to batch operations in a single HTTP request to save network round-trips and potentially increase performance. There are some [tradeoffs](https://blog.apollographql.com/batching-client-graphql-queries-a685f5bcd41b) that should be considered before batching requests.

View file

@ -61,13 +61,13 @@ Also, enum name can be specified explicitly, if desired.
# extern crate juniper;
use juniper::{graphql_interface, GraphQLObject};
#[graphql_interface(enum = CharaterInterface, for = Human)]
#[graphql_interface(enum = CharacterInterface, for = Human)]
trait Character {
fn id(&self) -> &str;
}
#[derive(GraphQLObject)]
#[graphql(impl = CharaterInterface)]
#[graphql(impl = CharacterInterface)]
struct Human {
id: String,
home_planet: String,
@ -248,7 +248,7 @@ use juniper::{graphql_interface, GraphQLObject};
pub struct ObjA {
id: Vec<String>,
// ^^ the evaluated program panicked at
// 'Failed to implement interface `Character` on `ObjA`: Field `id`: implementor is expected to return a subtype of
// 'Failed to implement interface `Character` on `ObjA`: Field `id`: implementer is expected to return a subtype of
// interface's return object: `[String!]!` is not a subtype of `String!`.'
}

View file

@ -127,7 +127,7 @@ impl User {
let DatabaseContext(context) = context;
// If context is immutable use .read() on RwLock.
let mut context = context.write().await;
// Preform a mutable operation.
// Perform a mutable operation.
context.requested_count.entry(self.id).and_modify(|e| { *e += 1 }).or_insert(1).clone()
}

View file

@ -1,6 +1,6 @@
# Other Types
The GraphQL type system provides several types in additon to objects.
The GraphQL type system provides several types in addition to objects.
Find out more about each type below: