Skip to content

Commit

Permalink
* Added query-endpoint equivalents for (almost) all of the subscripti…
Browse files Browse the repository at this point in the history
…on-endpoints.
  • Loading branch information
Venryx committed Feb 27, 2024
1 parent 9485b4c commit 4e08c00
Show file tree
Hide file tree
Showing 44 changed files with 621 additions and 365 deletions.
6 changes: 2 additions & 4 deletions Packages/app-server/src/db/_general.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,8 @@ impl Ping_Result {
async fn refreshPage(&self) -> &bool { &self.refreshPage }
}

#[derive(Default)]
pub struct SubscriptionShard_General;
#[Subscription]
impl SubscriptionShard_General {
#[derive(Default)] pub struct SubscriptionShard_General;
#[Subscription] impl SubscriptionShard_General {
#[graphql(name = "_ping")]
async fn _ping(&self, _ctx: &async_graphql::Context<'_>) -> impl Stream<Item = Ping_Result> {
let pong = "pong".to_owned();
Expand Down
27 changes: 18 additions & 9 deletions Packages/app-server/src/db/access_policies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use rust_shared::indexmap::IndexMap;
use rust_shared::serde_json::json;
use rust_shared::db_constants::SYSTEM_USER_ID;
use rust_shared::utils::type_aliases::JSONValue;
use rust_shared::{async_graphql, SubError, serde, serde_json};
use rust_shared::{async_graphql, SubError, serde, serde_json, GQLError};
use rust_shared::async_graphql::{Context, Object, Schema, Subscription, ID, OutputType, SimpleObject, InputObject};
use futures_util::{Stream, stream, TryFutureExt};
use rust_shared::rust_macros::wrap_slow_macros;
Expand All @@ -14,7 +14,8 @@ use rust_shared::tokio_postgres::{Client};
use rust_shared::tokio_postgres::Row;

use crate::utils::db::accessors::{get_db_entry, get_db_entries, AccessorContext};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}, filter::{QueryFilter, FilterInput}}};
use crate::utils::db::generic_handlers::queries::{handle_generic_gql_doc_query, handle_generic_gql_collection_query};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}, filter::{QueryFilter, FilterInput}}};

use super::access_policies_::_access_policy::AccessPolicy;
use super::commands::_command::CanOmit;
Expand Down Expand Up @@ -48,15 +49,23 @@ impl GQLSet<AccessPolicy> for GQLSet_AccessPolicy {
fn nodes(&self) -> &Vec<AccessPolicy> { &self.nodes }
}

#[derive(Default)]
pub struct SubscriptionShard_AccessPolicy;
#[Subscription]
impl SubscriptionShard_AccessPolicy {
async fn accessPolicies<'a>(&self, ctx: &'a Context<'_>, _id: Option<String>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_AccessPolicy, SubError>> + 'a {
handle_generic_gql_collection_request::<AccessPolicy, GQLSet_AccessPolicy>(ctx, "accessPolicies", filter).await
#[derive(Default)] pub struct QueryShard_AccessPolicy;
#[Object] impl QueryShard_AccessPolicy {
async fn accessPolicies(&self, ctx: &Context<'_>, filter: Option<FilterInput>) -> Result<Vec<AccessPolicy>, GQLError> {
handle_generic_gql_collection_query(ctx, "accessPolicies", filter).await
}
async fn accessPolicy(&self, ctx: &Context<'_>, id: String) -> Result<Option<AccessPolicy>, GQLError> {
handle_generic_gql_doc_query(ctx, "accessPolicies", id).await
}
}

#[derive(Default)] pub struct SubscriptionShard_AccessPolicy;
#[Subscription] impl SubscriptionShard_AccessPolicy {
async fn accessPolicies<'a>(&self, ctx: &'a Context<'_>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_AccessPolicy, SubError>> + 'a {
handle_generic_gql_collection_subscription::<AccessPolicy, GQLSet_AccessPolicy>(ctx, "accessPolicies", filter).await
}
async fn accessPolicy<'a>(&self, ctx: &'a Context<'_>, id: String) -> impl Stream<Item = Result<Option<AccessPolicy>, SubError>> + 'a {
handle_generic_gql_doc_request::<AccessPolicy>(ctx, "accessPolicies", id).await
handle_generic_gql_doc_subscription::<AccessPolicy>(ctx, "accessPolicies", id).await
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ use rust_shared::tokio_postgres::Row;

use crate::utils::db::accessors::{get_db_entry, get_db_entries, AccessorContext};
use crate::utils::db::agql_ext::gql_utils::IndexMapAGQL;
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}, filter::{QueryFilter, FilterInput}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}, filter::{QueryFilter, FilterInput}}};

use super::super::commands::_command::CanOmit;
use super::_permission_set::{PermissionSet, PermissionSetForType, APTable, APAction};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use rust_shared::tokio_postgres::{Client};
use rust_shared::tokio_postgres::Row;

use crate::utils::db::accessors::{get_db_entry, get_db_entries, AccessorContext};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}, filter::{QueryFilter, FilterInput}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}, filter::{QueryFilter, FilterInput}}};

use super::super::commands::_command::CanOmit;

Expand Down
27 changes: 18 additions & 9 deletions Packages/app-server/src/db/command_runs.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
use rust_shared::{SubError, serde, serde_json, async_graphql};
use rust_shared::{SubError, serde, serde_json, async_graphql, GQLError};
use rust_shared::async_graphql::{Context, Object, Schema, Subscription, ID, OutputType, SimpleObject};
use futures_util::{Stream, stream, TryFutureExt};
use rust_shared::rust_macros::{wrap_slow_macros, wrap_serde_macros, Deserialize_Stub, Serialize_Stub};
use rust_shared::serde::{Serialize, Deserialize};
use rust_shared::tokio_postgres::{Row, Client};

use crate::utils::db::pg_row_to_json::postgres_row_to_struct;
use crate::utils::db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}, filter::{QueryFilter, FilterInput}};
use crate::utils::db::generic_handlers::queries::{handle_generic_gql_doc_query, handle_generic_gql_collection_query};
use crate::utils::db::{generic_handlers::subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}, filter::{QueryFilter, FilterInput}};

use super::_shared::access_policy_target::AccessPolicyTarget;

Expand Down Expand Up @@ -72,15 +73,23 @@ impl GQLSet<CommandRun> for GQLSet_CommandRun {
fn nodes(&self) -> &Vec<CommandRun> { &self.nodes }
}

#[derive(Default)]
pub struct SubscriptionShard_CommandRun;
#[Subscription]
impl SubscriptionShard_CommandRun {
async fn commandRuns<'a>(&self, ctx: &'a Context<'_>, _id: Option<String>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_CommandRun, SubError>> + 'a {
handle_generic_gql_collection_request::<CommandRun, GQLSet_CommandRun>(ctx, "commandRuns", filter).await
#[derive(Default)] pub struct QueryShard_CommandRun;
#[Object] impl QueryShard_CommandRun {
async fn commandRuns(&self, ctx: &Context<'_>, filter: Option<FilterInput>) -> Result<Vec<CommandRun>, GQLError> {
handle_generic_gql_collection_query(ctx, "commandRuns", filter).await
}
async fn commandRun(&self, ctx: &Context<'_>, id: String) -> Result<Option<CommandRun>, GQLError> {
handle_generic_gql_doc_query(ctx, "commandRuns", id).await
}
}

#[derive(Default)] pub struct SubscriptionShard_CommandRun;
#[Subscription] impl SubscriptionShard_CommandRun {
async fn commandRuns<'a>(&self, ctx: &'a Context<'_>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_CommandRun, SubError>> + 'a {
handle_generic_gql_collection_subscription::<CommandRun, GQLSet_CommandRun>(ctx, "commandRuns", filter).await
}
async fn commandRun<'a>(&self, ctx: &'a Context<'_>, id: String) -> impl Stream<Item = Result<Option<CommandRun>, SubError>> + 'a {
handle_generic_gql_doc_request::<CommandRun>(ctx, "commandRuns", id).await
handle_generic_gql_doc_subscription::<CommandRun>(ctx, "commandRuns", id).await
}
}

Expand Down
2 changes: 1 addition & 1 deletion Packages/app-server/src/db/commands/clone_subtree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ use crate::utils::db::sql_fragment::SQLFragment;
use crate::utils::db::transactions::{start_read_transaction, start_write_transaction};
use rust_shared::utils::db::uuid::new_uuid_v4_as_b64;
use crate::utils::general::data_anchor::{DataAnchorFor1, DataAnchor};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}}};
use crate::utils::type_aliases::{PGClientObject};

use super::_command::{set_db_entry_by_id, upsert_db_entry_by_id_for_struct};
Expand Down
6 changes: 2 additions & 4 deletions Packages/app-server/src/db/commands/run_command_batch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,8 @@ wrap_slow_macros!{
// todo: probably add another version of run-command-batch that works in "streaming mode", ie. using a graphql "subscription" to let the caller know how the batch's execution is progressing
}*/

#[derive(Default)]
pub struct SubscriptionShard_RunCommandBatch;
#[Subscription]
impl SubscriptionShard_RunCommandBatch {
#[derive(Default)] pub struct SubscriptionShard_RunCommandBatch;
#[Subscription] impl SubscriptionShard_RunCommandBatch {
async fn run_command_batch<'a>(&self, gql_ctx: &'a async_graphql::Context<'a>, input: RunCommandBatchInput) -> impl Stream<Item = Result<RunCommandBatchResult, SubError>> + 'a {
let base_stream = async_stream::stream! {
let mut anchor = DataAnchorFor1::empty(); // holds pg-client
Expand Down
27 changes: 18 additions & 9 deletions Packages/app-server/src/db/feedback_proposals.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
use rust_shared::{serde, async_graphql, async_graphql::{Context, Object, Schema, Subscription, ID, OutputType, SimpleObject}};
use rust_shared::{serde, async_graphql, async_graphql::{Context, Object, Schema, Subscription, ID, OutputType, SimpleObject}, GQLError};
use futures_util::{Stream, stream, TryFutureExt};
use rust_shared::rust_macros::wrap_slow_macros;
use rust_shared::SubError;
use rust_shared::serde::{Serialize, Deserialize};
use rust_shared::tokio_postgres::{Row, Client};

use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}, filter::FilterInput, pg_row_to_json::postgres_row_to_struct}};
use crate::utils::db::generic_handlers::queries::{handle_generic_gql_doc_query, handle_generic_gql_collection_query};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}, filter::FilterInput, pg_row_to_json::postgres_row_to_struct}};

//wrap_slow_macros!{

Expand All @@ -31,17 +32,25 @@ impl GQLSet<Proposal> for GQLSet_Proposal {
fn nodes(&self) -> &Vec<Proposal> { &self.nodes }
}

#[derive(Default)]
pub struct SubscriptionShard_Proposal;
#[Subscription]
impl SubscriptionShard_Proposal {
#[derive(Default)] pub struct QueryShard_Proposal;
#[Object] impl QueryShard_Proposal {
async fn proposals(&self, ctx: &Context<'_>, filter: Option<FilterInput>) -> Result<Vec<Proposal>, GQLError> {
handle_generic_gql_collection_query(ctx, "feedback_proposals", filter).await
}
async fn proposal(&self, ctx: &Context<'_>, id: String) -> Result<Option<Proposal>, GQLError> {
handle_generic_gql_doc_query(ctx, "feedback_proposals", id).await
}
}

#[derive(Default)] pub struct SubscriptionShard_Proposal;
#[Subscription] impl SubscriptionShard_Proposal {
#[graphql(name = "feedback_proposals")]
async fn feedback_proposals<'a>(&self, ctx: &'a Context<'_>, _id: Option<String>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_Proposal, SubError>> + 'a {
handle_generic_gql_collection_request::<Proposal, GQLSet_Proposal>(ctx, "feedback_proposals", filter).await
async fn feedback_proposals<'a>(&self, ctx: &'a Context<'_>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_Proposal, SubError>> + 'a {
handle_generic_gql_collection_subscription::<Proposal, GQLSet_Proposal>(ctx, "feedback_proposals", filter).await
}
#[graphql(name = "feedback_proposal")]
async fn feedback_proposal<'a>(&self, ctx: &'a Context<'_>, id: String) -> impl Stream<Item = Result<Option<Proposal>, SubError>> + 'a {
handle_generic_gql_doc_request::<Proposal>(ctx, "feedback_proposals", id).await
handle_generic_gql_doc_subscription::<Proposal>(ctx, "feedback_proposals", id).await
}
}

Expand Down
27 changes: 18 additions & 9 deletions Packages/app-server/src/db/feedback_user_infos.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use rust_shared::SubError;
use rust_shared::{SubError, GQLError};
use rust_shared::async_graphql;
use rust_shared::async_graphql::{Context, Object, Schema, Subscription, ID, OutputType, SimpleObject};
use futures_util::{Stream, stream, TryFutureExt};
Expand All @@ -7,7 +7,8 @@ use rust_shared::serde::{Serialize, Deserialize};
use rust_shared::tokio_postgres::{Row, Client};
use rust_shared::serde;

use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}, filter::FilterInput}};
use crate::utils::db::generic_handlers::queries::{handle_generic_gql_doc_query, handle_generic_gql_collection_query};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}, filter::FilterInput}};

wrap_slow_macros!{

Expand Down Expand Up @@ -38,17 +39,25 @@ impl GQLSet<UserInfo> for GQLSet_UserInfo {
fn nodes(&self) -> &Vec<UserInfo> { &self.nodes }
}

#[derive(Default)]
pub struct SubscriptionShard_UserInfo;
#[Subscription]
impl SubscriptionShard_UserInfo {
#[derive(Default)] pub struct QueryShard_UserInfo;
#[Object] impl QueryShard_UserInfo {
async fn userInfos(&self, ctx: &Context<'_>, filter: Option<FilterInput>) -> Result<Vec<UserInfo>, GQLError> {
handle_generic_gql_collection_query(ctx, "feedback_userInfos", filter).await
}
async fn userInfo(&self, ctx: &Context<'_>, id: String) -> Result<Option<UserInfo>, GQLError> {
handle_generic_gql_doc_query(ctx, "feedback_userInfos", id).await
}
}

#[derive(Default)] pub struct SubscriptionShard_UserInfo;
#[Subscription] impl SubscriptionShard_UserInfo {
#[graphql(name = "feedback_userInfos")]
async fn feedback_userInfos<'a>(&self, ctx: &'a Context<'_>, _id: Option<String>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_UserInfo, SubError>> + 'a {
handle_generic_gql_collection_request::<UserInfo, GQLSet_UserInfo>(ctx, "feedback_userInfos", filter).await
async fn feedback_userInfos<'a>(&self, ctx: &'a Context<'_>, filter: Option<FilterInput>) -> impl Stream<Item = Result<GQLSet_UserInfo, SubError>> + 'a {
handle_generic_gql_collection_subscription::<UserInfo, GQLSet_UserInfo>(ctx, "feedback_userInfos", filter).await
}
#[graphql(name = "feedback_userInfo")]
async fn feedback_userInfo<'a>(&self, ctx: &'a Context<'_>, id: String) -> impl Stream<Item = Result<Option<UserInfo>, SubError>> + 'a {
handle_generic_gql_doc_request::<UserInfo>(ctx, "feedback_userInfos", id).await
handle_generic_gql_doc_subscription::<UserInfo>(ctx, "feedback_userInfos", id).await
}
}

Expand Down
2 changes: 1 addition & 1 deletion Packages/app-server/src/db/general/search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ use crate::utils::db::pg_row_to_json::postgres_row_to_struct;
use crate::utils::db::sql_fragment::SQLFragment;
use crate::utils::db::transactions::start_read_transaction;
use crate::utils::general::data_anchor::{DataAnchorFor1, DataAnchor};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}}};
use crate::utils::type_aliases::{PGClientObject};
use crate::utils::db::accessors::{AccessorContext};

Expand Down
6 changes: 2 additions & 4 deletions Packages/app-server/src/db/general/sign_in.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,8 @@ impl SignInStartResult {
async fn resultJWT(&self) -> Option<String> { self.result_jwt.clone() }
}

#[derive(Default)]
pub struct SubscriptionShard_SignIn;
#[Subscription]
impl SubscriptionShard_SignIn {
#[derive(Default)] pub struct SubscriptionShard_SignIn;
#[Subscription] impl SubscriptionShard_SignIn {
/// Begin sign-in flow, resulting in a JWT string being returned. (to then be passed in an `authorization` header for queries/mutations, or to the `signInAttach` endpoint for subscriptions)
/// * `provider` - The authentication flow/website/sign-in-service that will be used. [string, options: "google", "dev"]
/// * `jwtDuration` - How long until the generated JWT should expire, in seconds. [i64]
Expand Down
2 changes: 1 addition & 1 deletion Packages/app-server/src/db/general/subtree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use crate::utils::db::pg_row_to_json::postgres_row_to_struct;
use crate::utils::db::sql_fragment::SQLFragment;
use crate::utils::db::transactions::start_read_transaction;
use crate::utils::general::data_anchor::{DataAnchorFor1, DataAnchor};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}}};
use crate::utils::type_aliases::{PGClientObject};
use crate::utils::db::accessors::{AccessorContext};

Expand Down
2 changes: 1 addition & 1 deletion Packages/app-server/src/db/general/subtree_old.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use crate::utils::db::filter::{QueryFilter, FilterInput};
use crate::utils::db::sql_fragment::SQLFragment;
use crate::utils::db::transactions::start_read_transaction;
use crate::utils::general::data_anchor::{DataAnchorFor1, DataAnchor};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}}};
use crate::utils::type_aliases::{PGClientObject};
use crate::utils::db::accessors::{AccessorContext};

Expand Down
2 changes: 1 addition & 1 deletion Packages/app-server/src/db/general/trusted_operators.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ use crate::utils::db::pg_row_to_json::postgres_row_to_struct;
use crate::utils::db::sql_fragment::SQLFragment;
use crate::utils::db::transactions::start_read_transaction;
use crate::utils::general::data_anchor::{DataAnchorFor1, DataAnchor};
use crate::utils::{db::{handlers::{handle_generic_gql_collection_request, handle_generic_gql_doc_request, GQLSet}}};
use crate::utils::{db::{generic_handlers::{subscriptions::{handle_generic_gql_collection_subscription, handle_generic_gql_doc_subscription, GQLSet}}}};
use crate::utils::type_aliases::{PGClientObject};
use crate::utils::db::accessors::{AccessorContext};

Expand Down
Loading

0 comments on commit 4e08c00

Please sign in to comment.