@acknow-srl/graphql

Allows you to interface with a GraphQL server and execute queries.

Usage no npm install needed!

<script type="module">
  import acknowSrlGraphql from 'https://cdn.skypack.dev/@acknow-srl/graphql';
</script>

README

GrapQL

Allows you to interface with a GraphQL server and execute queries.

GraphQLModule (Module)

Methods

  • forRoot(config: GQLConfig): void: configures the connection to the GraphQL server.

GQLConfig (Interface)

  • server (string): GraphQL server URL.

GQL (Service)

It is provided in root, so it is available to the whole app.

Methods

  • query(query: string, vars: object | null = null): Observable<any>: sends a query (with optional parameters, passed as a plain object) to the GraphQL server. Returns an Observable with the GraphQL server response.

  • trim(value: string | null | undefined): string: returns a string without leading and trailing spaces. This method is safe for string, null and undefined values. If null or undefined is passed, this method returns an empty string.

Example

/**
 * 1. Import the module and all classes you need in your main module (usually app.module.ts).
 */

import { AckGraphQLModule, GQLConfig } from '@acknow-srl/graphql';

/**
 * 2. Add the module to your app imports and configure it.
 */

const conf: GQLConfig = {
    server: 'http://my-graphql-server-url'
};

@NgModule({
  declarations: [
    AppComponent
    ...
  ],
  imports: [
    ...
    AckGraphQLModule.forRoot(conf),
    ...
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}

/**
 * 3. Implement GQL service in your services or components.
 */

import { Injectable } from '@angular/core';

import { throwError } from 'rxjs';

import { map, catchError } from 'rxjs/operators';

import { GQL } from '@acknow-srl/graphql';

@Injectable({
    providedIn: 'root'
})
export class MyService {

    constructor(private _gql: GQL) {
    }

    // Gets an entry from the database by ID.

    getEntry(id: number) {

            // Sets parameters.

            let vars = {
                id: id 
            };

            // Sets query.

            let q = `query Entry($id: Int!) {
                    allEntries(condition: {id: $id}) {
                            nodes {
                                    id
                                    field1
                                    field2
                                    field3
                            }
                    }
            }`;

            return this._gql.query(q, vars).pipe(map(res => {
                    return (res && res.data)? res.data.allEntries.nodes[0] : null;
            }),
            catchError(err => {
                    throwError(err);
            }));
    }

}