diff --git a/src/graphql.rs b/src/api.rs similarity index 100% rename from src/graphql.rs rename to src/api.rs diff --git a/src/graphql/discussion.rs b/src/api/discussion.rs similarity index 96% rename from src/graphql/discussion.rs rename to src/api/discussion.rs index 6fa9021..e2eabb6 100644 --- a/src/graphql/discussion.rs +++ b/src/api/discussion.rs @@ -7,8 +7,9 @@ use async_graphql::{ }; use crate::{ + api, database::{self, Database, DiscussionDbSchema, TryFromKeyValue}, - github::discussions::ReactionContent, + outbound::discussions::ReactionContent, }; scalar!(ReactionContent); @@ -53,7 +54,7 @@ impl DiscussionQuery { first, last, |after, before, first, last| async move { - super::load_connection(ctx, Database::discussions, after, before, first, last) + api::load_connection(ctx, Database::discussions, after, before, first, last) }, ) .await @@ -79,14 +80,14 @@ impl fmt::Display for Discussion { #[cfg(test)] mod tests { use crate::{ + api::TestSchema, database::{ discussion::{ Answer, Category, Comment, Comments, Labels, Reaction, Reactions, Replies, Reply, }, DiscussionDbSchema, }, - github::discussions::ReactionContent, - graphql::TestSchema, + outbound::discussions::ReactionContent, }; #[tokio::test] diff --git a/src/graphql/issue.rs b/src/api/issue.rs similarity index 98% rename from src/graphql/issue.rs rename to src/api/issue.rs index 1ed6aeb..14aa177 100644 --- a/src/graphql/issue.rs +++ b/src/api/issue.rs @@ -8,12 +8,13 @@ use async_graphql::{ use serde::{Deserialize, Serialize}; use crate::{ + api, + api::DateTimeUtc, database::{self, Database, TryFromKeyValue}, - github::{ + outbound::{ issues::{IssueState, PullRequestState}, GitHubIssue, }, - graphql::DateTimeUtc, }; scalar!(IssueState); @@ -231,7 +232,7 @@ impl IssueQuery { first, last, |after, before, first, last| async move { - super::load_connection(ctx, Database::issues, after, before, first, last) + api::load_connection(ctx, Database::issues, after, before, first, last) }, ) .await @@ -240,7 +241,7 @@ impl IssueQuery { #[cfg(test)] mod tests { - use crate::{github::GitHubIssue, graphql::TestSchema}; + use crate::{api::TestSchema, outbound::GitHubIssue}; fn create_issues(n: usize) -> Vec { (1..=n) diff --git a/src/graphql/issue_stat.rs b/src/api/issue_stat.rs similarity index 98% rename from src/graphql/issue_stat.rs rename to src/api/issue_stat.rs index 7aa6dc5..8b800d1 100644 --- a/src/graphql/issue_stat.rs +++ b/src/api/issue_stat.rs @@ -1,9 +1,9 @@ use async_graphql::{Context, InputObject, Object, Result, SimpleObject}; use crate::{ + api::{issue::Issue, DateTimeUtc}, database::Iter, - github::issues::IssueState, - graphql::{issue::Issue, DateTimeUtc}, + outbound::issues::IssueState, Database, }; @@ -80,7 +80,7 @@ impl IssueStatQuery { mod tests { use jiff::Timestamp; - use crate::{github::GitHubIssue, graphql::TestSchema}; + use crate::{api::TestSchema, outbound::GitHubIssue}; fn create_issues(n: usize) -> Vec { (0..n) diff --git a/src/graphql/pull_request.rs b/src/api/pull_request.rs similarity index 95% rename from src/graphql/pull_request.rs rename to src/api/pull_request.rs index f5ae2f1..ecbda2f 100644 --- a/src/graphql/pull_request.rs +++ b/src/api/pull_request.rs @@ -6,7 +6,10 @@ use async_graphql::{ Context, Object, Result, SimpleObject, }; -use crate::database::{self, Database, TryFromKeyValue}; +use crate::{ + api, + database::{self, Database, TryFromKeyValue}, +}; #[derive(SimpleObject)] pub(crate) struct PullRequest { @@ -61,7 +64,7 @@ impl PullRequestQuery { first, last, |after, before, first, last| async move { - super::load_connection(ctx, Database::pull_requests, after, before, first, last) + api::load_connection(ctx, Database::pull_requests, after, before, first, last) }, ) .await @@ -70,7 +73,7 @@ impl PullRequestQuery { #[cfg(test)] mod tests { - use crate::{github::GitHubPullRequests, graphql::TestSchema}; + use crate::{api::TestSchema, outbound::GitHubPullRequests}; #[tokio::test] async fn pull_requests_empty() { diff --git a/src/database.rs b/src/database.rs index f05c76e..408b2d8 100644 --- a/src/database.rs +++ b/src/database.rs @@ -10,8 +10,8 @@ pub mod discussion; pub(crate) use discussion::DiscussionDbSchema; use crate::{ - github::{GitHubIssue, GitHubPullRequests}, - graphql::{issue::Issue, pull_request::PullRequest}, + api::{issue::Issue, pull_request::PullRequest}, + outbound::{GitHubIssue, GitHubPullRequests}, }; const ISSUE_TREE_NAME: &str = "issues"; diff --git a/src/database/discussion.rs b/src/database/discussion.rs index b68b1a0..8b25b5e 100644 --- a/src/database/discussion.rs +++ b/src/database/discussion.rs @@ -4,7 +4,8 @@ use anyhow::Result; use serde::{Deserialize, Serialize}; use super::{Database, Iter}; -use crate::github::discussions::{ +use crate::api::Discussion; +use crate::outbound::discussions::{ DiscussionsRepositoryDiscussionsNodes, DiscussionsRepositoryDiscussionsNodesAnswer, DiscussionsRepositoryDiscussionsNodesAnswerAuthor, DiscussionsRepositoryDiscussionsNodesAnswerReplies, @@ -18,7 +19,6 @@ use crate::github::discussions::{ DiscussionsRepositoryDiscussionsNodesLabels, DiscussionsRepositoryDiscussionsNodesReactions, ReactionContent, }; -use crate::graphql::Discussion; #[derive(Debug, Serialize, Deserialize)] pub struct DiscussionDbSchema { diff --git a/src/main.rs b/src/main.rs index 651c9ff..dcb3a91 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,8 @@ +mod api; mod checkout; mod database; -mod github; mod google; -mod graphql; +mod outbound; mod settings; mod web; @@ -39,7 +39,7 @@ async fn main() -> Result<()> { // Fetches issues and pull requests from GitHub every hour, and stores them // in the database. - task::spawn(github::fetch_periodically( + task::spawn(outbound::fetch_periodically( Arc::clone(&repositories), settings.certification.token, time::Duration::from_secs(ONE_HOUR), @@ -53,7 +53,7 @@ async fn main() -> Result<()> { settings.certification.ssh, )); - let schema = graphql::schema(database); + let schema = api::schema(database); web::serve(schema, settings.web.address, &args.key, &args.cert).await; Ok(()) diff --git a/src/github.rs b/src/outbound.rs similarity index 98% rename from src/github.rs rename to src/outbound.rs index 19234c0..a243343 100644 --- a/src/github.rs +++ b/src/outbound.rs @@ -10,7 +10,7 @@ use tracing::error; use crate::{ database::Database, - github::{ + outbound::{ issues::{ IssueState, IssuesRepositoryIssuesNodesAuthor::User as IssueAuthor, IssuesRepositoryIssuesNodesClosedByPullRequestsReferencesEdgesNodeAuthor::User as PullRequestRefAuthor, @@ -41,23 +41,23 @@ type URI = String; #[derive(GraphQLQuery)] #[graphql( - schema_path = "src/github/schema.graphql", - query_path = "src/github/issues.graphql", + schema_path = "src/outbound/graphql/schema.graphql", + query_path = "src/outbound/graphql/issues.graphql", response_derives = "Debug, Clone" )] pub(crate) struct Issues; #[derive(GraphQLQuery)] #[graphql( - schema_path = "src/github/schema.graphql", - query_path = "src/github/pull_requests.graphql" + schema_path = "src/outbound/graphql/schema.graphql", + query_path = "src/outbound/graphql/pull_requests.graphql" )] struct PullRequests; #[derive(GraphQLQuery)] #[graphql( - schema_path = "src/github/schema.graphql", - query_path = "src/github/discussions.graphql", + schema_path = "src/outbound/graphql/schema.graphql", + query_path = "src/outbound/graphql/discussions.graphql", response_derives = "Debug" )] pub(crate) struct Discussions; diff --git a/src/github/discussions.graphql b/src/outbound/graphql/discussions.graphql similarity index 100% rename from src/github/discussions.graphql rename to src/outbound/graphql/discussions.graphql diff --git a/src/github/issues.graphql b/src/outbound/graphql/issues.graphql similarity index 100% rename from src/github/issues.graphql rename to src/outbound/graphql/issues.graphql diff --git a/src/github/pull_requests.graphql b/src/outbound/graphql/pull_requests.graphql similarity index 100% rename from src/github/pull_requests.graphql rename to src/outbound/graphql/pull_requests.graphql diff --git a/src/github/schema.graphql b/src/outbound/graphql/schema.graphql similarity index 100% rename from src/github/schema.graphql rename to src/outbound/graphql/schema.graphql diff --git a/src/web.rs b/src/web.rs index b9209ef..48c93fe 100644 --- a/src/web.rs +++ b/src/web.rs @@ -3,7 +3,7 @@ use std::{convert::Infallible, net::SocketAddr, path::Path}; use async_graphql::http::{playground_source, GraphQLPlaygroundConfig}; use warp::{http::Response as HttpResponse, Filter}; -use crate::graphql::Schema; +use crate::api::Schema; pub(super) async fn serve(schema: Schema, socketaddr: SocketAddr, key: &Path, cert: &Path) { let filter = async_graphql_warp::graphql(schema).and_then(