Skip to content

Commit

Permalink
add abbreviation graphql
Browse files Browse the repository at this point in the history
  • Loading branch information
aimee-mcneil-melville committed Feb 2, 2025
1 parent 1aa56ef commit fd0c004
Show file tree
Hide file tree
Showing 7 changed files with 107 additions and 1 deletion.
12 changes: 11 additions & 1 deletion server/graphql/general/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ pub mod types;
pub use self::queries::sync_status::*;
use self::queries::*;

use abbreviation::abbreviations;
use diagnosis::diagnoses_active;
use graphql_core::pagination::PaginationInput;
use service::sync::CentralServerConfig;

use crate::store_preference::store_preferences;
use graphql_types::types::{
CurrenciesResponse, CurrencyFilterInput, CurrencySortInput, DiagnosisNode,
AbbreviationNode, CurrenciesResponse, CurrencyFilterInput, CurrencySortInput, DiagnosisNode,
MasterListFilterInput, StorePreferenceNode,
};
use mutations::{
Expand All @@ -35,6 +36,7 @@ use mutations::{
update_user,
};
use queries::{
abbreviation::AbbreviationFilterInput,
currency::currencies,
display_settings::{display_settings, DisplaySettingsHash, DisplaySettingsNode},
initialisation_status::{initialisation_status, InitialisationStatusNode},
Expand Down Expand Up @@ -426,6 +428,14 @@ impl GeneralQueries {
pub async fn diagnoses_active(&self, ctx: &Context<'_>) -> Result<Vec<DiagnosisNode>> {
diagnoses_active(ctx)
}

pub async fn abbreviations(
&self,
ctx: &Context<'_>,
filter: AbbreviationFilterInput,
) -> Result<Vec<AbbreviationNode>> {
abbreviations(ctx, filter)
}
}

#[derive(Default, Clone)]
Expand Down
42 changes: 42 additions & 0 deletions server/graphql/general/src/queries/abbreviation.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use async_graphql::*;
use graphql_core::generic_filters::{EqualFilterInput, StringFilterInput};
use graphql_core::standard_graphql_error::validate_auth;
use graphql_core::ContextExt;
use graphql_types::types::AbbreviationNode;
use repository::abbreviation::AbbreviationFilter;
use repository::{EqualFilter, StringFilter};
use service::abbreviation::get_all_abbreviations;
use service::auth::{Resource, ResourceAccessRequest};

#[derive(InputObject, Clone)]
pub struct AbbreviationFilterInput {
pub id: Option<EqualFilterInput<String>>,
pub text: Option<StringFilterInput>,
}

impl AbbreviationFilterInput {
pub fn to_domain(self) -> AbbreviationFilter {
AbbreviationFilter {
id: self.id.map(EqualFilter::from),
text: self.text.map(StringFilter::from),
}
}
}

pub fn abbreviations(
ctx: &Context<'_>,
filter: AbbreviationFilterInput,
) -> Result<Vec<AbbreviationNode>> {
validate_auth(
ctx,
&ResourceAccessRequest {
resource: Resource::NoPermissionRequired,
store_id: None,
},
)?;

let connection_manager = ctx.get_connection_manager();
let rows = get_all_abbreviations(connection_manager, filter.to_domain())?;

Ok(AbbreviationNode::from_vec(rows))
}
1 change: 1 addition & 0 deletions server/graphql/general/src/queries/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ pub use self::generate_supplier_return_lines::*;
pub mod return_reason;
pub use self::return_reason::*;

pub mod abbreviation;
pub mod diagnosis;

#[cfg(test)]
Expand Down
34 changes: 34 additions & 0 deletions server/graphql/types/src/types/abbreviation.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
use async_graphql::*;
use repository::abbreviation::Abbreviation;

pub struct AbbreviationNode {
pub abbreviation: Abbreviation,
}

#[Object]
impl AbbreviationNode {
pub async fn id(&self) -> &String {
&self.abbreviation.id
}

pub async fn text(&self) -> &String {
&self.abbreviation.text
}

pub async fn expansion(&self) -> &String {
&self.abbreviation.expansion
}
}

impl AbbreviationNode {
pub fn from_domain(row: Abbreviation) -> AbbreviationNode {
AbbreviationNode { abbreviation: row }
}

pub fn from_vec(abbreviations: Vec<Abbreviation>) -> Vec<AbbreviationNode> {
abbreviations
.into_iter()
.map(AbbreviationNode::from_domain)
.collect()
}
}
2 changes: 2 additions & 0 deletions server/graphql/types/src/types/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ pub use self::reason_option::*;
pub mod cold_storage_type;
pub use self::cold_storage_type::*;

pub mod abbreviation;
pub use self::abbreviation::*;
mod requisition_item_information;

use async_graphql::*;
Expand Down
16 changes: 16 additions & 0 deletions server/service/src/abbreviation.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
use repository::{
abbreviation::{Abbreviation, AbbreviationFilter, AbbreviationRepository},
RepositoryError, StorageConnectionManager,
};

pub fn get_all_abbreviations(
connection_manager: &StorageConnectionManager,
filter: AbbreviationFilter,
) -> Result<Vec<Abbreviation>, RepositoryError> {
let connection = connection_manager.connection()?;
let repository = AbbreviationRepository::new(&connection);

let rows = repository.query_by_filter(filter.clone())?;

Ok(rows)
}
1 change: 1 addition & 0 deletions server/service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ use std::fs::File;
use std::io::BufReader;
use thiserror::Error;

pub mod abbreviation;
pub mod activity_log;
pub mod apis;
pub mod app_data;
Expand Down

0 comments on commit fd0c004

Please sign in to comment.